Najszybszy sposób na konwersję sformatowanego dysku ext4 na LVM z ext4?

12

Obecnie robię, cp -aRaby skopiować dane z mojego (w 99% zapełnionego) dysku sformatowanego 1 TB TB4 na nowy dysk LVM-z-ext4-on-it. To trwa wiecznie.

Czy jest jakiś sposób, aby spróbować „przekonwertować” dysk na miejscu? Korzystam z EC2, więc tworzenie kopii zapasowej zajmuje kilka minut.

Lub alternatywnie, czy jest jakiś sposób, który mógłby być szybszy niż cpbezpośrednie skopiowanie systemu plików ext4 na dysk LVM?

Max
źródło

Odpowiedzi:

23

Napisałem bloki (z domu lvmify), które dokonują tej konwersji w miejscu. Działa poprzez nieznaczne zmniejszenie systemu plików, przeniesienie początku systemu plików na koniec partycji i skopiowanie w jego miejsce superbloku LVM (wstępnie skonfigurowanego z odpowiednim PV / LV / VG).

Gabriel
źródło
to brzmi naprawdę interesująco! Zastanawiam się nad kopią zapasową mojego 500 GB na innej partycji (to już lvm), żeby spróbować!
Wodnik Moc
1
@Gabriel, czy to będzie działać na żywo FS? Mam na myśli, czy muszę odmontować FS, a potem zrobi to w miejscu, czy może nawet będzie działał na zamontowanym AR / W root FS?
Gavriel
1
@AmrMostafa: „Pretty” solid? Mam tę rzecz o moich systemów plików, muszę im być skała stałe ... :-)
TJ Crowder
3
Użytkownicy Ubuntu Trusty + będą mieli trudności z zainstalowaniem wymaganego Pythona 3.3 .. dostępne jest tylko 3.4, a bloki nie zostały zaktualizowane od grudnia 2014 r .: /
bksunday
1
Pomimo tego, że został zaktualizowany 5 uszu temu, działa stal. Potwierdzono na dysku SSD NVMe, schemacie partycji GPT. Uwaga: lepiej użyj Pythona 3.6.
tosh
2

Nie jestem pewien, jak przekonwertować dysk na żywo, ale myślę, że rsync będzie lepszym i bezpieczniejszym sposobem kopiowania danych. Pozwoli ci to wznowić i zachować nienaruszone dane w przypadku zatrzymania transferu.

Znalazłem podobny proces zakończony przez dodanie zewnętrznego dysku do systemu lokalnego jako LVM. Nie ma zbyt wielu informacji, ale myślę, że to wystarczy, aby zacząć:

„Więc dzisiaj odkryłem niesamowite, jakim jest LVM. Instalując Debiana, wybrałem„ LVM - Użyj całego dysku ”. Ale głównym dyskiem był wolny i mały dysk laptop o prędkości 5200 obr./min. Dzisiaj włożyłem swój zapasowy dysk 1,5 TB i uruchomiłem się. Chciałem zamiast tego system na tym większym, szybszym dysku.

Podejście LVM: dodaj / dev / sdc do grupy woluminów, a następnie uruchom „pvmove / dev / sda”. To przenosi wszystkie dane z sda na inne dyski (dostępne tylko sdc). Nie ma potrzeby ponownego uruchamiania, nie trzeba odmontowywać. Podczas gdy to piszę, dane są przenoszone.

Później wykonaj polecenie „vgreduce megatron / dev / sda”, aby usunąć wolny dysk z grupy woluminów i voila. Przeniesione dane (megatron to nazwa grupy woluminów i mojego komputera). Dla wielu może to być stara wiadomość, ale pomyślałem, że to naprawdę fajne :) ”

To prawda, że ​​zrobiono to lokalnie, ale myślę, że dzięki dodatkowym badaniom może uda ci się to osiągnąć.

źródło

bmurtagh
źródło
2

Nie istnieje metoda wykonania takiej konwersji LVM „w locie”.

LVM faktycznie znajduje się pod Twoim systemem plików, aby rozszerzyć go na wiele urządzeń fizycznych, rozłożyć go na paski lub wykonać kopię lustrzaną itp. Ostatnim krokiem w tworzeniu woluminu logicznego jest nałożenie na niego systemu plików. Oto przykłady z RHEL6.

Musisz wykonać kopię zapasową lub zarchiwizować dane na tym urządzeniu, a następnie zniszczyć istniejący system plików, utworzyć wolumin logiczny i ponownie nałożyć system plików na wierzch. Jeśli jest to główny system plików w systemie Linux, rozważ ponowną instalację. To może być szybsze.

Lubię szybsze kopie, ddale nie używam go często. Popełnianie błędu ddjest niebezpieczne. Jedną z rzeczy, które możesz wypróbować, jest tar czv <source fs> | (cd <destination fs>; tar x)przesyłanie skompresowanego pliku tar na bieżąco.

Powodzenia!

dafydd
źródło
1
Używanie kompresji w operacji tar nie ma żadnego sensu. Jedynym miejscem, w którym dane będą kompresowane, jest pamięć, ponieważ jest przesyłana strumieniowo; jest on natychmiast ponownie rozpakowywany, zanim zostanie zapisany na dysk. Dopiero teraz operacja generuje wielokrotnie więcej obciążeń procesora, ponieważ kompresuje i rozpakowuje, bezużytecznie, w locie. Ponadto, dla każdej takiej operacji obejmującej całe systemy plików, będziesz chciał przynajmniej tar cSf - | tar xvpf - obsługiwać rzadkie pliki i uprawnienia. Prawdopodobnie --selinuxteż (jeśli wolumin docelowy zastąpi następnie źródło).
FeRD
To dobry punkt, jeśli twoje urządzenie źródłowe i docelowe są na tym samym hoście lub jeśli nie masz wolnych cykli procesora. Są to punkty, które należy rozważyć indywidualnie. Podoba mi się przełączniki „S” i „p” oraz argument „--selinux”.
dafydd 10.10.2013
Mmm, cóż, jeśli ktoś klonuje system plików, przesyłając strumieniowo operację tar w locie za pośrednictwem łącza sieciowego, to (a) są odważniejszą duszą niż ja, ale (b) możesz NIE chcieć, -pchyba że hosty współużytkują nazwy użytkowników / UIDs (choć strona podręcznika przypomina mi, że -pjest to domyślna wartość tar GNU podczas uruchamiania jako root) i --selinuxjest obarczona jeszcze większym niebezpieczeństwem - prawdopodobnie lepiej po prostu zrobić restorecon -Rv(lub -Rp) całą rzecz, gdy zostanie ona zamontowana we właściwym (końcowym) ) Lokalizacja.
FeRD
dd jest właściwym narzędziem do tej operacji, ponieważ kopiujesz partycję. dd utworzy dokładną kopię na nowej partycji, a następnie zmienisz fstab, aby ładował się z nowej partycji zamiast ze starej. Po zakończeniu przenoszenia wszystkich partycji ze starego dysku możesz zniszczyć system plików i dodać dysk do grupy dysków fizycznych LVM, a następnie użyć miejsca, aby rozwinąć partycje w dowolny sposób.
Xalorous,