Saya telah membuat dua partisi HDD 2TB ( /dev/sdb1
dan /dev/sdc1
) dalam array RAID 1 yang disebut /dev/md0
menggunakan mdadm
Ubuntu 12,04 LTS Precise Pangolin.
Perintah yang sudo mdadm --detail /dev/md0
digunakan untuk menunjukkan kedua drive sebagai sinkronisasi aktif .
Kemudian, untuk pengujian, saya gagal /dev/sdb1
, menghapusnya, lalu menambahkannya lagi dengan perintahsudo mdadm /dev/md0 --add /dev/sdb1
watch cat /proc/mdstat
menunjukkan bilah progres pembangunan kembali array, tetapi saya tidak akan menghabiskan waktu berjam-jam menontonnya, jadi saya berasumsi bahwa perangkat lunak itu tahu apa yang dilakukannya.
Setelah bilah progres tidak lagi ditampilkan, cat /proc/mdstat
menampilkan:
md0 : active raid1 sdb1[2](S) sdc1[1]
1953511288 blocks super 1.2 [2/1] [U_]
Dan sudo mdadm --detail /dev/md0
menunjukkan:
/dev/md0:
Version : 1.2
Creation Time : Sun May 27 11:26:05 2012
Raid Level : raid1
Array Size : 1953511288 (1863.01 GiB 2000.40 GB)
Used Dev Size : 1953511288 (1863.01 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon May 28 11:16:49 2012
State : clean, degraded
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Name : Deltique:0 (local to host Deltique)
UUID : 49733c26:dd5f67b5:13741fb7:c568bd04
Events : 32365
Number Major Minor RaidDevice State
1 8 33 0 active sync /dev/sdc1
1 0 0 1 removed
2 8 17 - spare /dev/sdb1
Saya telah diberitahu bahwa mdadm secara otomatis mengganti drive yang dihapus dengan suku cadang, tetapi /dev/sdb1
tidak dipindahkan ke posisi yang diharapkan, RaidDevice 1
.
UPDATE (30 Mei 2012): Tes badblocks
baca-tulis destruktif dari keseluruhan /dev/sdb
tidak menghasilkan kesalahan seperti yang diharapkan; kedua HDD baru.
Pada edit terakhir, saya mengumpulkan array dengan perintah ini:
sudo mdadm --assemble --force --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1
Outputnya adalah:
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
Pembangunan kembali sepertinya berjalan normal:
md0 : active raid1 sdc1[1] sdb1[2]
1953511288 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.6% (13261504/1953511288) finish=2299.7min speed=14060K/sec
unused devices: <none>
Saya sekarang menunggu pembangunan kembali ini, tetapi saya berharap /dev/sdb1
untuk menjadi cadangan seperti lima atau enam kali saya mencoba membangun kembali sebelumnya.
UPDATE (31 Mei 2012): Ya, ini masih cadangan. Ugh!
UPDATE (01 Juni 2012): Saya mencoba perintah yang disarankan Adrian Kelly :
sudo mdadm --assemble --update=resync /dev/md0 /dev/sdb1 /dev/sdc1
Menunggu dibangun kembali sekarang ...
UPDATE (02 Juni 2012): Tidak, masih cadangan ...
UPDATE (4 Juni 2012): PB dibesarkan kekhawatiran bahwa saya diabaikan: mungkin /dev/sdc1
yang menghadapi Aku / O error . Saya tidak repot-repot untuk memeriksa /dev/sdc1
karena tampaknya berfungsi dengan baik dan itu baru, tetapi kesalahan I / O menjelang akhir drive adalah kemungkinan yang rasional.
Saya membeli HDD ini untuk dijual, jadi tidak mengherankan bahwa salah satu dari mereka sudah gagal. Plus, tidak satu pun dari mereka memiliki dukungan untuk SMART , jadi tidak heran mereka sangat murah ...
Ini adalah prosedur pemulihan data yang baru saja saya buat dan saya ikuti:
sudo mdadm /dev/md0 --fail /dev/sdb1
sehingga saya bisa mengeluarkan/dev/sdb1
.sudo mdadm /dev/md0 --remove /dev/sdb1
untuk menghapus/dev/sdb1
dari array./dev/sdc1
sudah terpasang di/media/DtkBk
- Memformat
/dev/sdb1
sebagai ext4. - Mount
/dev/sdb1
ke/media/DtkBkTemp
. cd /media
untuk bekerja di daerah itu.sudo chown deltik DtkBkTemp
untuk memberi saya (nama penggunadeltik
) hak untuk partisi.- Apakah menyalin semua file dan direktori:
sudo rsync -avzHXShP DtkBk/* DtkBkTemp
UPDATE (06 Juni 2012): Saya melakukan badblocks
tes mode penulisan destruktif /dev/sdc
, mengikuti prosedur berikut:
sudo umount /media/DtkBk
untuk memungkinkan merobohkan array.sudo mdadm --stop /dev/md0
untuk menghentikan array.sudo badblocks -w -p 1 /dev/sdc -s -v
untuk menghapus hard drive yang dicurigai, dan dalam prosesnya, periksa kesalahan I / O. Jika ada kesalahan I / O, itu bukan pertanda baik. Semoga saya bisa mendapatkan pengembalian uang ...
Saya sekarang telah mengkonfirmasi bahwa tidak ada masalah input / output pada kedua HDD .
Dari semua penyelidikan ini, dua pertanyaan awal saya masih ada.
Pertanyaan saya adalah:
- Mengapa drive cadangan tidak menjadi sinkronisasi aktif?
- Bagaimana saya bisa membuat drive cadangan menjadi aktif?
/dev/sdc1
pada saat itu karena/dev/sdc1
sedang dibaca saat/dev/sdb1
sedang ditulis, dan bad sector dalam/dev/sdb1
akan dipetakan ulang secara transparan selama penulisan.watch -n 60 cat /proc/mdstat
mana60
jumlah detik di antara refresh.Saya memiliki masalah yang persis sama, dan dalam kasus saya, saya telah menemukan bahwa disk raid aktif menderita kesalahan baca selama sinkronisasi. Oleh karena itu disk yang baru berhasil disinkronkan dan oleh karena itu ditandai sebagai cadangan.
Anda mungkin ingin memeriksa kesalahan / var / log / dan log sistem lainnya. Selain itu, mungkin juga merupakan ide bagus untuk memeriksa status SMART disk Anda:
1) Jalankan tes singkat:
2) Tampilkan hasil tes:
Dalam kasus saya ini mengembalikan sesuatu seperti ini:
Saya harus mem-boot distro langsung dan secara manual menyalin data dari disk yang rusak ke yang baru (saat ini "cadangan").
sumber
Saya memiliki masalah yang persis sama dan selalu berpikir bahwa disk kedua saya, yang ingin saya tambahkan kembali ke array memiliki kesalahan. Tapi itu disk asli saya telah membaca kesalahan.
Anda dapat memeriksanya
smartctl -t short /dev/sdX
dan melihat hasilnya beberapa menit kemudiansmartctl -l selftest /dev/sdX
. Bagi saya itu terlihat seperti ini:Saya mencoba memperbaikinya dengan manual ini . Itu tadi menyenangkan :-). Saya tahu Anda telah memeriksa kedua disk untuk kesalahan, tapi saya pikir masalah Anda adalah, bahwa disk yang masih dalam array md telah membaca kesalahan, jadi menambahkan disk kedua gagal.
Memperbarui
Anda harus menjalankan tambahan
smartctl -a /dev/sdX
Jika Anda melihat Current_Pending_Sector> 0 ada sesuatu yang salah197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 69
Bagi saya itu pasti masalah bahwa saya menghapus disk dari serangan hanya untuk pengujian dan penyinkronan ulang tidak dapat dilakukan karena kegagalan membaca. Sinkronisasi dibatalkan setengah jalan. Ketika saya memeriksa disk saya yang masih dalam smartaid raid melaporkan masalah.
Saya bisa memperbaikinya dengan manual di atas dan melihat jumlah sektor yang tertunda berkurang. Tetapi ada banyak dan itu adalah prosedur yang panjang dan membosankan jadi saya menggunakan cadangan saya dan mengembalikan data pada server yang berbeda.
Karena Anda tidak memiliki kesempatan untuk menggunakan SMART, saya kira tes mandiri Anda tidak menunjukkan sektor yang rusak itu.
Bagi saya ini adalah pelajaran: Periksa disk Anda sebelum Anda menghapusnya dari array Anda.
sumber
Saya memiliki masalah serupa dan memperbaikinya dengan menumbuhkan jumlah disk array RAID dari 1 menjadi 2.
sumber
UPDATE (24 Mei 2015): Setelah tiga tahun, saya menyelidiki penyebab sebenarnya dari array RAID 1 yang terdegradasi.
tl; dr: Salah satu drive buruk, dan saya tidak melihat ini karena saya hanya menjalankan tes permukaan penuh pada drive yang baik.
Tiga tahun lalu, saya tidak berpikir untuk memeriksa log tentang masalah I / O. Jika saya berpikir untuk memeriksa
/var/log/syslog
, saya akan melihat sesuatu seperti ini ketikamdadm
menyerah membangun kembali array:Untuk mendapatkan output dalam log, saya mencari LBA bermasalah pertama (14381058, dalam kasus saya) dengan perintah ini:
Tidak heran
md
menyerah! Itu tidak dapat membangun kembali array dari drive yang buruk.Teknologi baru (
smartmontools
kompatibilitas perangkat keras yang lebih baik ?) Telah memungkinkan saya untuk mendapatkan informasi SMART dari drive, termasuk lima kesalahan terakhir (dari 1393 kesalahan sejauh ini):Ahh ... itu akan melakukannya.
Sekarang, saya telah memecahkan pertanyaan ini dalam tiga langkah mudah:
UPDATE (19 Juli 2015): Bagi siapa pun yang ingin tahu, drive akhirnya kehabisan sektor untuk memetakan:
sumber
Dalam kasus saya, itu juga disk sumber yang buruk. Meskipun terlihat pada waktu yang tidak tepat (/ proc / mdstat berkembang di atas 99,9% secara normal - tetapi sebenarnya gagal pada 99,97% yang diakhiri dengan saat sinkronisasi reguler akan selesai). Jadi, Anda perlu memeriksa
dmesg(1)
output - ini akan memberi tahu Anda jika ada kesalahan baca.Anda dapat melihat detail kasus saya di Bug Debian # 767243 . Saya akhirnya berhasil menyelesaikan sinkronisasi dengan memaksa-menimpa beberapa sektor buruk pada disk sumber (yang untungnya tidak dapat digunakan dalam kasus saya, jika tidak akan ada kehilangan data)
sumber
Kamu bisa mencoba
untuk memperbarui drive dan melakukan sinkronisasi ulang.
sumber
/dev/sdb1
masih belum menjadi "aktif" setelah dibangun kembali sebagai cadangan.Tidak yakin apakah itu akan berhasil karena Anda sudah
--add
mengedit disk tetapi--re-add
tampaknya menjadi opsi yang Anda butuhkan.Atau mungkin Anda perlu ke
--grow
perangkat ke 2 disk aktif ,mdadm --grow -n 2
? Tidak diuji jadi hati-hati.sumber
sudo mdadm --grow -n 2
adalah salah satu hal pertama yang saya lakukan, maka dari itusudo mdadm --detail /dev/md0
menunjukkan dua slot. Maaf, itu tidak berhasil.Saya akan merekomendasikan menghapus sdc1, memberi nol pada blok super pada sdc1 dan kemudian menambahkannya kembali.
sumber