Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk.

06.06 | 12:01 | zaphod | zaphod

Rozhodol som sa presunúť Manjaro Linux na nový disk. Chcel som sa zoznámiť s btrfs snapshot, send/receive a UEFI. Preto som urobil presun ručne bez nástrojov ako je napríklad clonezilla.

Prečo presun na nový disk?

Pozrite sa na test diskov:

Samsung SSD 850
$ sudo hdparm -Tt /dev/sda

/dev/sda:
 Timing cached reads:   17428 MB in  1.98 seconds = 8794.03 MB/sec
 Timing buffered disk reads: 1598 MB in  3.00 seconds = 532.30 MB/sec
 
KINGSTON A400
$ sudo hdparm -Tt /dev/sdb

/dev/sdb:
 Timing cached reads:   17356 MB in  1.98 seconds = 8757.39 MB/sec
 Timing buffered disk reads:  90 MB in  3.06 seconds =  29.38 MB/sec

Manjaro som inštaloval pred siedmymi mesiacmi na Kingston A400. "Kvalita" Kingston disku sa prejavila. Staré súbory číta rýchlosťou cca 6MB/s, nové cca 250MB/s. Má asi 4 roky, ale Samsung je rovnako starý a nemá žiadne problémy.

Čo som použil pre presun.

Aktuálny živý systém Manjaro, btrfs snapshot zabezpečí integritu prenosu. Pri inštalácii systému som mal kernel 5.13, teraz mám kernel 5.17.

Je potrebné zaistiť aby sa počas presunu nerobili veľké dátové prenosy.

Vytvoril som si niekoľko skriptov, ktoré som kreatívne :-) nazval kopia1.sh ... Skripy a ostatné príkazy spúšťam ako root (sudo su). Okrem zabráneniu chýb majú skripty za úlohu rýchle vytvorenie snapshot a tým podporu konzistencii dát.

Gparted - rozdelenie, formát disku.

Rozdelenie starého disku vyzerá takto:

Systém

Podľa neho som rozdelil nový disk:

Nový systém

Pre UEFI treba požiť tabuľku oddielov gpt, nie msdos.

Zistenie údajov pre prenos systému.

Manjaro som pôvodne iba testoval, preto som nechal automatické delenie disku:

$ sudo btrfs subvolume list /
ID 256 gen 81438 top level 5 path @
ID 257 gen 81438 top level 5 path @home
ID 258 gen 81435 top level 5 path @cache
ID 259 gen 81438 top level 5 path @log
ID 468 gen 80962 top level 5 path timeshift-btrfs/snapshots/2022-05-25_12-51-31/@
ID 469 gen 80964 top level 5 path timeshift-btrfs/snapshots/2022-05-25_12-51-45/@
ID 470 gen 81246 top level 5 path timeshift-btrfs/snapshots/2022-05-26_04-51-11/@

Vidieť ktoré subvolume treba kopírovať, timeshift zálohu nekopírujem. Všetky subvolume zdieľajú priestor na /dev/sdb2.

/etc/fstab ukáže kde sú subvolume nainštalované a UUID partícií:

UUID=449E-04DF                            /boot/efi      vfat    umask=0077 0 2
UUID=e0d965ec-f56f-4851-9c15-2772b6ad7c0b /              btrfs   subvol=/@,defaults,noatime,space_cache,ssd,compress=zstd,commit=120 0 1
UUID=e0d965ec-f56f-4851-9c15-2772b6ad7c0b /home          btrfs   subvol=/@home,defaults,noatime,space_cache,ssd,compress=zstd,commit=120 0 2
UUID=e0d965ec-f56f-4851-9c15-2772b6ad7c0b /var/cache     btrfs   subvol=/@cache,defaults,noatime,space_cache,ssd,compress=zstd,commit=120 0 2
UUID=e0d965ec-f56f-4851-9c15-2772b6ad7c0b /var/log       btrfs   subvol=/@log,defaults,noatime,space_cache,ssd,compress=zstd,commit=120 0 2
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

lsblk ukáže UUID partícií všetkých diskov:

$ lsblk -f
NAME   FSTYPE FSVER LABEL    UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                              
├─sda1 vfat   FAT32 NO_LABEL F7A0-514B                                           
└─sda2 btrfs        Manjaro  9292b74a-448c-47f5-85a7-09862e1317d4                
sdb                                                                              
├─sdb1 vfat   FAT32 NO_LABEL 449E-04DF                             298,8M     0% /boot/efi
└─sdb2 btrfs                 e0d965ec-f56f-4851-9c15-2772b6ad7c0b  187,7G    16% /var/cache
                                                                                 /var/log
                                                                                 /home
                                                                                 /
sdc                                                                              
├─sdc1 ext4   1.0   data1    168efbd8-5fc5-46eb-9929-78be1a51edbb   34,7G    59% /media/data1
└─sdc2 btrfs        data2    52398df8-1784-4935-ba50-ba10c5e93761  100,9G    88% /media/data2

Kópia systému.

Mount nového disku.

Použil som parametre z fstab okrem space_cache:

mount -o defaults,noatime,ssd,compress=zstd,commit=120 /dev/sda2 /mnt

Snapshot, send/receive.

kopia1.sh snapshot + send/receive (prenesie iba readonly snapshoty):

btrfs subvolume snapshot -r / /root-z #@
btrfs subvolume snapshot -r /var/cache /cache-z #@cache
btrfs subvolume snapshot -r /var/log /log-z #@log
btrfs subvolume snapshot -r /home /home-z #@home
sync
time btrfs send /root-z | btrfs receive /mnt
time btrfs send /cache-z | btrfs receive /mnt
time btrfs send /log-z | btrfs receive /mnt
time btrfs send /home-z | btrfs receive /mnt
sync

koopia2.sh premenovanie subvolume (a zbavenia sa readonly) na cieľovom disku:

btrfs subvolume snapshot /mnt/root-z /mnt/@
btrfs subvolume snapshot /mnt/cache-z /mnt/@cache
btrfs subvolume snapshot /mnt/log-z /mnt/@log
btrfs subvolume snapshot /mnt/home-z /mnt/@home
sync

kopia3.sh mazanie nepotrebnych snapshotov:

btrfs subvolume delete /root-z
btrfs subvolume delete /cache-z
btrfs subvolume delete /log-z
btrfs subvolume delete /home-z

btrfs subvolume delete /mnt/root-z
btrfs subvolume delete /mnt/cache-z
btrfs subvolume delete /mnt/log-z
btrfs subvolume delete /mnt/home-z
sync

Po každom skripte som kontroloval či je všetko v poriadku pomocou:

btrfs subvolume list /
btrfs subvolume list /mnt

Ak je všetko v poriadku:

umount /mnt

Konfigurácia boot disku.

Nainštaloval som subvolume @ do /mnt a /dev/sda1 do /mnt/boot/efi:

mount -o subvol=/@,defaults,noatime,ssd,compress=zstd,commit=120 /dev/sda2 /mnt
mount /dev/sda1 /mnt/boot/efi

Kópia efi.

cp -a /boot/efi /mnt/boot

Týmto je nainštalovaný grub.

Konfigurácia grubu.

Nová verzia kernelu a btrfs vytvoreného gparted neberú parameter mount space_cache, preto som ho odstránil z fstab na novom disku.

Zmena UUID podľa lsblk v /etc/fstab na novom disku, v mojom prípade:

/dev/sda1 z 449E-04DF na F7A0-514B
/dev/sda2 z e0d965ec-f56f-4851-9c15-2772b6ad7c0b na 9292b74a-448c-47f5-85a7-09862e1317d4

kopia4.sh mount virtuálnych adresárov pre update-grub:

mount --bind /dev /mnt/dev &&
mount --bind /dev/pts /mnt/dev/pts &&
mount --bind /proc /mnt/proc &&
mount --bind /sys /mnt/sys &&
mount --bind /run /mnt/run

Zmena parametrov grub (podľa fstab) a initramfs:

chroot /mnt
update-grub
mkinitcpio -P
exit
umount --recursive /mnt

Reštart, vybrať v boot menu (u mňa F12) nový disk.

Konfigurácia UEFI.

Výpis UEFI konfigurácie:

$ efibootmgr -v
BootCurrent: 0009
Timeout: 1 seconds
BootOrder: 0009,0006,0000,0002,0003,0004
Boot0000* Manjaro	HD(1,GPT,9678c4d3-ec2e-6d49-b7d2-9ce3a8b36747,0x1000,0x96000)/File(\EFI\MANJARO\GRUBX64.EFI)
Boot0002* Samsung SSD 850 EVO 250GB	BBS(HD,,0x0)..BO
Boot0003* KINGSTON SA400S37240G	BBS(HD,,0x0)..BO
Boot0004* ST1000LM048-2E7172	BBS(HD,,0x0)..BO
Boot0006* UEFI OS	HD(1,GPT,9678c4d3-ec2e-6d49-b7d2-9ce3a8b36747,0x1000,0x96000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0009* UEFI OS	HD(1,GPT,c1baf4f8-2494-4f0c-89a2-ee509bdda7c3,0x1000,0x96000)/File(\EFI\BOOT\BOOTX64.EFI)..BO

Pridanie novej položky:

sudo efibootmgr -c -L "Manjaros" -l '\EFI\MANJARO\GRUBX64.EFI'

Nová konfigurácia:

$ efibootmgr -v
BootCurrent: 0009
Timeout: 1 seconds
BootOrder: 0001,0009,0006,0000,0002,0003,0004
Boot0000* Manjaro	HD(1,GPT,9678c4d3-ec2e-6d49-b7d2-9ce3a8b36747,0x1000,0x96000)/File(\EFI\MANJARO\GRUBX64.EFI)
Boot0001* Manjaros	HD(1,GPT,c1baf4f8-2494-4f0c-89a2-ee509bdda7c3,0x1000,0x96000)/File(\EFI\MANJARO\GRUBX64.EFI)
Boot0002* Samsung SSD 850 EVO 250GB	BBS(HD,,0x0)..BO
Boot0003* KINGSTON SA400S37240G	BBS(HD,,0x0)..BO
Boot0004* ST1000LM048-2E7172	BBS(HD,,0x0)..BO
Boot0006* UEFI OS	HD(1,GPT,9678c4d3-ec2e-6d49-b7d2-9ce3a8b36747,0x1000,0x96000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0009* UEFI OS	HD(1,GPT,c1baf4f8-2494-4f0c-89a2-ee509bdda7c3,0x1000,0x96000)/File(\EFI\BOOT\BOOTX64.EFI)..BO

Po reštarte automaticky urobí boot Manjaros.

Záver.

Urobil som si také domáce disaster recovery. Plánujem inkrementálnu zálohu pomocou btrfs send/receive + tar /boot/efi.

Nainštaloval som Ventoy na flash USB, nahral som iso systemrescue. Sytemrescue obsahuje xfce, takže v prípade poruchy mám k dispozícii programy na ktoré som zvyknutý. K tomu zálohy, skripty, tento text a trúfnem si na obnovu systému

    • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. 06.06 | 14:56
      Avatar Livan Manjaro s XFCE  Používateľ

      Musím povedať, že si sa toho zhostil statočne. Ja by som na niečo také nemal nervy a riešil by som to jednoduchým klonovaním, čo by iste išlo v danom prípade bez problémov. Ešte ma napadlo, že čiste teoreticky by sa to malo dať urobiť aj s podporou TimeShiftu. Minimálne si matne spomínam, že v dokumentácii k TimeShiftu bolo spomenuté aj takéto použitie.

      • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. 06.06 | 15:09
        Avatar Pavel Q4OS Centaurus  Administrátor

        Noo to je dobrá otázka, ak sa nemýlim tak TimeShift zrkadlí celú súborovú štruktúru a pri obnove zálohy v rovnakom systéme cez soft prepisuje len zmenené súbory. Ale či by to šlo pri klonovaní a skopírovaní komplet súborov na nový disk som nikdy neskúšal, vždy robím čisté inštalácie a mám uložené len najdôležitejšie konfigy. Predtým som používal na zálohy práve CloneZillu.

        • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. 06.06 | 15:11
          Avatar Livan Manjaro s XFCE  Používateľ

          A keďže na novom disku nebude nič, prepíše všetky súbory na stav podľa poslednej zálohy.

          • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. 06.06 | 15:14
            Avatar Pavel Q4OS Centaurus  Administrátor

            Teoreticky by to mohlo fungovať, nemám odskúšané.

    • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. 06.06 | 16:32
      Avatar Miroslav Bendík Gentoo  Administrátor

      Cool, ja som sa nikdy neodhodlal k použitiu btrfs a stále som bol pred SSD-čkami na XFS a od SSD som na ext4. Dáta som len surovo prekopíroval cez rsync (rsync -aEWSlhv -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" --no-compress src dst).

    • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. 13.06 | 16:21
      Avatar gejza   Používateľ

      ...systembak to zvladne na 3 klikk...

    • RE: Kópia systémového disku (Manjaro,btrfs,UEFI) na druhý disk. Dnes | 18:51
      Avatar zaphod Manjaro, MX Linux  Používateľ

      - btrfs som začal používať na ubuntu 12.04 po preinštalovaní na nový disk - asi od 2014. MX Linux 18,19, teraz Manjaro - zatiaľ som nemal problémy. virtulbox,swap,databázu mám ale na ext4 partícii. Vivaldi adresár a cache zasa na tmpfs.

      - timeshift je pre zálohu málo použiteľný. Robí automatickú zálohu po každom update, po každej inštalácii nového programu. Je fajn vrátiť sa naspäť po nezdarenom update, ale pre zálohu (aspoň podľa mňa) nie. Zálohujem na externý disk, ktorý potom odpojím. Pre timeshift by musel byť stále pripojený.