新しいサーバを作りながらいろいろと調べてるけど、今回はサーバの全面からディスクの抜き差しが出来る機器を買ったので、せっかくだからディスクのホットリリース(電源を入れっぱなしでディスクの抜き差し)を試してみました。
対象となるディスクのデバイス名は「/dev/sdb」です。
まずはデバイスをリリースするコマンド。
# echo “1” > /sys/block/sdb/device/delete
これだけでディスクが無効化されます。ログはこんな感じ。
May 13 23:52:03 ** kernel: sd 1:0:0:0: [sdb] Synchronizing SCSI cache
May 13 23:52:03 ** kernel: sd 1:0:0:0: [sdb] Stopping disk
May 13 23:52:03 ** kernel: ata2.00: disabled
既に物理デバイスとしては消え去ってます。
# ls -la /dev/sd*
brw-rw—- 1 root disk 8, 0 5月 13 22:55 /dev/sda
brw-rw—- 1 root disk 8, 1 5月 13 22:55 /dev/sda1
brw-rw—- 1 root disk 8, 2 5月 13 22:55 /dev/sda2
brw-rw—- 1 root disk 8, 3 5月 13 23:41 /dev/sda3
で、物理的にディスクを抜いたときのログがこんな感じ。
May 13 23:53:13 ** kernel: ata2: exception Emask 0x50 SAct 0x0 SErr 0x4080800 action 0xe frozen
May 13 23:53:13 ** kernel: ata2: irq_stat 0x00000040, connection status changed
May 13 23:53:13 ** kernel: ata2: SError: { HostInt 10B8B DevExch }
May 13 23:53:13 ** kernel: ata2: hard resetting link
May 13 23:53:13 ** kernel: ata2: SATA link down (SStatus 0 SControl 300)
May 13 23:53:13 ** kernel: ata2: EH complete
うまく出来たっぽい?
そしてまた電源を入れた状態のまま、ディスクを挿入すると、ログに以下の様に表示されます。
May 13 23:53:55 ** kernel: ata2: exception Emask 0x10 SAct 0x0 SErr 0x4000000 action 0xe frozen
May 13 23:53:55 ** kernel: ata2: irq_stat 0x00000040, connection status changed
May 13 23:53:55 ** kernel: ata2: SError: { DevExch }
May 13 23:53:55 ** kernel: ata2: hard resetting link
May 13 23:53:55 ** kernel: ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
May 13 23:53:56 ** kernel: ata2.00: supports DRM functions and may not be fully accessible
May 13 23:53:56 ** kernel: ata2.00: ATA-9: Crucial_CT512MX100SSD1, MU01, max UDMA/133
May 13 23:53:56 ** kernel: ata2.00: 1000215216 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
May 13 23:53:56 ** kernel: ata2.00: supports DRM functions and may not be fully accessible
May 13 23:53:56 ** kernel: ata2.00: configured for UDMA/133
May 13 23:53:56 ** kernel: ata2: EH complete
May 13 23:53:56 ** kernel: scsi 1:0:0:0: Direct-Access ATA Crucial_CT512MX1 MU01 PQ: 0 ANSI: 5
May 13 23:53:56 ** kernel: sd 1:0:0:0: [sdb] 1000215216 512-byte logical blocks: (512 GB/476 GiB)
May 13 23:53:56 ** kernel: sd 1:0:0:0: [sdb] 4096-byte physical blocks
May 13 23:53:56 ** kernel: sd 1:0:0:0: [sdb] Write Protect is off
May 13 23:53:56 ** kernel: sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA
May 13 23:53:56 ** kernel: sdb: unknown partition table
May 13 23:53:56 ** kernel: sd 1:0:0:0: [sdb] Attached SCSI disk
また見える様になりました。
# ls -la /dev/sd*
brw-rw—- 1 root disk 8, 0 5月 13 22:55 /dev/sda
brw-rw—- 1 root disk 8, 1 5月 13 22:55 /dev/sda1
brw-rw—- 1 root disk 8, 2 5月 13 22:55 /dev/sda2
brw-rw—- 1 root disk 8, 3 5月 13 23:41 /dev/sda3
brw-rw—- 1 root disk 8, 16 5月 13 23:53 /dev/sdb
現実的にはVMデータを置くので、ゲストOSからもホットリリースが出来ないとなんだけど、できるのかな?その辺の検証も必要ですね。
(2024/04/06 追記)対象ディスクの特定
引っこ抜くときに、デバイス名と物理的なディスクの紐づけが分かりづらいので、ヒント的に特定する方法について。たぶんlsscsiコマンドがベターかなと。
# lsscsi
[4:0:0:0] disk ATA Crucial_CT1050MX R060 /dev/sda
[5:0:0:0] disk ATA Crucial_CT1050MX R060 /dev/sdb
[6:0:0:0] disk ATA Crucial_CT1050MX R060 /dev/sdc
[19:0:0:0] process Marvell Console 1.01 –
[N:0:4:1] disk Samsung SSD 970 EVO Plus 500GB__1 /dev/nvme0n1
[N:1:4:1] disk Samsung SSD 970 EVO Plus 500GB__1 /dev/nvme1n1
抜くときにも番号が出てます。以下、管理下から外したとき。
# echo “1” > /sys/block/sde/device/delete
Apr 6 08:48:00 vm kernel: sd 8:0:0:0: [sde] Synchronizing SCSI cache
Apr 6 08:48:00 vm kernel: sd 8:0:0:0: [sde] Stopping disk
Apr 6 08:48:00 vm kernel: ata9.00: disabled
物理的に引っこ抜いたとき
Apr 6 08:48:41 vm kernel: ata9: SATA link down (SStatus 0 SControl 300)
家のサーバは5インチベイに6本2.5インチディスクを活性で抜き差しできるハードを使ってますが、裏では一つ一つケーブルを直結してるだけなので、SATAケーブルとベイとの順番が入れ替わってたりしてたらこの見分け方ではもしかしたら厳しいかもですね(一応順番に指してたはず)

Leave a Reply