Czytam o BTRFS i ZFS od jakiegoś czasu i choć doceniam zalety CoW podczas hostowania ważnych plików, obecnie zastanawiam się nad następującym dylematem:
Biorąc pod uwagę, że zarówno ZFS, jak i BTRFS wydają się ponosić spadek wydajności podczas hostowania dużych plików podlegających losowym zapisom (np. QCOW2, VDI itp.), Dlaczego ktoś miałby używać BTRFS jako FS z wyboru do hostowania maszyn wirtualnych?
Wiem, że w przypadku BTRFS możesz selektywnie wyłączyć CoW za pomocą chattr lub opcji montażu dodatkowego, zmniejszając degradację narzuconą przez fragmentację i CoW ...
Jednak według Redhat powoduje to również „wyłączenie weryfikacji sumy kontrolnej danych i metadanych, co zmniejsza integralność danych”. (oprócz utraconej kompresji i naturalnie tak pożądanej CoW).
Na tej podstawie pytam: dlaczego ktoś miałby wybierać BTRFS, powiedzmy XFS zamiast LVM zamiast MD RAID?
źródło
Odpowiedzi:
Jeśli głównym przypadkiem użycia jest przechowywanie obrazów maszyn wirtualnych lub baz danych i nie jesteś zainteresowany akceptacją potencjalnych problemów z wydajnością w celu uzyskania zalet integralności danych btrfs, nie mogę wymyślić żadnego powodu, dla którego chciałbyś wybrać btrfs przez xfs lub ext4.
Wyłączenie kopiowania przy zapisie tylko dla katalogu obrazu maszyny wirtualnej (używając chattr + C) jest szczególnie istotne, gdy przechowywanie obrazów maszyny wirtualnej jest tylko jednym z wielu zastosowań systemu plików. Wtedy może być bardzo wygodne wyłączenie po prostu kopiowania przy zapisie dla tego pojedynczego katalogu, zachowując jednocześnie wszystkie zalety btrfs dla reszty systemu plików.
źródło
BTRFS ma inny format dysku, który przewyższa inne systemy plików w niektórych wzorcach zapisu. W szczególności wiele wysiłku włożono w poprawę sposobu zapisywania metadanych na dysku i obsługuje on niektóre zaawansowane funkcje, takie jak sumowanie danych, kompresja i migawki. W przypadku dużych plików poprawa wydajności metadanych nie jest generalnie ważna.
W porównaniu do ZFS, BTRFS jest prostszym rozwiązaniem i jest lepiej obsługiwany w systemie Linux. Główną wadą jest to, że nie skaluje się również (podczas dodawania dużej liczby dysków) i nie ma tego samego zestawu funkcji.
W porównaniu do XFS będzie to rozwiązanie o niższej wydajności. To znaczy, że zapisanie fragmentu danych na dysku zajmie więcej czasu, a maksymalna przepustowość będzie ograniczona. Można to w pewnym stopniu złagodzić, wykonując takie czynności, jak wyłączenie weryfikacji sumy kontrolnej, ale wtedy tracisz podstawową zaletę BTRFS w porównaniu z XFS, która jest ulepszoną informacją o metadanych. Tj. Suma kontrolna i inne księgowanie (co może być lepsze w niektórych sytuacjach).
Jeśli chodzi o obsługę kopiowania przy zapisie (COW), XFS faworyzuje wydajność, a nie tylko COW. Tj. XFS ma bardzo dobre funkcje metadanych i kronikowania pod względem skalowalności i generalnie nie nadpisuje danych plików podczas zapisu, z wyjątkiem tego, że pozwoli na nadpisanie istniejących bloków dysku, jeśli aplikacja specjalnie zażąda nadpisania tych danych . Może to być dobre w przypadku maszyny wirtualnej, ponieważ początkowo alokacja dysku może być ciągła, aw takim przypadku pozostałaby przylegająca przez cały okres użytkowania maszyny wirtualnej.
źródło
Korzystając z BTRFS, nawet mimo
nodatacow
to nadal możesz ręcznie tworzyć migawki danych zCoW
zachowaniem, dzięki czemu jest szybki i nie zajmuje dużo pamięci. Ponadto te migawki są bardziej elastyczne niż używanie LVM, ponieważ nie trzeba rezerwować miejsca pod systemem plików, o którym system plików nie jest świadomy i nie można go użyć, jeśli w ogóle nie jest potrzebny. Podobnie jak w przypadku ZFS, migawki mogą być wysyłane i odbierane przez sieć, co może pomóc w ulepszeniu strategii tworzenia kopii zapasowych. Nawet w przypadkunodatacow
BTRFS wydaje się być lepszym rozwiązaniem niż używanie LVM.źródło
Po pracy z platformami przetwarzania w chmurze zacząłem przyjmować ich pogląd na maszyny wirtualne jako pojemnik na dane i funkcje, w których rzeczywista maszyna wirtualna ma mniejsze znaczenie.
Wolę mieć dobre procesy tworzenia kopii zapasowych i przywracania oraz instalacji i wdrażania na miejscu i martwić się mniej o integralność maszyny wirtualnej, a więcej o wydajność.
Tj. Wybieram JFS / XFS / EXT4 zamiast LVM zamiast MD-Raid, a nie BTRFS. Upewnij się, że nigdy nie przechowuję niczego, co nie ma kopii zapasowej na maszynie wirtualnej przez dłuższy okres czasu ... i mam skrypty i procedury, aby uzyskać nową instalację maszyny wirtualnej w rozsądnym czasie, jeśli coś się stanie.
Ale to bardziej scenariusz tworzenia / eksperymentowania niż cokolwiek innego.
źródło