Biorąc pod uwagę, że ZFS jest opisywany bardziej jako baza danych niż system plików, uzasadnione wydaje się oczekiwanie, że będzie on zachowywał się podobnie do systemu zarządzania wersjami, inteligentnie zarządzając modyfikacjami plików, przeniesieniami i nazwami. Pytania dotyczą w szczególności migawek, jednak migawki mają wiele wspólnego z klonami i
- Kiedy plik jest modyfikowany w ZFS po migawce, czy migawka będzie miała ten sam rozmiar i tylko różnice, czy cały plik?
- Kiedy plik zostanie przeniesiony do ZFS po migawce, czy migawka pozostanie zasadniczo zerowa?
- Czy po zmianie migawki nazwa pliku w ZFS zostanie zmieniona na zero?
Czy po utworzeniu migawki w pliku, w której znajduje się dowiązanie do pliku, pozostanie zasadniczo pusta?
Sugeruje się, że BTRFS jest zaprojektowany tak, aby robić w zasadzie te same rzeczy, co ZFS, czy zatem można by oczekiwać takich samych zachowań w tych warunkach?
Kiedy komputer z systemem Windows uzyskuje dostęp do udziału ZFS zdalnie przez SAMBA, czy powyższe zachowanie jest prawdziwe, czy też SAMBA stanowi podzbiór standardowych instrukcji dysku, tzn. Ruch staje się kopią + usunięciem?
Czy możliwe jest ogólne udzielenie odpowiedzi na powyższe pytania, czy też wszystkie odpowiedzi dotyczą konkretnego wdrożenia?
Zgodnie z prośbą komentatora następujący test jest wykonywany na opisanych operacjach:
Informacje o systemie:
- Jądro CentOS 7 3.10.0
- ZFS v0.6.5.9-1
.
`zpool list` `zfs list`
POOL SIZE ALLOC FREE USED AVAIL REFER
Utwórz pulę: zpool create -m /test/mnt FILE-TEST /test/1.img /test/2.img
FILE-TEST 224M 80.5K 224M 73K 192M 19K
Migawka: zfs snapshot FILE-TEST@1
FILE-TEST 224M 122K 224M 73K 192M 19K
FILE-TEST@1 0 - 19K
Utwórz plik: echo ‘test’ > /test/mnt/test.txt
FILE-TEST 224M 132K 224M 95K 192M 21K
FILE-TEST@1 17K - 19K
Zwiększ rozmiar pliku: `head -c 128K /test/mnt/test.txt
FILE-TEST 224M 678K 223M 490K 192M 148K
FILE-TEST@1 17K - 19K
Migawka: zfs snapshot FILE-TEST@2
FILE-TEST 224M 267K 224M 239K 192M 148K
FILE-TEST@1 17K - 19K
FILE-TEST@2 0 - 48K
Edytuj plik, zmień ostatnie 4 bajty.
FILE-TEST 224M 1.07M 223M 386K 192M 148K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
Migawka: zfs snapshot FILE-TEST@3
FILE-TEST 224M 548K 223M 388K 192M 148K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 0 - 148K
Zmień nazwę pliku mv test.txt test2.txt
FILE-TEST 224M 552K 223M 404K 192M 150K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
Migawka: zfs snapshot FILE-TEST@4
FILE-TEST 224M 1.06M 223M 645K 191M 150K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
FILE-TEST@4 0 - 150K
Nowy folder: mkdir /test/mnt/subdir
FILE-TEST 224M 716K 223M 420K 192M 151K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
FILE-TEST@4 9K - 150K
Migawka: zfs snapshot FILE-TEST@5
FILE-TEST 224M 790K 223M 424K 192M 151K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
FILE-TEST@4 9K - 150K
FILE-TEST@5 0 - 151K
Przenieś plik: mv /test/mnt/test2.txt /test/mnt/subdir/
FILE-TEST 224M 584K 223M 444K 192M 151K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
FILE-TEST@4 9K - 150K
FILE-TEST@5 10K - 151K
Migawka: zfs snapshot FILE-TEST@6
FILE-TEST 224M 602K 223M 447K 192M 151K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
FILE-TEST@4 9K - 150K
FILE-TEST@5 10K - 151K
FILE-TEST@6 0 - 151K
Utwórz plik linku twardego: cp -l /test/mnt/subdir/test2.txt /test/mnt/subdir/test3.txt
FILE-TEST 224M 603K 223M 466K 192M 152K
FILE-TEST@1 17K - 19K
FILE-TEST@2 138K - 148K
FILE-TEST@3 10K - 148K
FILE-TEST@4 9K - 150K
FILE-TEST@5 10K - 151K
FILE-TEST@6 12K - 151K
Uwagi z powyższego:
- ROZMIAR i BEZPŁATNIE są bardzo stałe i zgodne z zajmowaną przestrzenią plików
- ALLOC jest losowy
- REFER na migawkach wydaje się być równy ówczesnemu REFER na puli
- W przypadku większości operacji USED na migawkach wynosi około 10 KB, z wyjątkiem zmiany pliku, w której USED jest nieco większy niż cały zmieniony rozmiar pliku.
- UŻYWANY na basenie rośnie w nierównych skokach
- REFER stopniowo rośnie około 1K na operację
- Migawki nieprądowe mają niezmieniony rozmiar