LVM zdaje się funkcjonować podobnie, jeżeli w miejsce oryginalnego roota podłączy się jego snapshot.
Z tym snapshotami jest taki plus, że nie są one kopią oryginalnej partycji. Działają w systemie copy-on-write. Fizyczne miejsce na wolumenie snapshota zajmują tylko te pliki, które zostały zmodyfikowane.
To znaczy, że dla partycji roota wynoszącej 8GB wystarczy snapshot wielkości 1GB (bo nie zdarzają się upgrady, po których modyfikowane zostaje ponad 1GB danych). Właściwie dla małych upgradów to może wystarczyć nawet 500MB i nadal będzie można cofnąć w czasie cały system plików.
Co jeżeli partycja jest formatowana lub pliki są usuwane? Dzisiaj przeprowadziłem łopatologicznie konkretniejszy test.
To jest stan logicznych wolumenów. Widać, że zrobiłem snapshot roota. Snapshot ma wielkość 4.23G (nie miałem więcej wolnego w puli), a sam root 5.21G. Fizyczny rozmiar snapshota na dysku wynosi 0%, ponieważ żadne pliki nie były modyfikowane.
Kod:
[boss@arch ~]$ sudo lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
home vga -wi-ao 346.93g
root vga owi-ao 5.21g
rootsnap vga swi-a- 4.23g root 0.00
swap vga -wi-ao 984.00m
[boss@arch ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vga-root 5.2G 3.3G 1.7G 67% /
/dev/mapper/vga-home 342G 320G 4.9G 99% /home
/dev/mapper/vga-rootsnap
5.2G 3.3G 1.7G 67% /mnt
Włożyłem płytę Ubuntu Alternate. Sformatowałem wolumen root, zacząłem instalować ubuntu cli. W czasie instalacji nie wybrałem osobnej partycji dla /boot (backupu tej partycji nie robiłem, poza tym chciałem tylko nadpisać instalację archa). W efekcie przy instalacji gruba pojawił się fatal error. Grub nie może się zainstalować w hd0. Restart.
Końcem końców uzyskałem sytuację: instalacja archa została sformatowana, ubuntu cli zostało zainstalowne, system nie wstaje. Wydaje mi się, że jest to gorsza sytuacja, niż niemożność wstania x-ów po zwykłym upgradzie lub jakiekolwiek inne problemy z upgredami, których, patrząc po nowych wątkach na forum archa, zawsze trochę się mnoży.
Załadowałem live CD. Sprawdziłem stan wolumenów.
Kod:
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 512644 212 512432 0% /dev
/dev/sr0 706122 706122 0 100% /cdrom
/dev/mapper/vga-root 5382248 618652 4490188 12% /mnt/root
/dev/mapper/vga-rootsnap
5382248 3413396 1695444 67% /mnt/rootsnap
/dev/mapper/vga-home 358069028 334812888 5079388 99% /mnt/home
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
home vga -wi-ao 346.93G
root vga owi-ao 5.21G
rootsnap vga swi-ao 4.23G root 17.82
swap vga -wi-a- 984.00M
Jak widać, stan partycji roota zmniejszył się z 3,3G (arch) do 0,6G (ubu cli). Natomiast fizyczny rozmiar rootsnapshota wzrósł tylko o ok 0.7G (do 17,82%). Oznacza to, że format nie spowodował kopiowania plików do snapshota. Skopiowane zostały tylko te pliki, które bezpośrednio nadpisała instalacja ubu cli. Dodatkowo widać, że partycja rootsnap nadal jest dostępna, a jej rozmiar wynosi 3,3G.
Mount rootsnap, bind proc i dev, chroot, lvconvert --merge vga/rootsnap, reboot i arch uruchamia się jakby nigdy nic. Wszystkie systemowe problemy związane z updatem lub jakimikolwiek innymi manipulacjami na plikach roota odchodzą na drugi plan, ponieważ tworzenie snapshotów i ich przywracanie to kwestie paru sekund. System zostaje uszkodzony? Można zrobić jego snapshot. Oryginalny system wrócić do stanu sprzed uszkodzenia, a uszkodzoną wersję dodać do gruba w celach dalszej inwigilacji.
Poza tym polecam to rozwiązanie. Do menu gruba dodać wpis ze wskazaniem partycji roota na snapshot. W przypadku jakichkolwiek problemów bez jakiejkolwiek roboty można już od razu bootować do snapshota i będziemy mieli taki system, jakim go zostawiliśmy.
A tak z innej beczki, za 5 lat to już pewnie każda dystrybucja będzie na btrfs (menadżer (lvm) i system plików (ext4) w jednym). Na windzie miał być niby winfs, ale ten projekt chyba umarł już śmiercią naturalną.