Skip to content

Migrare de la LVM la BTRFS

Acest articol nu este tocmai un tutorial, este mai mult împărtășirea unei experiențe ce i-ar putea ajuta pe alții. Urmați ghidul pe propria răspundere. Documentațivă bine înainte să faceți orice. „Nu scrie cod pe care nu-l înțelegi” (Toth Arpad).

După ce am folosit multă vreme LVM și mi-am făcut pe laptopul meu tot soiul de volume logice, să am flexibilitate și să tot mut și să reinstalez la linuxuri, am hotărât să-i dau bătaie și să ascult de comunitatea cu surse deschise (și libere) și să încerc BTRFS.

Nu am înțeles la început ce e și cum funcționează. Ca prostu’ am făcut manual partiții LVM (în continuare) și am folosit BTRFS ca sistem de fișiere, exact ca și cum aș folosi ext4.

Am ținut-o tot așa, cel mai mult din lene de a mă documenta, până când m-a văzut Alex ce am făcut și mi-a dat cu BTRFS-ul în cap.

M-am pus atunci cu burta pe carte și am citit (măcar o parte) din documentație. Acela a fost momentul revelației. WOOOOO’ ce poate să facă BTRFS!!

N-am de gând să fac aici un tutorial de ce-i BTRFS și cum să-l folosiți, dar vă spun sincer, încercați-l. Partea cu „nu e încă stabil” e doar un pretext pe care-l folosesc dezvoltatorii. Ori i-am întrebat, ori dintr-un articol am aflat că nu l-au declarat stabil oficial, deși ei îl folosesc de ceva vreme bună și am aflat că sunt firme care îl au chiar și în producție. Părearea mea: Faceți-vă singuri opinia de cât de stabil e.

După ce m-am mai jucat un pic cu el, pe ici pe colo, am hotărât să renunț la LVM cu totul. Și aici a început provocarea: Cum să fac asta?

Sistemul meu era amestecat cu LVM, BTRFS și Ext4. Aveam ceva de genul:

  • Tabelă de partiții MBR
  • 4 partiții primare – toate cu LVM pe ele (în ordinea următoare):
    • 100 GB
    • restul
    • 80 GB
    • 4 GB (swap)
  • Aveam 4 volume logice:
    • root 1 (btrfs)
    • root 2 (ext4)
    • root 3 (ext4)
    • home (ext4)

Nici nu mai știu care volum era pe care partiție fizică.

OK, cum fac migrarea? Pe scurt am avut 3 opțiuni:

  • Reinstalez totul și o iau de la zero (asta însemna iar o perioadă de a-mi reface sistemul așa cum îmi place)
  • Creez o partiție nouă cu BTRFS și copiez tot sistemul acolo (folosind cp) (iar apoi mă lupt cu hash-urile să le fac să nu se certe)
  • Să adaug un dispozitiv nou la sistemul de fișiere, să-l șterg pe cel vechi și să las BTRFS-ul să mute datele

Evident am optat pentru a treia variantă.

Am început prin a face curat: am șters root 2 și root 3, m-am asigurat ca toate datele nu stau pe prima partiție (100 GB) și că aceasta e liberă pentru a fi utilizată.

sudo lvremove VolGroup00/lvolroot3
sudo lvremove VolGroup00/lvolroot2
sudo pvmove /dev/sda1
sudo vgreduce VolGroup00 /dev/sda1
sudo pvremove /dev/sda1

Am folosit gestionarul de partiții de la KDE pentru a o formata ca o partiție goală.

După ce am avut un singur sistem instalat, Kubuntu 15.04 cu backports, și o singură partiție root, am început migrarea.

Am adăugat partiția ca dispozitiv nou la sistemul de fișiere BTRFS de pe root 1, și l-am șters pe cel vechi.

sudo mount /dev/VolGroup00/lvolroot /mnt/
cd /mnt/
sudo btrfs device add /dev/sda1 @

Kubuntu mi-a denumit subvolumul @. Am ajuns să am următorul aranjament:

$ sudo btrfs filesystem show
Label: none  uuid: 4fec1419-052f-40bc-b390-41cadab82e0b
        Total devices 2 FS bytes used 11.69GiB
        devid    2 size 100.01GiB used 0.00GiB path /dev/sda1
        devid    3 size 50.00GiB used 14.06B path /dev/mapper/VolGroup00-lvolroot

Apoi am șters dispozitivul care folosea LVM.

sudo btrfs device delete /dev/mapper/VolGroup00-lvolroot @

După un timp de așteptare în care HardDisk-ul meu cârâia de mama focului, am ajuns la aranjamentul ăsta:

$ sudo btrfs filesystem show
Label: none  uuid: 4fec1419-052f-40bc-b390-41cadab82e0b
        Total devices 2 FS bytes used 11.69GiB
        devid    2 size 100.01GiB used 14.06GiB path /dev/sda1
        devid    3 size 50.00GiB used 0.00B path /dev/mapper/VolGroup00-lvolroot

Și aici a început distracția. Fă tu GRUB să meargă. Modific fstab-ul (comentez partiția LVM root) și actualizez grub.cfg, sperând că e deajuns:

$ cat /etc/fstab
#              
#/dev/mapper/VolGroup00-lvolroot /               btrfs   defaults,subvol=@ 0       1
/dev/sda1 /               btrfs   defaults,subvol=@ 0       1
/dev/mapper/VolGroup00-lvolhome /home           ext4    defaults        0       2
# swap was on /dev/sda2 during installation
UUID=8f87084f-c265-4efd-b3af-10f597ea1126 none            swap    sw              0       0
sudo update-grub

Repornesc laptopul:

Error: unknown filesystem.
grub rescue>

CEEEEE?!

După ce am căutat puțin pe internet și mai multe experimente eșuate, am ajuns la această rezolvare: În grub rescue> am căutat fiecare partiție, să văd care e cea pe care mi-o trebuie și am rulat:

grub rescue> ls
msdos4 msdos3 msdos2 msdos1 VolGroup00-lvolroot VolGroup00-lvolhome
grub rescue> ls (hd0, msdos4)
unknown filesystem
grub rescue> ls (hd0, msdos3)
unknown filesystem
grub rescue> ls (hd0, msdos2)
unknown filesystem
grub rescue> ls (hd0, msdos1)
@
grub rescue> set boot=(hd0,msdos1)
grub rescue> set prefix=(hd0,msdos1)/@/boot/grub
grub rescue> insmod normal
grub rescue> normal

Și mi-a pornit sistemul. Yeeeeey!!!

Am mai rulat următoarele pentru a rezolva grub-ul permanent:

sudo grub-update
sudo grub-install /dev/sda

Și gata. Merge!

Mai urmează să migrez /home și să elimin cu totul LVM.

Published inSoftwareTutorials

Be First to Comment

Lasă un răspuns