Jak postupovat při záchraně dat: Porovnání verzí

m
úroveň nadpisů, interpunkce a typografie, semtam další jazykové úpravy, v sekci o virtualizaci oprava věcné chyby (velikost sektoru, ne bajtu), kategorie
m (úroveň nadpisů, interpunkce a typografie, semtam další jazykové úpravy, v sekci o virtualizaci oprava věcné chyby (velikost sektoru, ne bajtu), kategorie)
Stává se, že se vám do rukou dostane neznámý disk, o jehož obsahu nemáte ani tušení a přitom z něj máte zachránit, co se dá. Někdy také "zdědíte"„zdědíte“ stroj, který instaloval kdysi dávno někdo před vámi, a vy máte zdokumentovat, kde má co nainstalované. V takovém případě se vám mohou hodit následující postupy.
 
==Připojení neznámého disku==
 
{{Výpis|1={{Linux:root}}[[Linux:tail|tail]] -f /var/log/messages}}
 
Ukázka výpisu...:
 
<small>
{{Výpis|1={{Linux:root}}[[Linux:fdisk|fdisk]] -l /dev/sdb
 
Disk /dev/sdb: 250,0 GB, 250  059  350  016 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 30  401
Jednotky = cylindry po  16065 * 512 = 8  225  280 bajtech
Identifikátor disku: 0x00000000
 
}}
 
Z výpisu je zřejmé, že je disk rozdělen na tři diskové oddíly, z toho první dva byly součástí linuxového softwarového raiduRAIDu. Třetí diskový oddíl je běžného typu, tudíž na něm mohl být nejspíš nějaký souborový systém.
 
==Reaktivace softwarového raiduRAIDu==
 
Zkusíme tedy nejdřív zjistit, jak je to s oddíly, které byly určeny pro raidRAID.
 
{{Výpis|1={{Linux:root}}[[Linux:mdadm|mdadm]] --examine --scan /dev/sdb1 /dev/sdb2
}}
 
Jak vidno, tyto oddíly patří do raid1RAID&nbsp;1 (mirror), tudíž z nich je možné kompletně obnovit původní raidováRAIDová pole. Neúplná raidováRAIDová pole obnovíme velice snadno, neboť předchozí výpis odpovídá syntaxi v souboru <code>mdadm.conf</code>.
 
Můžeme tedy tento výpis rovnou přidat do našeho konfiguračního souboru.
{{Výpis|1={{Linux:root}}[[Linux:mdadm|mdadm]] --examine --scan /dev/sdb1 /dev/sdb2 >> /etc/mdadm/mdadm.conf}}
 
{{Pozn|V případě, že v systému, do kterého tento raidRAID chcete připojit, již existuje jiný raidRAID se stejným číslem, jako má některé z polí na připojeném disku, je třeba otevřít soubor <code>/etc/mdadm/mdadm.conf</code> a změnit pořadové číslo pole, které by se mohlo dostat do konfliktu.
}}
 
Poté, cokdy máme upraven soubor <code>/etc/mdadm/mdadm.conf</code>, můžeme provést reaktivaci nově přidaných polí..
 
{{Výpis|1={{Linux:root}}[[Linux:mdadm|mdadm]] -A -s
}}
 
Sese můžete přesvědčit o úspěšnosti reaktivace.
 
==Zjišťování použitého souborového systému==
 
Nyní je je třeba zjistit, jak to na těchto diskových polích vypadá. Je nad nimi ještě další vrstva, nebo přímo souborový systém?
 
Abyste zabránili nechtěnému poškození, je vhodné si vyexportovat počátečníchpočáteční oblast disku do dočasného souboru a dále pracovat s ním.
 
{{Výpis|1={{Linux:root}}[[Linux:dd|dd]] if=/dev/md0 bs=512 count=255 of=/tmp/md0-raw-start
255+0 vstoupivších záznamů
255+0 vystoupivších záznamů
130  560 bajtů (131 kB) zkopírováno, 0,0396919  s, 3,3 MB/s
}}
 
Na vyexportovaný soubor lze pak pustit utilitu [[Linux:file|file]]:
 
{{Výpis|1={{Linux:root}}[[Linux:file|file]] -s /tmp/md0-raw-start
}}
 
Ta prozradí nejenom typ souborového systému, ale také UUID diskového oddílu. Když se zkusíme jen tak pro zajímavost podívat na začátek třetího diskového oddílu, tak se dozvíme, že byl součástí LVM svazku:
 
{{Výpis|1={{Linux:root}}[[Linux:file|file]] -s /tmp/sdb3-raw-start
}}
 
==Obnova LVM svazku==
 
a kdyžKdyž jsme se do vyexportovaného souboru podívali editorem, nalezli jsme v něm následující zajímavou část:
 
{{Výpis|1=
}}
 
Z těchto údajů lze zjistit nejenom, na kterém stroji a kdy byl LVM svazek vytvořen, ale také (podle UUID) zjistit, zda byl diskový oddíl součástí LVM svazku i v okamžiku odpojení. Pak lze, přinejmenším část uložených dat obnovit. U výše uvedeného příkladu lze již zběžným pohledem odhalit, že diskový oddíl byl před vytažením disku ze svazku odstraněn, tudíž s největší pravděpodobností již neobsahuje žádná data.
 
==Jak se dostat na diskové oddíly==
 
Systém by si měl většinou při připojení externích disků poradit a pro příslušnéjednotlivé diskové oddíly vytvořit příslušná zařízení. Někdy -, zvláště pokud je prostor na disku nějakým způsobem poškozen, nebo pokud jde o pouhý obraz disku vytvořený přes [[Linux:fdisk|fdisk]], si je třeba poradit jinak. Při– při [[Linux:mount|mountu]] použít tzv. '''offset''' . Offsetem se udává jak, kolik .. se má při mountu přeskočit. Zjistit, jakou velikost offsetu musíte použít, můžete takto:
 
{{Výpis|1={{Linux:root}}[[Linux:fdisk|fdisk]] -l /dev/sdb
 
Disk /dev/sdb: 250,0 GB, 250  059  350  016 bajtů
hlav: 255, sektorů na stopu: 63, cylindrů: 30  401
Jednotky = cylindry po  16065 * 512 = 8  225  280 bajtech
Identifikátor disku: 0x5b6ac646
 
/dev/sdb4 : start= 0, size= 0, Id= 0
}}
 
 
{{Výpis|1={{Linux:root}}[[Linux:dd|dd]] if=/dev/sdb bs=512 count=255 skip=63 of=/tmp/sdbs-raw-start
255+0 vstoupivších záznamů
255+0 vystoupivších záznamů
130  560 bajtů (131 kB) zkopírováno, 0,0207372  s, 6,3 MB/s
{{Linux:root}}[[Linux:file|file]] -s /tmp/sdbs-raw-start
/tmp/sdbs-raw-start: x86 boot sector, Microsoft Windows 98 Bootloader, code offset 0x5a, OEM-ID "MSWIN4.1", sectors/cluster 64, Media descriptor 0xf8, heads 255, hidden sectors 63, sectors 488392002 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 59611, reserved3 0x800000, serial number 0x4b1a02bd, label: "WD Passport"
{{Výpis|1={{Linux:root}}[[Linux:mount|mount]] -t vfat /dev/sdb /mnt -o offset=32256}}
 
==Oprava poškozeného souborového systému==
 
Po zjištění, jaký souborový systém neznámý disk obsahuje, je dobré provést jeho kontrolu. Hovorově se tato kontrola souborového systému nazývá ''čekování''. Tento slangový výraz vychází z anglického výrazu ''check'' - ověřit(„ověřit“), ze kterého vycházejí i názvy pro utility, kterými se tato kontrola provádí. Obvykle je totiž v systému najdete pod názvem, který začíná '''fsck''' ( z angl. '''''f'''ile'''s'''ystem '''c'''echec'''k''''' - ověření souborového systému). Narazíte-li tedy na aplikaci, která má v názvu '''fsck''', půjde vždy s největší pravděpodobností o utilitu, která slouží ke kontrole a opravě souborového systému.
 
Jelikož pojmenování těchto utilit není zcela jednotné, jsou u Debianu v adresáři <code>/sbin</code> skripty, které sjednocují volání těchto kontrolních utilit podle následujícího vzoru:
{{Výpis|1=fsck.&lt;typ_souborového systému&gt;}}
Díky tomu tak nemusíte přemítat, jak se pro onen souborový systém, který potřebujete ověřit vlastně, tato utilita jmenuje.
 
V drtivé většině případů postačí pouhá kontrola, během níž ověřovací utilita sama opraví drobné chybky, které se mohly vyskytnout kupř. při nekorektním vypnutí stroje.
 
{{Pozor|Pozor! Aby bylo možné provést kontrolu souborového systému, nesmí být diskový oddíl připojen pro zápis. MaximálněMůže můževšak být připojen v režimu "Pouze„pouze pro čtení"čtení“.
Nelze-li tedy jinak, je třeba provést před kontrolou kořenového souborového systému tzv. '''remount''' do ''readonly'' režimu (tj. jen pro čtení). Systém je třeba najet do jednouživatelského režimu (''single user mode'') a pak provést následujícím příkazem <code>remount</code>:
{{Výpis|1={{Linux:root}}[[Linux:mount|mount]] -r -o remount /}}
Není-li stroj v jednouživatelském režimu a nějaký démon již s diskem pracuje, pak se vám '''remount''' nepodaří!.
 
; Co si počít v případě, žekdy selže pokus o remount? : V takovém případě se pokuste zjistit pomocí [[Linux:fuser|fuser]] nebo [[Linux:lsof|lsof]], který proces pracuje s diskem, a pak buď službu, která jej spouští, korektně zastavit, nebo ho ''odstřelit'' příkazem [[Linux:kill|kill]] a pokusit se o '''remount''' znovu.
}}
 
===ext2===
 
{{Výpis|1={{Linux:root}}[[Linux:fsck|fsck]] /dev/sda1
}}
 
Jak je zřejmé z ukázky, [[Linux:fsck|fsck]] poznal, že jde o souborový systém ext2, který nebyl v poslední doběminulosti korektně odpojen, a tak provedl kontrolu. U čistého disku s ext2 bez chyb vypadá výpis po kontrole takto:
 
{{Výpis|1={{Linux:root}}[[Linux:fsck|fsck]] /dev/sda1
{{Pozor|Pozor! Stav po nekorektním odpojení se nemusí automaticky opravit při spouštění systému, pokud to nemáte nastaveno v souboru <code>/etc/fstab</code>. Takže i když máte disk připojen a pak ho korektně odpojíte, přesto může stále obsahovat chyby.}}
 
===reiser4===
 
Kontrola disku u reiser4 je sice ukecaná„ukecaná“, ale rychlá.
 
{{Pozn|Při používání reiser4 jsem se setkal s několika nepěknými situacemi. Je však otázkou, do jaké míry je to vina tohoto souborového systému. Kupř. při následující ukázce mi neustále odmítal [[Linux:umount|umount]] neustále odmítal disk s tímto diskovým oddílem korektně odpojit. Pozastavoval jsem kde co. Nakonec jsem vyřešil kontrolu disku jeho přemoutováním do ''readonly'' režimu.
 
A víte, která služba nakonec za tím vězela? <code>/etc/init.d/xfs</code> - X font server. Absolutně je mi záhadou, proč zrovna tato služba, která s tím diskem nemá absolutně nic do činění, blokuje jeho odpojení.}}
 
<small>{{Výpis|1=
}}</small>
 
V případě že na tomto diskovém oddíle je již vše okOK, vypadá výsledek kontroly takto:
<small>{{Výpis|1=
{{Linux:root}}[[Linux:fsck.reiser4|reiser4]] /dev/sdb1
}}</small>
 
==Oprava diskových oddílů virtuálních disků VMware==
 
Používáte-li virtualizaci, takmůže se může stát, že narazíte na problém s poškozeným souborovým systémen na virtuálním disku. S uplatněním výše uvedených technik, jej můžete opravit, aniž by bylo nutné virtuální stroj spouštět.
 
'''Nezapomínejte na vytvoření zálohy!!!'''
 
Než začnete s diskem pracovat, vytvořte jeho kopii pomocí konverzního nástroje [[Linux:vmware-vdiskmanager|vmware-vdiskmanager]], a pomocí mountovací utility [[Linux:vmware-mount|vmware-mount]] zjistěte potřebný '''offset''' -, tj. od kterého sektoru začíná diskový oddíl, který potřebujete opravit. Dále pak pracujte již pouze s touto kopií.
 
{{Výpis|1=
}}
 
{{Pozor|Vytvoření kopie je důležité zejména tehdy, pokud chcete vytáhnout data ze snapshotu. Mountovací utilita [[Linux:vmware-mount|vmware-mount]] totiž při připojení mění tzv. CID disku a mohlo by se vám stát, že byste se potom nedostali do snapshotů, které následovaly. Nástroj [[Linux:vmware-vdiskmanager|vmware-vdiskmanager]] totiž sloučí data z jednotlivých snapshotů, tak, jak postupně předcházelypředcházela.}}
 
Aby bylo možné pracovat s virtuálním diskem, jako by šlo o kopii disku vytvořenou pomocí utility [[Linux:dd|dd]], je třeba připojit virtuální disk jako tzv. '''flat''' disk. Po jeho připojení se v přípojném bodě objeví soubor s názvem <code>flat</code>, se kterým lze dále pracovat.
 
{{Výpis|1=
}}
 
Nyní přichází řada na tzv. '''loop zařízení'''. Pro práci s loop zařízeními je určen nástroj [[Linux:losetup|losetup]]. Ten umožňuje jejich vytváření i rušení. Z výše uvedeného výpisu víme, že diský oddíl, který nás zajímá, začíná 690795 .&nbsp;sektorem. Obvyklá velikost jednoho sektoru je 512 &nbsp;bajtů, a jelikož se velikost offsetu udává v bajtech, vynásobíme počet sektorů velikostí jednoho bajtusektoru a výslednou hodnotu použijeme jako ''offset''.
 
{{Výpis|1=
}}</small>
 
Po opravě disku, nezapomeňte zrušit všechna loop zařízení, která pracují s tímto diskem, a teprve pak jej odmountujte.
 
{{Pozn|Pokud je při opravě reiserfs použita volba '''--rebuild-tree''', je určitě dobré mít log uložený log, protože vám pak umožní identifikovat soubory z adresáře <code>/lost+found</code>.}}
 
}}
[[Kategorie:Linux]]
64

editací