Mam istniejący system plików BTRFS składający się z jednego dysku 500 GB i właśnie kupiłem dysk 2 TB, aby zwiększyć pojemność mojego serwera domowego i chcę dodać nowy dysk do istniejącego systemu plików. Z tego, co przeczytałem, wygląda na to, że żadna konfiguracja BTRFS nie jest w stanie obsłużyć dysku o różnych rozmiarach bez marnowania różnicy w wielkości między większym a mniejszym dyskiem, ale jestem nowy w BTRFS i mogłem coś przeoczyć, więc jest konfiguracja które pozwalają mi łączyć dwa dyski w systemie plików bez marnowania miejsca?
14
Odpowiedzi:
Btrfs mogą używać różnych poziomów nalotów dla danych i metadanych:
domyślnie (nawet dla jednego dysku) jest raid1 dla metadanych (katalogów itp.) i raid0 dla danych.
Jeśli tego nie zmieniłeś, prawdopodobnie nie będziesz miał problemu z dodaniem drugiej płyty i uruchomieniem ponownego równoważenia. ponieważ tylko metadane zostaną skopiowane na oba dyski (możesz zobaczyć swój rozmiar metadanych za pomocą
btrfs filesystem df /
). Pamiętaj tylko, że jeśli któryś z dysków ulegnie awarii, utracisz dane.ponieważ dysk o pojemności 2 TB jest znacznie większy niż 500 g, prawdopodobnie dałoby to większe szanse, jeśli dodasz nowy, a następnie usuniesz stary (prawdopodobieństwo awarii jednego konkretnego dysku jest znacznie mniejsze niż prawdopodobieństwo jednego z dysków w braku).
jeśli planujesz później mieć macierz RAID (z dyskami o podobnych rozmiarach), możesz chcieć ponownie utworzyć system plików na nowym dysku z raid1 dla danych i metadanych, a następnie skopiować wszystko. potem, kiedy będziesz miał więcej pieniędzy, kup drugi dysk 2 TB.
ps: użycie raid1 na pojedynczym dysku oznacza, że dane będą przechowywane w dwóch lokalizacjach na tym samym dysku (w celu ochrony przed uszkodzeniem) i zmniejszy przestrzeń dyskową (to naprawdę naprawdę dobry pomysł na metadane).
pss: poważnie, nie daj się skusić, aby nie używać raid1 do metadanych. psss: istnieje bardzo duża szansa, że btrfs zyska możliwość dynamicznej zmiany poziomów rajdu.
źródło
To zależy od tego, jakiego profilu używasz dla bloków danych systemu plików Btrfs na wielu urządzeniach.
Gdy używasz RAID0 (domyślnie dla bloków danych), każdy dysk może być zapełniony tylko do pojemności najmniejszego dysku w macierzy.
Gdy użyjesz „pojedynczego” profilu dla bloków danych, każdy dysk zostanie zapełniony do pełnej pojemności. na przykład
mkfs.btrfs -d single /dev/sda /dev/sdb
Mam serwer plików z dyskiem 2 TB i 3 TB. Uruchamia Ubuntu 12.10 z dysku flash USB. Najpierw stworzyłem system plików Btrfs bez
-d single
opcji:Rezultat był taki, że mogłem przechowywać tylko około 4 TB (dane pliku binarnego TB 3,45).
Zwróć
used 1.82TB
uwagę na dysk 3 TB.Następnie użyłem polecenia „balance”, aby przekonwertować bloki danych z RAID0 na profil „single”:
Zrównoważenie danych 4 TB zajęło bardzo dużo czasu (około 30 godzin). Ale po jego zakończeniu mogłem użyć pełnego 5 TB (dane pliku binarnego 4,36 TB).
źródło
Użyłem wielu urządzeń z btrfs w Ubuntu i działało to dobrze. Pamiętaj, że btrfs tak naprawdę nie implementuje standardowych poziomów RAID. Implementuje opcjonalne paski i dublowanie, ale nie jest to prawdziwa macierz RAID.
źródło
Możliwe jest łączenie napędów o różnych rozmiarach w btrfs.
Ale obecnie btrfs nie sprzedaje ENOSPC (brak miejsca na urządzeniu) bardzo dobrze.
Np. Zainstalowałem 3 dyski w macierzy RAID0 (paski). 1x500 GB, 1x250 GB, 1x160 GB.
Zakładasz, że będziesz mieć miejsce na dysku między 800-900 GB.
Oto co
df -h
pokazuje:/ dev / sdf 848G 615G 234G 73% / media / btrfs
Ale nie jestem w stanie przechowywać więcej danych w tablicy. (Brak miejsca)
btrfs filesystem df /media/btrfs
pokazuje mi to:Dane: ogółem = 612,51 GB, używane = 612,51 GB
Metadane: ogółem = 1,62 GB, używane = 990,73 MB
System: ogółem = 12,00 MB, używane = 48,00 KB
Nawet przywrócenie równowagi nie pomogło.
Na liście mailingowej widziałem to połączenie:
rozmiar najmniejszego dysku * liczba dysków w tablicy
(chociaż mam trochę więcej miejsca: 612 GB zamiast 160 GB * 3 = 480 GB)
Tak więc w obecnym stanie rozwoju są szanse, że nie będziesz w stanie wykorzystać całej dostępnej przestrzeni, mimo że btrfs obsługuje różne rozmiary w jednej tablicy.
Używam Ubuntu 10.10 z jądrem generycznym 2.6.35-22.
źródło
aktualizacja: poniższa odpowiedź została napisana przed wydaniem Linuksa 3.0. Linux 3.0 zawiera poprawkę quasi-round-robin.
Podczas wykonywania kopii lustrzanych lub usuwania danych drugi fragment kopii lustrzanej lub pasków należy przydzielić na innym urządzeniu z wolnym miejscem. BTRFS przydziela porcje do urządzeń w sposób okrągły, co może powodować utratę miejsca, jeśli masz urządzenia o różnych rozmiarach.
Tam jest poprawka quasi-round-robin . Oczywiście nadal nie można sparować wszystkich części na różnych urządzeniach, jeśli masz dysk 500 GB i 2 TB. Łatka jest przeznaczona raczej do sytuacji takich jak 1 x 1 TB + 2 x 500 GB, gdzie każdy mały dysk powinien preferować tworzenie kopii lustrzanych / pasków na dużym dysku zamiast na drugim małym dysku.
W twojej sytuacji użyłbym po prostu trybu „pojedynczego” dla twoich danych (
mkfs.btrfs -d single
). W tym trybie części nie są sparowane, więc myślę, że nie byłoby problemu z urządzeniami o różnych rozmiarach. Nie przetestowałem tego jednak.źródło
Ten problem dotyczy tylko konfiguracji btrfs-raid1 ze strony Gotchas :
źródło