4つのeSATAディスクを搭載した外部ドライブベイがあります。私のシステムには、4ポートのeSATAカードと、内部ハードウェアRAID1ドライブのペアがあります。外部ドライブは、/dev/md0
および/dev/md1
としてソフトウェアRAID1ペアになっています。両方ともstoragevg
LVMボリュームグループを作成するためにLVM物理ボリュームとして構成されています。最近、単一のドライブがオフラインになりました(ケーブルが疑われる)が、特に初期化の順序がブート間で同じではないため、チェックする必要があるドライブを物理的に識別する良い方法はないようです。注意が必要なディスクを見つけるにはどうすればよいですか?
ディスクユーティリティ([システム]-> [管理]にある)は、すべてのディスクのシリアル番号を提供します。
これが私が見るものです(シリアルの右上を見てください)。このドライブはmdadm RAIDアレイ内にあることに気付くでしょう。ディスクユーティリティは、rawディスクアクセスのためにアレイに侵入できます。
私はPCに同じモデルのディスクを6個持っているので、ケース内の位置とシリアル番号を示す小さな図を描いて、緊急時にシリアルですばやく見つけられるようにしました。
また、ディスクが死んだ場合、どのディスクが表示されているかを見つける必要があるだけで、どのシリアルが見つからないかがわかるまでそれらを削除することができるという点でも反対です。
編集:私はbash-fuを改善しようとしているので、このコマンドラインバージョンを作成して、マシンの最新のディスクシリアル番号のリストを提供します。 fdisk
はいくつかのエラーを除外するかもしれませんが、それはリストを汚しません:
for disk in `Sudo fdisk -l | grep -Eo '(/dev/[sh]d[a-z]):' | sed -E 's/://'`;
do
Sudo hdparm -i $disk | grep -Eo 'SerialNo=.*' | sed -E 's/SerialNo=//';
done
(必要に応じてそれを1行に砕くことができます-読みやすくするために分割しました)
編集2:ls /dev/disk/by-id/
はやや簡単です;)
ドライブのシリアル番号またはポートの表示とディスクの空間位置を一致させるのに問題がある場合は、cat /dev/sdz >/dev/null
(ここでsdz
は故障したドライブ)を実行し、そのLED(または耳で)騒がしいサーバールームにいない場合)。ドライブの電源が入らない場合でも、ドライブがどれであるかを判断するには十分です。次回は、ディスクにラベルを貼ってください。
udisks
が提供する情報(コマンドラインまたはGNOME Disk Utility)には、ディスクのシリアル番号が含まれています。私が持っているディスクでは、シリアル番号は、数字とバーコードの両方で、上側と前面(コネクタを含む側の反対側)に印刷されています。残念ながら、ほとんどのPCケースでは、ディスクを引き出すことなくこれらのシリアルを読むことができません...
シリアル番号は/dev/disk/by-id/
にもあります。
あなたのディスクはオフラインなので、私はそれが現在カーネルによって「見られない」と思いますか?その場合は、排除する必要があるかもしれません。リストされていないシリアル番号のディスクが必要です...
ソフトウェアRAIDでは、これは一般的な問題です。ハードウェアRAIDには、ハードウェアがサポートしていると仮定して、ドライブに関連付けられたLEDを点滅させる機能があります。
ただし、ソフトウェアRAIDでは、各ドライブに固有のメタデータがいくつかあります。これは、アレイ内の各ドライブに対してコマンドmdadm -E /dev/sda1
を使用して各ドライブから読み取ることができ、環境に合わせてデバイスを変更します。そのため、ドライブが問題を引き起こし、現在オフラインになっている状況がある場合。オンラインの各ドライブでこれを実行し、各ドライブのマイナー番号を記録します。次に、MDをサポートするLive CDを使用すると、システムレスキューCDが適しています。一度に1つのドライブのみが接続され、このコマンドを実行して原因を見つけます。これはおそらくあなたが望むほど単純ではありませんが、うまくいくはずです。
lsscsi
$ lsscsi -l [0:0:0:0] disk ATA Toshiba THNS128G AGLA /dev/sda state = running queue_depth = 1 scsi_level = 6 type = 0 device_blocked = 0 timeout = 30 [1:0:0:0] cd/dvd HL-DT-ST DVDRAM GT30N LT09 /dev/sr0 state = running queue_depth = 1 scsi_level = 6 type = 5 device_blocked = 0 timeout = 30
ディスクが実行状態にない場合、それはかなり良い兆候です。したがって、/ proc/mdstatは、失敗したメンバーを通知します。 Niceドライブケージがないと仮定すると、シリアル番号でドリルダウンする必要があります。sg_inqがそれを支援します。
適切なドライブケージがある場合は、ディスクビーコンを有効にして、障害のあるメンバーを特定できるようにする必要があります。
すべてのハードディスクのシリアルコードを取得するには、次を実行します。
lsblk -i -o kname,mountpoint,fstype,size,maj:min,name,state,rm,rota,ro,type,label,model,serial
KNAME MOUNTPOINT FSTYPE SIZE MAJ:MIN NAME STATE RM ROTA RO TYPE LABEL MODEL SERIAL
sda 3.7T 8:0 sda running 0 1 0 disk WDC WD4000F9YZ-0 WD-WCCXXX4
sda1 3.7T 8:1 `-sda1 0 1 0 part
sdb /mnt/backup3 ext4 3.7T 8:16 sdb running 0 1 0 disk backup_netops WDC WD4000F9YZ-0 WD-WCCXXX1
sdc 3.7T 8:32 sdc running 0 1 0 disk WDC WD4000F9YZ-0 WD-WCCXXX3
sdc1 /mnt/backup2 ext4 3.7T 8:33 `-sdc1 0 1 0 part
sdd 3.7T 8:48 sdd running 0 1 0 disk WDC WD4000F9YZ-0 WD-WCCXXX2
sdd1 /mnt/backup1 ext4 3.7T 8:49 `-sdd1 0 1 0 part
それは簡単です。これはたとえば私のPCの出力です:
andrea@centurion:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdh1[1] sdg1[0]
312568576 blocks [2/2] [UU]
unused devices: <none>
ご覧のとおり、/ dev/sdh1と/ dev/sdg1は/ dev/mdで結合されています
アレイにはSESスマートがなく、ディスクアクティビティLEDは直接駆動できないため、それにはファームウェアのサポートが必要です。他にできることは、できる限りI/Oを静止し、メンバー自身で dd
または sg_read
のようなものを使用して、読み取りのパターンをストライドすることです。アクティビティLEDを使用して一意に識別可能な点滅パターンを作成するディスク。これは、貧しい人のビーコンです。アレイをダウンさせることがオプションでない限り、それは本当にあなたの唯一の選択肢です。
この種の保守性は、外部ストレージアレイを差別化するものです。シリアル番号とその位置を書き留めて事前に計画していなかったため、単純なセットの違いを実行して障害のあるドライブを特定することはできません。それは、実現したかどうかに関係なく、展開したソリューションに支払う価格です。