Nedaří se vytvořit bitovou kopii disku

Nedaří se vytvořit bitovou kopii disku
« kdy: 23. 11. 2021, 09:59:12 »
Ahoj, nedaří se mi vytvořit bitovou kopii disku. Snažím se zmigrovat disk používaný u KVM vmka z qcow2 do vmdk formátu a tento disk použít ve vmware u jiného vmka. Disk nemá partition, je na něm pouze LVMko, přes celý disk. Na LVM lv je XFS filesystém.

Kód: [Vybrat]
root@debian:~# lsblk
vdb                     254:16   0   1.1G  0 disk
└─vg_root-lv_root       253:7    0   1.1G  0 lvm

root@debian:~# pvs
  PV         VG         Fmt  Attr PSize   PFree
  /dev/vdb   vg_root    lvm2 a--   <1.10g    0

root@debian:~# lvs
  LV         VG         Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root    vg_root    -wi-a-----  <1.10g

Jako první jsem se pokusil disk přemigrovat pomocí konverze qcow2 -> vmdk pomocí:

Kód: [Vybrat]
qemu-img convert -f qcow2 -O vmdk -o adapter_type=lsilogic,subformat=streamOptimized,compat6 disk.qcow2 disk.vmdk

Tento disk jsem následně importoval do vmware a připojil k novému vmku. Bohužel na zkonvertovaném disku vidím správně LVM (vg,lv), ale XFS filesystém je poškozený tak že nejde připojit ani opravit. Zkoušel jsem ještě různé kombinace parametrů pro konverzi pomocí qemu-img convert, ale došel jsem k závěru že tudy prostě cesta nevede.

Rozhodl jsem se tedy udělat bitovou kopii disku pomocí dd. To mi ale také nefunguje a vůbec netuším proč.

Kopii dělám tak že na starém i novém vmku mám nabootované nějaké live cd a na starém stroji spustím dd a obraz přenesu přes SSH (adresa nového stroje 192.168.1.1):

Kód: [Vybrat]
dd if=/dev/vdb bs=4M | ssh root@192.168.1.1 'dd of=/dev/sdd bs=4M'
Následně na novém stroji opět vidím správně LVM (vg,lv), ale XFS filesystém je poškozený:

Kód: [Vybrat]
root@debian:~# vgchange -ay
  1 logical volume(s) in volume group "vg_root" now active
root@debian:~# pvs
  PV         VG      Fmt  Attr PSize  PFree
  /dev/sdd   vg_root lvm2 a--  <1.10g    0
root@debian:~# lvs
  LV      VG      Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root vg_root -wi-a----- <1.10g
root@debian:~# xfs_repair /dev/mapper/vg_root-lv_root
Phase 1 - find and verify superblock...
superblock read failed, offset 0, size 524288, ag 0, rval -1

fatal error -- Input/output error
root@debian:~#

Netušíte někdo, prosím, co dělám špatně, popřípadě co by se dalo ještě vyzkoušet? Napadá mě dump xfs filesystému, popřípadě kopie samotných dat pomocí rsync.

Ještě bych dodal že zdrojový stroj běží virtualizován v KVM kde se používá VirtIO driver (předpokládám). Předem díky za nápady.


Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #1 kdy: 23. 11. 2021, 10:56:33 »
Co řiká dmesg? Jaké verze OS a kernelu jsi na zdrojovém a cílovém systému? Myslím, že od nějakého kernelu 3.11 došlo k velkým změnám a stejně tak je problém přechod mezi Debian based a Redhat based distribucemi. Zkoušel jsi xfs_repair -n?

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #2 kdy: 23. 11. 2021, 11:31:55 »
Disk pochází z aktuálního RHEL7. Live distribuce ze které dělám dd je aktuální clonezilla. Při blokovém kopírování disku by přece mělo být jedno co je tam za FS, ne? V době kopírování není FS připojen.

Na zdrojové clonezille v pohodě XFS připojím (mount). Na cíli již ne. Na obou stranách je stejná verze clonezilla tedy i XFS knihoven a kernelu.
« Poslední změna: 23. 11. 2021, 11:34:46 od byl_jsem_donucen_se_registrovat »

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #3 kdy: 23. 11. 2021, 11:53:21 »
A čo SELinux? Čo hlási dmesg?

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #4 kdy: 23. 11. 2021, 12:00:53 »
Pred a po bitove kopii udelej MD5SUM zdroje a cile, tim vyloucis, ze delas chybu v tom obskurnim sitovem kopirovani.

Osobne bych udelal dumb block device te cca 1 GB velikosti a pripojil to do prvniho VM jako raw disk a do ni prekopiroval obsah.

Po kopii pripojil pres loop tuto binarku a zkusil lvm/mount na host OS - pro vylouceni chyby v rozdilnych VM.


k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #5 kdy: 23. 11. 2021, 13:11:50 »
xfs nepouzivam, takze nevim ale zkusil bych tou Clonezillou misto pres DD po siti, vylozene vyuzit Clonezillu, vytvorit image celeho disku (sama pouzije partclone ci dd podle uvazeni) na USBFlash (ci na sitove sdileni) a na cili ten image obnovit...

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #6 kdy: 23. 11. 2021, 13:19:27 »
V dmesg nic zajímavého vidět není, selinux vypnutý.

Zkusil jsem udělat pomocí dd img soubor, spočítat jeho md5sum. Pak jsem ho pomocí SSH zkopíroval na nový stroj, ověřil jsem kontrolní součet a pomocí dd if=/opt/root.img of=/dev/sde bs=4M jsem zapsal bloky na nový disk. Chování stejné.

A už asi tuším kde jsem udělal školáckou chybu  >:(, vypadá to že na cílovém systému jsem zapomněl před xfs_repair či mount udělat aktivaci VG a LV pomocí lvchange -ay vg_root/lv_root. Po aktivaci je již vidět zdravé XFS.

Co je na přenosech po síti špatné? Měl jsem za to že TCP případné síťové chyby vyřeší, nebo na ně alespoň upozorní.

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #7 kdy: 23. 11. 2021, 13:27:13 »
Kopírování clonezillou dopadlo špatně, XFS šlo připojit ale po chvíli kdy se do něj zapsalo tak IO error a poškozený FS, který nešlo v rozumném čase opravit. Clonezilla co vím tak interně používá partclone, sfdisk, grub, dd dle jejího uvážení. Zajímavé bylo že změnila svévolně velikost některých LV (zjištěno při obnově) i když to po ní nikdo nechtěl. Spíše jsem uvažoval samostatném použití partclone.

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #8 kdy: 23. 11. 2021, 13:32:21 »
Co je na přenosech po síti špatné? Měl jsem za to že TCP případné síťové chyby vyřeší, nebo na ně alespoň upozorní.

TCP má omezené možnosti jak identifikovat a poznat pozměněná/poškozená data při přenosu, k tomu dobře slouží TLS vrstva, která to aspoň dokáže vedlejším efektem šifrování. TCP ti zaručuje, že jednotlivé datové pakety dorazí v předem daném pořadí, už ale nezaručuje, že dojdou beze změny či že opravdu dojdou.

SB

  • ****
  • 347
    • Zobrazit profil
    • E-mail
Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #9 kdy: 23. 11. 2021, 14:03:03 »
...TCP ti zaručuje, že jednotlivé datové pakety dorazí v předem daném pořadí, už ale nezaručuje, že dojdou beze změny či že opravdu dojdou.

https://en.wikipedia.org/wiki/Transmission_Control_Protocol
„...TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes)...“

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #10 kdy: 23. 11. 2021, 15:10:21 »
...TCP ti zaručuje, že jednotlivé datové pakety dorazí v předem daném pořadí, už ale nezaručuje, že dojdou beze změny či že opravdu dojdou.

https://en.wikipedia.org/wiki/Transmission_Control_Protocol
„...TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes)...“

ano, a RFC 793 nám praví, že checksum je 16 bitová hodnota, při jakékoliv změně mám šanci 1 ku 65536, že se checksum neporuší. Nemluvě o tom, že samotná hlavička checksum není chráněná proti poškození nebo změně. Teď otázka za dva bludišťáky, co se stane, když prohodím libovolné dva bity v datech? Nebudu tě dlouho napínat, vůbec nic, checksum bude stejný. Tolik k téhle kontrole, nelze se spolehnout, že data přenesená zkrz TCP jsou neporušena.


Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #11 kdy: 23. 11. 2021, 16:12:09 »
...TCP ti zaručuje, že jednotlivé datové pakety dorazí v předem daném pořadí, už ale nezaručuje, že dojdou beze změny či že opravdu dojdou.

https://en.wikipedia.org/wiki/Transmission_Control_Protocol
„...TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes)...“

ano, a RFC 793 nám praví, že checksum je 16 bitová hodnota, při jakékoliv změně mám šanci 1 ku 65536, že se checksum neporuší. Nemluvě o tom, že samotná hlavička checksum není chráněná proti poškození nebo změně. Teď otázka za dva bludišťáky, co se stane, když prohodím libovolné dva bity v datech? Nebudu tě dlouho napínat, vůbec nic, checksum bude stejný. Tolik k téhle kontrole, nelze se spolehnout, že data přenesená zkrz TCP jsou neporušena.

Takze nie je dobre nasadzovat na server aplikaciu cez rsync, ale do CI zaradit poslicka ktory do datacentra privezie bednicku diskiet? :D

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #12 kdy: 23. 11. 2021, 16:29:41 »
rsync je trochu jiná věc, ten umi kontrolovat integritu vlastním kontrolním součten. Samotné TCP takovou vlastnost nemá a jeho kontrola je nedostatečná.

Pokud jde o příklad v dotazu:

Kód: [Vybrat]
dd if=/dev/vdb bs=4M | ssh root@192.168.1.1 'dd of=/dev/sdd bs=4M'

Chybí jakékoliv ověření, že se nahrála všechna data, bez zapnutého pipefail se ani nedozvím, jestli ssh přenos dopadl v pořádku a vše se na druhé straně uložilo. SSH má dostatečnou kontrolu integrity přenášených dat.

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #13 kdy: 23. 11. 2021, 17:12:50 »
Chybí jakékoliv ověření, že se nahrála všechna data, bez zapnutého pipefail se ani nedozvím, jestli ssh přenos dopadl v pořádku a vše se na druhé straně uložilo.

Zapnutí pipefail myslíte např. takto?

Kód: [Vybrat]
set -e -o pipefail; dd if=/dev/vdb bs=4M | ssh root@192.168.1.1 'dd of=/dev/sdd bs=4M'

Re:Nedaří se vytvořit bitovou kopii disku
« Odpověď #14 kdy: 25. 11. 2021, 12:10:19 »
Zapnutí pipefail myslíte např. takto?

Kód: [Vybrat]
set -e -o pipefail; dd if=/dev/vdb bs=4M | ssh root@192.168.1.1 'dd of=/dev/sdd bs=4M'

Ano, přesně takhle. Způsobí to, že pokud jakýkoliv příkaz v řadě selže, selže i celý výraz, bez zapnutí se předává dál pouze exit code posledního příkazu, tj. ssh, pokud by ale selhalo čtení z disku, nedozvíš se to a příkaz doběhne v pořádku, proto je potřeba to zapínat.