Przyczyny hostowania wirtualnych obrazów dysków w systemie plików BTRFS

14

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?

Andre de Miranda
źródło
Zauważ, że zmniejszona integralność danych byłaby taka sama, jak w przypadku większości innych systemów plików, takich jak ext4 lub xfs, które w ogóle nie przechowują sum kontrolnych i dlatego nie są w stanie wykryć uszkodzenia.
basic6
1
@ basic6 Jestem świadomy. Stąd pytanie.
Andre de Miranda,

Odpowiedzi:

13

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.

Quantumboredom
źródło
Powodem byłoby posiadanie dysku bez tablicy partycji. BTRFS pozwala na osadzenie grub / etc bezpośrednio w nim, XFS / EXT4 / etc nie… Szukałem systemu plików, który pozwala na to jako BW BW na szczycie BTRFS używam do przechowywania maszyny wirtualnej obrazy nie są idealne (używam migawek i btrfs-RAID10 na hoście), a chattr + C wydaje się być moją jedyną opcją poza używaniem tablicy partycji. Chyba użyję tylko tabeli partycji.
Alex
5

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.

Clarus
źródło
5

Korzystając z BTRFS, nawet mimo nodatacowto nadal możesz ręcznie tworzyć migawki danych z CoWzachowaniem, 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 przypadku nodatacowBTRFS wydaje się być lepszym rozwiązaniem niż używanie LVM.

Thorsten Schöning
źródło
3

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.

Erk
źródło