サーバーから、ディスクの 1 つがブロックの読み取りに失敗したというメールが届きました。そこで、完全に故障する前に交換することにしました。新しいディスクを追加し、故障したディスクを交換しました。
sudo mdadm --manage /dev/md0 --add /dev/sdg1
sudo mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/dbg1
同期後、失敗した /dev/sdb1 を削除したかったので、次のコマンドでアレイから削除しました。
sudo mdadm --manage /dev/md0 --remove /dev/sdb1
しかし、ケースからディスクを取り出すときは、まず他の 2 つを取り外し、すぐに元に戻します。その後、RAID がまだ動作しているかどうかを確認しますが、動作していませんでした。自動的に修復されることを期待して、再起動を試みました。これまではこれが問題になったことはありませんでしたが、ディスクを交換したこともありません。
これが機能しなくなった後、何をすべきか考えてディスクを再度追加してみましたが、これは役に立たず、アセンブルも機能しませんでした。
sudo mdadm --assamble --scan
ディスクが2つしか検出されないので、ディスクの名前を伝えようとしました
sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdf1 /dev/sdc1 /dev/sdd1
しかし、すべてのディスクがビジー状態であると表示されます。
sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdf1 /dev/sdc1 /dev/sdd1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sda1 is busy - skipping
mdadm: /dev/sdf1 is busy - skipping
mdadm: /dev/sdc1 is busy - skipping
mdadm: /dev/sdd1 is busy - skipping
再起動後、sdg1 は sdf1 を取得します。
mdstat はディスクを正しく検出しているようです (役立つことを期待して sdb1 を再度挿入し、ありとなしで試しました)。
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : inactive sdd1[3](S) sdb1[1](S) sdc1[2](S) sda1[0](S) sdf1[4](S)
14650670080 blocks super 1.2
unused devices: <none>
ディスクのみをクエリして/dev/sda1
同じ/dev/sdf1
アレイ状態を表示するとAA..
sudo mdadm --query --examine /dev/sda1
/dev/sda1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 7c3e9d4e:6bad2afa:85cd55b4:43e43f56
Name : lianli:0 (local to host lianli)
Creation Time : Sat Oct 29 18:52:27 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : clean
Device UUID : 3e912563:b10b74d0:a49faf2d:e14db558
Internal Bitmap : 8 sectors from superblock
Update Time : Sat Jan 9 10:06:33 2021
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : c7d96490 - correct
Events : 303045
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AA.. ('A' == active, '.' == missing, 'R' == replacing)
sudo mdadm --query --examine /dev/sdd1
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 7c3e9d4e:6bad2afa:85cd55b4:43e43f56
Name : lianli:0 (local to host lianli)
Creation Time : Sat Oct 29 18:52:27 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : clean
Device UUID : bf303286:5889dc0c:a6a1824a:4fe1ae03
Internal Bitmap : 8 sectors from superblock
Update Time : Sat Jan 9 10:05:58 2021
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : ef1f16fd - correct
Events : 303036
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 3
Array State : AA.A ('A' == active, '.' == missing, 'R' == replacing)
sudo mdadm --query --examine /dev/sdc1
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 7c3e9d4e:6bad2afa:85cd55b4:43e43f56
Name : lianli:0 (local to host lianli)
Creation Time : Sat Oct 29 18:52:27 2016
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 5860268032 (2794.39 GiB 3000.46 GB)
Array Size : 8790402048 (8383.18 GiB 9001.37 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
Unused Space : before=262056 sectors, after=0 sectors
State : clean
Device UUID : b29aba8f:f92c2b65:d155a3a8:40f41859
Internal Bitmap : 8 sectors from superblock
Update Time : Sat Jan 9 10:04:33 2021
Bad Block Log : 512 entries available at offset 72 sectors
Checksum : 47feb45 - correct
Events : 303013
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
引き続き試してみますが、現時点ではアイデアが尽きています。RAID 内のディスクを交換するのは今回が初めてです。誰かが助けてくれることを願っています。
少なくともバックアップはありますが、バックアップも機能していないことに気付かれるようにハードドライブをリセットしたくはありません...
アップデート: すべてのディスクを追加してアセンブルすると、次のようになりました。
sudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdf1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sda1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdf1 is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdf1 to /dev/md0 as 1
mdadm: added /dev/sdc1 to /dev/md0 as 2 (possibly out of date)
mdadm: added /dev/sdd1 to /dev/md0 as 3 (possibly out of date)
mdadm: added /dev/sda1 to /dev/md0 as 0
mdadm: /dev/md0 assembled from 2 drives - not enough to start the array.
答え1
解決策を見つけました:
さらに調査を進め、詳細モード ( ) で取得した「古い可能性があります」という情報に基づいてsudo mdadm -v -A /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdf1
、次のページを見つけました。https://raid.wiki.kernel.org/index.php/RAID_Recovery
「--force を使用してアセンブルを試行」のセクションでは、イベント カウントの差が 50 未満の場合に強制的に使用するように説明されています。私の場合はそれよりずっと少なかったので試してみましたが、RAID アレイを再度接続すると、ディスクの 1 つがまだ古いものとして検出されましたが、他のディスクの情報と同期できると思います。そのため、一部のデータを失った可能性がありますが、アレイから間違ったディスクを削除した場合は、アレイが同期されるまで待つ必要があることがわかりました...
レイドを再び動作させるために使用したコマンド:
sudo mdadm --stop /dev/md0
sudo mdadm -v -A --force /dev/md0 /dev/sda1 /dev/sdc1 /dev/sdd1 /dev/sdf1
アップデート:
おそらく 1 つのドライブが追加されなかったため、アレイを動作可能な状態に戻すために、強制的に 1 つのドライブのみが追加されました。イベントの差が最も大きいデバイスは、後で追加する必要がありました--re-add
。
sudo mdadm --manage /dev/md0 --re-add /dev/sdc1
これでアレイは再び同期され、障害のあるハードドライブを再度削除できるようになりました。