[ Megoldva ] Ext4 adatmentés gyorstalpaló

Édesanyám laptopjából kihalt a wincseszter.

Bár a legfontosabb adatok felhőben mentve vannak, de helyhiány miatt csak a legfontosabbak, így jó lenne a többiből minél többet visszanyerni.

Ext4 fájlrendszer, boot közben superblock hibával kidob az initramfs, hogy manula fsck. Egy live CD-ről indítva az sda1 sda2 sda3 megvan, de mountolni nem lehet.

Mielőtt fsck-t indítanék, dd-vel lemásolnám a teljes lemezképet. Már ebben sem vagyok biztos, hogy ha hibás blokkok vannak a lemezen, akkor egyáltalán a dd mit csinál?

Vagy ne dd-vel másoljak lemezképet?

Mivel 1TB-os a lemez, de várhatóan félig sincs, szívesen csinálnék tömörített lemezképet. De ha a dd-t gzip-be irányítom, utána - gondolom - nem tudom mountolni.

Most veszek új lemezt, de az 1T lemezkép nehezen lesz kezelhető.

Tudnátok segíteni, hogy milyen lépésekben, milyen eszközökkel érdemes nekifutnom, hogy a lehető legnagyobb eséllyel nyerjek vissza adatokat?

Egyelőre a terv: dd, majd az image fájlra egy fsck, és utána mount. Bár félő, nincs nagyobb lemezem, mint 1TB, így tán a lemezkép el sem fog férni sehol.

Ha vannak erre X eszközök, annak örülnék, bár nem remélem. Talán read only tesztek és ellenőrzések, amik megmondják, hogy mit lehetne visszanyerni, ha élesben is lefutnának?

Hozzászólások

Ne dd-t használj, hanem dd_rescue-t, az való erre.

Ha már kész az image, akkor a photorec (testdisk) lesz a barátod, amivel le tudod menteni azt, ami még megmaradt az adatokból.

Ezekhez viszont kell a hely, a dd_rescue-nak is szüksége van legalább annyi helyre, ahol elfér az image, a photorec-nek pedig szintén kell a hely a mentett adatokhoz.

https://eVIR.hu
Elektronikus Vállalatirányítási Információs Rendszer

Kérdés hogy egy-egy hibás blokk, vagy fejsérülés. Utóbbi esetben ugyan az első szektor néhány blokkját beolvassa, így megvan a partíciós tábla az első blokkból (sda1, sda2, sda3 bejegyzés), de valójában mechanikailag akad a fej és tovább sem tudod olvasni, azaz nem csak 1-1 szektor olvashatatlan, hanem az egész.

smartctl -A /dev/sda   mit ír?

 

A sérült lemez már egy külső USB rack-ben van, így a smartctl -a /dev/sdb kimenete:

smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.19.0-14-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1770
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       7233
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   078   078   000    Old_age   Always       -       9006
 10 Spin_Retry_Count        0x0033   244   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       7232
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       1377
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       17
193 Load_Cycle_Count        0x0032   082   082   000    Old_age   Always       -       185173
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       24 (Min/Max 14/45)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       1136
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       0
222 Loaded_Hours            0x0032   082   082   000    Old_age   Always       -       7472
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       181
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0

Ebből látszik valami érdemleges?

197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       1136

Ezt utálom. Képes beborítani a szervert is, amikor rá akar olvasni a Linux. Sok van, mintha már régebb óta hízna a háttérben ez a probléma.
Viszont ha ezért borul meg, akkor az a jó hírem hogy vélhetőleg nincs fejhibád, csak ez bolondozik.

Ekkor van esélyed dd_rescue és hasonlókkal. Az imént írt 1136 szektor menthetetlen (=olvashatatlan), de a többi még menthető lehet.
A mentett 1 TB-os image-re kell az e2fsck. A lost+found/ mappát is nézd meg az fsck-zott fájlrendszeren.

Megy a ddrescue, de persze éjjel takarékra rakta magát a gép, így még csak 300GB-nál tart... De közben elgondolkoztam: jól tettem, hogy a teljes sdc-t másolom? nem az sdc1 partícióra kellett volna elindítanom a ddrescue parancsot? Akkor ugyanis a másolás után egyszerűen tudnám fsck-val javítani, felcsatolni. De ha a teljes drive van egy fájlban, hogyan fogom a partícióit megcímezni az fsck-val? A fizikai eszköz rádugásánál ez automatán megtörténik, de itt?