Btrfs partíció véletlen törlése

Sziasztok !

Egy win10 telepítésnél törölve lett egy btrfs partíció.

A win10 telepítőjében csak addig jutott a dolog, hogy a kiválasztott lemez (btrfs) törölve lett. Semmi más nem történ, nem lett formázva és a telepítés itt le is lett állítva.

Fedora Linux alol a gpart ezt hozza a hdd-ről.

gpart /dev/sdb

Begin scan...
Possible partition(Btrfs volume), size(1907728mb), offset(1mb)
End scan.

Checking partitions...
Partition(Linux ext2 filesystem): primary  
Ok.

Guessed primary partition table:
Primary partition(1)
  type: 131(0x83)(Linux ext2 filesystem)
  size: 1907728mb #s(3907026944) s(2048-3907028991)
  chs:  (0/32/33)-(1023/254/63)d (0/32/33)-(243201/78/13)r

Primary partition(2)
  type: 000(0x00)(unused)
  size: 0mb #s(0) s(0-0)
  chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(3)
  type: 000(0x00)(unused)
  size: 0mb #s(0) s(0-0)
  chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Primary partition(4)
  type: 000(0x00)(unused)
  size: 0mb #s(0) s(0-0)
  chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Talán az adatok megvannak, de nem tudom mit kellene tenni hogy a partíciót helyreállítsam.

Köszönöm, ha tudtok segíteni

Hozzászólások

Szerkesztve: 2024. 04. 21., v – 00:49

Kis szerencsével csak a partíciós táblád veszett el, a partíció tartalma nem.

A win10 telepítőjében csak addig jutott a dolog, hogy a kiválasztott lemez (btrfs) törölve lett.

Ennek némileg ellentmond, hogy most egy olyan partíciós táblád van, amiben össz-vissz egyetlen ext2-es partíció található (ami több, mint furcsa, tekintettel arra, hogy win10-et akartál telepíteni). De lehet, hogy a btrfs is ugyanazt a kódot használja, mint az ext2, és nem is lett törölve a lemez (ekkor viszont továbbra is működnie kellene).

Talán az adatok megvannak, de nem tudom mit kellene tenni hogy a partíciót helyreállítsam.

Először is, meg kell keresni, hol kezdődik a btrfs partíció. Ehhez olyan szektort kell keresni, ahol a 40. bájttól a _BHRfS_M sztring található, majd a címből kivonni 0x10000-t, és elosztani 512-vel. Ha a gpart nem téved, akkor ez valószínűleg a 2048-as szektor lesz nálad. A partíció mérete pedig ugyanezen szektoron, a 70. bájttól található, 8 bájton.

Szóval én a helyedben először is
1. törölném a partíciós táblát, majd
2. hozzáadnék egyetlen új partíciót, aminek a kezdő szektora 2048, a mérete pedig 1907728mb, aztán
3. megpróbálnám felmountolni.

Ha szerencséd van, simán menni fog, és ott lesznek a fájljaid. Ha nincs szerencséd, akkor próbálj meg másik kezdőszektort keresni.

Edit: az jutott még eszembe, hogy lehet, a win10 telepítő csak a GPT-t törölte, a PMBR-t nem, azért van az, hogy a gparted talál egy másolatot. Ekkor esetleg próbálj meg GPT-t hozzáadni a fenti paraméterekkel, esetleg nézd meg, hogy tud-e a gparted PMBR-ből GPT-t létrehozni (azt már használtam, hogy GPT-ből PMBR-t, de a másik irányra még nem volt szükségem, így nem tudom, azt tudja-e.) Ha ez a helyzet, akkor azt tudom elképzelni, hogy azért romlott el, mert az fstab-odban nem device file van megadva (az továbbra is működne), hanem UUID (az viszont nem, mert csak a GPT tárol UUID-t, a PMBR-ben nincs ilyen).

Gpt-re csináltam egy partíciós táblát és egy btrfs partíciót ami hibával leált. :(

Nem jutok előrébb

Ezt írta a GParted

A fájlrendszer nem ismerhető fel! A lehetséges okok:
- A fájlrendszer sérült
- A fájlrendszer ismeretlen a GParted előtt
- Nem áll rendelkezésre fájlrendszer (formázatlan)
- A(z) /dev/sdb1 eszközbejegyzés hiányzik

Valószínü, hogy ez ennyi volt?

Valószínü, hogy ez ennyi volt?

Attól függ, hogy a következő parancsnak mi a kimenete. Ide tudnád másolni?
dd if=/dev/sdb of=/dev/stdout bs=512 count=1 iseek=2176 | hexdump -C
Ha a fenti parancs kimenete csupa nulla bájt, akkor mindegy, vége a dalnak. Ha egy btrfs szuperblokkra emlékeztet, akkor van még remény.

Egyébként mennyire fontos adatok voltak rajta? Van még lehetőség, de nem biztos, hogy megéri ennyire belemászni.

Rengeteg pl PEF, xmp fájl van ezen a hdd-n Már elkészült / konvertált fotók raw fájljai Ezek az mai modern "negatívok" amikkel illik rendelkezni egy fotósnak a régebbiekről van mentés de az újabb képek csak elkészített formában vannak meg.  

Nulla az van benne de szerencsére nem csak az nem csak az.

dd if=/dev/sdb of=/dev/stdout bs=512 count=1 iseek=2176 | hexdump -C
1+0 records in
1+0 records out
00000000  3b b8 32 f8 00 00 00 00  00 00 00 00 00 00 00 00  |;.2.............|
512 bytes copied, 0,000430905 s, 1,2 MB/s
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  4c 95 00 71 1f 67 4e 95  8e 33 85 30 68 cc 0c d1  |L..q.gN..3.0h...|
00000030  00 00 01 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000040  5f 42 48 52 66 53 5f 4d  06 00 00 00 00 00 00 00  |_BHRfS_M........|
00000050  00 c0 d2 01 00 00 00 00  00 40 50 01 00 00 00 00  |.........@P.....|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000070  00 00 00 c1 d1 01 00 00  00 40 02 00 00 00 00 00  |.........@......|
00000080  06 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000090  00 10 00 00 00 40 00 00  00 40 00 00 00 10 00 00  |.....@...@......|
000000a0  81 00 00 00 06 00 00 00  00 00 00 00 00 00 00 00  |................|
000000b0  00 00 00 00 03 00 00 00  00 00 00 00 41 03 00 00  |............A...|
000000c0  00 00 00 00 00 00 00 00  00 01 00 00 00 00 00 00  |................|
000000d0  00 00 00 00 c1 d1 01 00  00 00 00 80 81 00 00 00  |................|
000000e0  00 00 10 00 00 00 10 00  00 00 10 00 00 00 00 00  |................|
000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000100  00 00 00 00 00 00 00 00  00 00 00 6d 85 5d 58 ee  |...........m.]X.|
00000110  20 4c 54 be c8 78 32 11  fc a2 46 4c 95 00 71 1f  | LT..x2...FL..q.|
00000120  67 4e 95 8e 33 85 30 68  cc 0c d1 00 00 00 00 00  |gN..3.0h........|
00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

 

Jó hír, hogy ez egy valós btrfs szuperblokknak tűnik, úgyhogy nincs még minden veszve! Én a helyedben létrehoznám azt a partíciót (mondjuk a legfapadosabb fdisk-el, nem valami csilivili csodaproggival), majd felcsatolnám a /dev/sdb1-et. Szerintem a gparted-ben valami félremehetett (mert a 2048-as kezdőszektoron nagyon is kéne lennie egy btrfs-nek) és a hiba miatt nem is írta ki a partíciós táblát.

Azért javaslok fapados partícionálót, mert azok nem foglalkoznak semmivel (pl. hogy van-e fájlrendszer a megadott helyen), csak lementik a szektorszámokat, így azzal van a legtöbb esélyed. Fdisk esetén például:
sudo fdisk /dev/sdb
g
n
1
2048
+1907728M
w

Itt a parancsok: g - új gpt, n - új partíció, 1 - első partíció, 2048 - kezdő szektor, +1907728M - méret, w - kiírás és kilépés.
Ezután a sudo dmesg végén látnod kell, hogy a Linux kernel listázza az sdb1-et (azaz beolvasta az újonnan kiírt partíciós táblát), és a /dev alatt is meg kell, hogy jelenjen az sdb1.

A dmesg végén valóban van sdb1

hibaüzi nélkül lefutott

Megpróbáltam felmountolni:

# mount /dev/sdb1 /mnt
mount: /mnt: fsconfig system call failed: Can't find a SQUASHFS superblock on sdb1.
      dmesg(1) may have more information after failed mount system call.

Pl a gparted nem látja a btrfsnek,  ismeretlennek írja

 

Köszönöm, mondjuk a Cél-ból gondolhattam volna

De nem akarja amit szeretnék :(

mount  /dev/sdb1 /mnt -t btrfs  
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other
error.
      dmesg(1) may have more information after failed mount system call.

 

Akkor ez sajnos bukta. Az lehetett, hogy mikor az ext partíciót létrehoztad rajta, akkor nyomtál egy fájlrendszerkészítést is, ami a korábbi Btrfs partíció területén felülírt dolgokat, azt kb. semmi nem hozza vissza már szerintem. Mert maga a partíció törlése és létrehozása nem bántja a partíció tartalmát, csak a partíciós táblába ír bejegyzéseket. De amikor fájlrendszert is létrehozol rajta, az viszont ír konkrétan a partíció lemezterületére is, potenciálisan felülírva dolgokat. Tehát nem az volt itt a baj, hogy a Btrfs-partíciót törölted, hanem a helyén meggondolatlanul olyan programmal hoztál létre másik partíciót, ami egyben formázást is megejtett (ez lehetett a Windows telepítő is). Ezért is jók a low level toolok (fdisk, cfdisk, stb.), mert azok csak particionálnak, de a fájlrendszert nem hozzák rajta létre, azt jobb külön lépésben mkfs-sel magadnak csinálni. Sajnos a normi GUI particionálóprogramok átka, hogy marha felhasználóbarátak, szépen beállítod, de egyben csinálnak mindent, nem bontja neked kontrollálhatóan low level lépésekre.

Esetleg nagyon extrém esetben ez nem egy magányos Btrfs partíció volt, hanem valami multivolume, multidrive konfigurációban szerepelt esetleg? Amit még ajánlok, hogy ebből okulva a jövőben legyen mindig backupod, ez Btrfs-nél rettenet könnyű is, mert csinálni tud snapshotokat, tehát semmilyen speciális mentő, meg GUI lószutyok nem kell hozzá, se a backup létrehozásához, se a helyreállításhoz, csak 1-1 sornyi parancs gépelése a terminálba, tty konzolba. Még rebootot se igényel mentéskor.

The world runs on Excel spreadsheets. (Dylan Beattie)

Ez alapján nem reménytelen, arra tippelnék, hogy rossz helyen kezdődik a partíció (mármint nem ott, ahol korábban). Ha másból nem, akkor a magicból visszafelé lehet számolni, és addig tologatni a partíció kezdetét, míg jó nem lesz.

Ugye ahogy már korábban is javasolták, a 0. lépés ilyenkor mindig az, hogy egy másolatot készíteni a teljes diskről, és azon ügyeskedni, hogy rosszabb már ne legyen.

Aha, vannak itt még érdekes dolgok: https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg04737.html

Szerkesztve: 2024. 04. 21., v – 00:52

Próbáld cfdisk-ben, vagy gpart-ban újra létrehozni, azokkal az adatokkal, amikkel a gpart írja, 1 MB-os eltolás (ez általában 2048 szektor, ha 512 bájtos szektorokról van szó), 1907728 MB-os méret, általában ezek a programok ezt M-mes jelöléssel ismerik, amin MiB-ot kell érteni. Fontos még, hogy ha GPT-s partíciós tábla volt (már ha valóban az volt), akkor most is az legyen. Jelenleg MBR-es partíciós táblád van.

Ha szerencséd van, akkor valóban csak a partíciós tábla veszett el, a partíción lévő adatok nem.

The world runs on Excel spreadsheets. (Dylan Beattie)

Nem mostanában kellett használnom. Az biztos, hogy generált fájlneveket használt, mert a könyvtárszerkezetet nem tartotta meg és különböző könyvtárakban biztosan voltak azonos fájlnevek amik nem írtál felül egymást. Volt egy kapcsoló, -M talán amivel ki lehetett írni outputra az eredeti fájlnevet és azt a nevet ami néven a mentett fájl található. Illetve a mentett fájlok nevébe is beleírható az eredeti fájlnév a generált mellé. 

Ahogy mások írták érdemes előbb imaget készíteni és arról menteni, akkor további kockázatok nélkül lehet kísérletezni a pontosabb paraméterezéssel. 

Sub

"Nem akkor van baj amikor nincs baj, hanem amikor van!"
Népi bölcsesség

Ha tényleg csak a partíciós tábla ment félre, akkor testdisk.

Ezt még senki nem írta fentebb, de ugye tudod, hogy a rescue első lépése, hogy image-et készítesz a diszkről, mielőtt nagyobb bajt csinálnál?

Bár 2007 óta eltelt pár év, de nekem ez "vadász, vadász..." sztorinak tűnik :-D