Data-Recovery

恢復 reiserfs 硬碟

  • April 18, 2019

我無法安裝我的 300GB 外部(在外部機箱中)硬碟的單個分區。fsck 工具都沒有添加任何東西,它們甚至無法辨識分區。我忘記了自己使用的是 ext4 還是 reiserfs。硬碟好像沒問題。Testdisk 看到了一個 linux 分區,但沒有提供更多細節。

直到…我跟著Recovering ext4 superblocks並嘗試了該sudo losetup -v -o $i /dev/loop1 /dev/sdc命令。現在 testdisk 至少給了我一個綠色標籤,告訴我它是一個 reiserfs 3.6 分區並獲得正確的設備標籤!我特別幸運i=32768

$ dmesg
[10147.132161] REISERFS (device loop1): found reiserfs format "3.6" with standard journal
[10147.132204] REISERFS (device loop1): using ordered data mode
[10147.132206] reiserfs: using flush barriers
[10147.132335] REISERFS (device loop1): journal params: device loop1, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30
[10147.132745] REISERFS (device loop1): checking transaction log (loop1)
[10147.133630] REISERFS warning: reiserfs-5090 is_tree_node: node level 61404 does not match to the expected one 4
[10147.133638] REISERFS error (device loop1): vs-5150 search_by_key: invalid format found in block 67403788. Fsck?
[10147.133644] REISERFS (device loop1): Remounting filesystem read-only
[10147.133652] REISERFS error (device loop1): vs-13070 reiserfs_read_locked_inode: i/o failure occurred trying to find stat data of [1 2 0x0 SD]
[10147.133660] REISERFS (device loop1): Using r5 hash to sort names

如您所見,我無法安裝它,但對我來說,我似乎已經接近了:

$ sudo mount -t reiserfs /dev/loop1 /mnt
mount: /dev/loop1: can't read superblock

我是否因為跳過了一些字節而看到了鬼魂?為什麼 testdisk 沒有從原始 /dev/sdc1 中看到這個?我主要使用只讀工具,但我可能要求 testdisk 寫入一次(寫入分區表?)所以我可能會失去部分,但我不懷疑大多數可以恢復。最重要的是,我如何從這裡繼續?

我可以在原始 /dev/sdc1 上執行 reiserfsck,但如果有原因使偏移效果更好,我如何首先將它合併到我的 HDD 上?

請適當地指出您的解決方案的含義(有多乾淨?如果它寫我想知道)。我可以放棄磁碟上的數據(不是個人的),但如果它很容易修復,我會喜歡的。此外,Foremost 似乎能夠恢復我的文件,但我沒有空間將它們寫入。

更新1:奇怪的是,我在實際筆記型電腦上看到的結果比在 Ubuntu LiveCD 上要少(也許這是我遇到麻煩的原因)。我嘗試了一些東西,如果我使用上面的 losttup 然後執行,我只能從 reiserfsck 獲得一些聰明reiserfsck --check /dev/loop1。然而,它似乎中止了重播交易。我得到:

[  682.743728] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[  682.743734] ata1.00: ST-ATA: DRQ=0 without device error, dev_stat 0x50
[  682.743740] ata1.00: failed command: DEVICE CONFIGURATION OVERLAY
[  682.743747] ata1.00: cmd b1/c2:00:00:00:00/00:00:00:00:00/40 tag 0 pio 512 in
[  682.743749]          res 50/00:00:00:00:00/00:00:00:00:00/40 Emask 0x202 (HSM violation)
[  682.743753] ata1.00: status: { DRDY }
[  682.743763] ata1.00: hard resetting link
[  683.060965] ata1.01: hard resetting link
[  684.087234] ata1.01: failed to resume link (SControl 0)
[  684.243064] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[  684.243086] ata1.01: SATA link down (SStatus 0 SControl 0)
[  684.283150] ata1.00: configured for UDMA/133
[  684.283860] ata1: EH complete
[  727.846495] usb 2-1.3.1: reset high-speed USB device number 6 using ehci_hcd
[  766.757684] usb 2-1.3.1: reset high-speed USB device number 6 using ehci_hcd

這是驅動故障嗎?看起來不像。

UPDATE2:它必須重新創建日誌頭,然後必須重新創建超級塊,現在它正在重建樹(但至少它正在做某事)。根據我的經驗,這意味著我不會以連貫的方式獲取我的數據:-)。但這一切都是在循環設備中完成的。這讓我回到了最初的問題:我將如何從循環設備中的工作分區返回到可直接訪問的工作分區(我想是 63 個柱面)?

UPDATE3:我重建了這棵樹,並找回了一些東西。第二天嘗試掛載時,再次無法掛載。總的來說,它表現出隨機行為。我認為硬碟實際上已經死了。SMART 數據是我嘗試的第一件事,但它永遠無法訪問,我 - 錯了嗎?- 假設這是因為外殼。我嘗試使用新分區對其進行格式化,但即使這樣也不會在格式化之後停留很長時間。

恢復損壞的 reiserfs 分區有時會破壞您嘗試恢復的數據(我知道,我已經做到了)。

因此,首先,將整個磁碟的驅動器級映像帶到其他位置。

dd if=/dev/source of=/home/diskimage.img

獲取磁碟映像後,然後,並且只有在那時,嘗試 fsck 或其他恢復。

有幾個連結可以幫助嘗試恢復 reiserfs。我給你一對。

很多“恢復 reiserfs”或“reiserfs 分區失去”的連結以及商業恢復服務的連結,我認為你不是在尋找……

引用自:https://unix.stackexchange.com/questions/40436