Saya memiliki hard drive yang tampaknya telah mengembangkan beberapa jenis masalah perangkat keras di jurnal. Ini mencegah drive dimuat. Menjalankan mount -r -t ext4 /dev/sda5 /mnt/root
hasil di kernel memuntahkan berikut:
[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326] res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
[ 1420.783175] 08 0a 9d e1
[ 1420.785972] sd 0:0:0:0: >[sda]
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB:
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal
Saya hampir tidak mengerti apa artinya ini, tetapi ini jelas terlihat seperti masalah perangkat keras yang mencegah jurnal dimuat. Apakah ada cara untuk mengatasi ini? Bisakah jurnal, misalnya, dipindahkan ke offset yang berbeda sambil membiarkan sisa drive sebagian besar utuh? Saya tidak punya niat untuk terus menggunakan drive; Saya hanya ingin memasangnya sehingga saya dapat menyalin beberapa file penting.
hard-disk
data-recovery
ext4
JSB ձոգչ
sumber
sumber
fsck
sistem file?Jawaban:
Untuk me-mountnya read-only, tanpa memutar ulang jurnal sehingga Anda dapat mengakses file Anda (Anda mungkin akan kehilangan beberapa perubahan yang belum dilakukan ke fs biasa):
mount -o ro,noload
...sumber
Lihatlah output dari
smartctl -a /dev/sda
. Jika itu bukan masalah kabel maka disk mungkin sekarat. Jika Anda tidak memiliki cadangan baru-baru ini, Anda harus mencoba menyalin konten perangkat blok (tanpa pemasangan) menggunakan dd_rescue atau dd dengan opsi masing-masing.Setelah itu Anda dapat mencoba
hdparm --write-sector
(selalu lucu pilihan "SANGAT BERBAHAYA" ini ...).Pilihan lain adalah membuat perangkat DM yang melewati sektor yang rusak. Itu tidak memulihkan isinya, tentu saja. Anda harus mengonversi offset sda5 (134913505) menjadi offset sda5 (cari tahu jumlah sektor pertama dari sda5 dan kurangi). Anggap offset sda5 adalah 12345. Anda membuat perangkat blok yang sektornya 12345 tidak dipetakan ke sda5 tetapi di tempat lain (misalnya perangkat loop). Definisi perangkat (untuk pembuatan dmsetup) terlihat seperti ini:
Anda tidak akan seberuntung itu hanya ada satu sektor yang rusak. Anda dapat memetakan sebanyak yang Anda inginkan (menghasilkan perangkat DM yang menghasilkan angka nol untuk sektor-sektor tersebut tetapi dapat ditulisi) tetapi menghitung offset di loop0 mungkin menjadi hal yang menyenangkan. Pilihan lain adalah menggunakan perangkat virtual dengan ukuran yang sama untuk memetakan dan menggunakan thin provisioning atau snapshot (dengan ukuran bongkahan kecil, misalnya 1 sektor) dari perangkat target nol.
Edit 1
Perangkat loop seharusnya tidak mengarah ke file pada disk yang sama (sda), tentu saja.
sumber
--write-sector
adalah FAR dari "berbahaya". Bahkan, ini sebenarnya adalah pilihan ideal untuk digunakan setiap sektor tunggal korup tertentu mencegah Anda dari mendapatkan gambar sektor mentah terus menerus (dd
akan ditebus dengan "Kesalahan Perangkat I / O"; beberapa hdds bahkan akan perlu untuk siklus daya mesin ( !) untuk dikenali oleh OS lagi). Namun, Anda harus tahu tentang skrip shell jika Anda ingin menggunakan--write-sector
untuk rentang sektor .Anda dapat mem-boot dalam mode pemulihan, di mana FS akan dipasang hanya-baca, dan menyalin barang-barang Anda.
sumber