Saya memiliki partisi / boot dalam array RAID 1 menggunakan mdadm. Array ini telah mengalami degradasi beberapa kali di masa lalu, dan setiap kali saya menghapus drive fisik, menambahkan yang baru, membawa array menjadi normal, ia menggunakan huruf drive yang baru. Meninggalkan yang lama masih ada dalam array dan gagal. Sepertinya saya tidak bisa menghapus semua komponen yang sudah tidak ada.
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
Inilah yang saya coba untuk menghapus drive dan partisi yang tidak ada. Sebagai contoh /dev/sdb1
,.
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
Yang 8:49
saya percaya merujuk pada angka besar dan kecil yang ditunjukkan --detail
, tetapi saya tidak yakin ke mana harus pergi dari sini. Saya mencoba menghindari reboot atau memulai ulang mdadm.
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
Catatan: Array terdegradasi secara sah sekarang dan saya mendapatkan drive baru di sana saat kita bicara. Namun, seperti yang Anda lihat di atas, itu tidak masalah. Saya masih bisa menghapus /dev/sdb1
dari array ini.
Jawaban:
Itu karena node perangkat tidak lagi ada di sistem Anda (mungkin udev menghapusnya ketika drive mati). Anda harus dapat menghapusnya dengan menggunakan kata kunci
failed
ataudetached
sebagai gantinya:Jika versi mdadm Anda terlalu tua untuk melakukan itu, Anda mungkin bisa membuatnya berfungsi dengan
mknod
membuat perangkat ada lagi. Atau, jujur saja, abaikan saja — itu tidak benar-benar masalah, dan akan hilang begitu Anda reboot lagi.sumber
mknod
. Ya, itu mungkin bukan masalah, tapi aku OCD, lol.Apa yang akhirnya saya lakukan adalah menggunakan
mknod
seperti @derobert yang disarankan untuk membuat perangkat yangmdadm
dicari. Saya mencoba nomor utama / minor yang dikatakan mdadm kepada saya tidak dapat ditemukan dengan huruf drive yang berbeda yang saya coba hapus sampai berhasil.Kemudian saya harus menggunakan
--force
opsi untuk menghapus komponen.Kemudian, saya menghapus perangkat blok yang dibuat itu.
sumber
mdadm
terus berkata: "perangkat atau sumber daya sibuk", tetapi ini membuat saya mencoba memberinya makan bukan dengan perangkat blok palsu, tetapi dengan perangkat blok "benar" seperti gambar yang dipasang di loopback. Pada titik ini, saya menemukan bahwa saya memiliki basi/dev/loop
yang masih menggunakan file pada array yang rusak. Saya melepaskannya dan akhirnyamdadm
membiarkan saya menghentikan array. Horay! Untuk semua orang yang membaca ini, selalu ada penjelasan logis untukmdadm
menjadi brengsek, jadi cari proses basi / file / mountpoint / nfs handler / open bash / loopback device / etc. masih menggunakan array yang rusak. :)Anda juga bisa memperbaiki hanya dengan menurunkan jumlah disk dalam array:
Dalam kasus saya, saya memiliki raid-1 array
/dev/md0
dengan/dev/sda1
dan "dihapus". Saya cukup menyusutkannya untuk menggunakan satu drive saja:Setelah itu dihapus benar-benar dihapus (tidak ada garis yang dihapus lagi di
mdadm --detail
)sumber