LinuxでHDDをホットリリース(電源切らずにディスクを抜き取る) [Linux(LVM/RAID/Storage)]
SATA(SCSI/SASとかでもいいけど)なHDDでホットスワップできるケースにディスクを入れて運用している場合等で、Linuxが動作中のままホットスワップしたくなることがある。
例えばRAIDのアレイが壊れてディスク交換するとかなんとか。
で、その方法。
なお、SATAでもSCSIでもSASでもUSBでもIEEE1394(FireWire)でも全部やり方は同じ方法が使える(はず)。
①まずは抜き取りたいディスクを特定する。
/dev/sd? というデバイス名の特定と、物理的なディスクの特定を行う。
これを間違うとひどい目にあう。
ちなみに、HDD1個1個にLED等アクセスランプが備わっている場合は、実際にそのディスクにアクセスしてみるのが手っ取り早い。例えば…
dd if=/dev/sda of=/dev/null bs=1M count=1024
とかこんな具合に。「sda」の部分は適宜確認したいディスクデバイス名に読み替えてほしい。
ただ、この方法では確認しきれない場合もある。そんなときは逆に「抜き取る必要の無いディスク」にアクセスしてみて、LEDが点灯しなかったものが壊れたディスクだということで調べる方法もある。
あるいは、S.M.A.R.T.が有効になっていれば、
smartctl --test=short /dev/sda
とかみたいな方法を実行してみる。アクセスランプが点灯するか、壊れたディスクならきっとすごい異音がするので(笑)、これで物理的なディスクが特定できるだろう。
②「delete」ファイルに「1」を書き込んでやる
/sys/block/(デバイス名)/device/delete というファイルに「1」を書き込んでやると、そのディスクがOS上の認識が削除されることとなる。
例えば、「sdn」を削除したいよ! という場合は…
これでよい。世の中的にはデバイスIDを調べて…という方法が多いようだが、今時のカーネルなら調べる必要も無い。(調べなきゃいけない場合もあるかもしれないが、少なくともCentOS5.3以降なら大丈夫だった)
③ディスクを引っこ抜く
ディスクを注意深く抜き取ろう。
なお、まだ生きているディスクをこの方法で引き抜く場合は、もしかしたらメモリ上にキャッシュされているデータをあわてて書き込んでいるかもしれないので、ディスクアクセスが無いことを確認してから引き抜こう。
というか、事前に sync してからdeleteに「1」を書いてやるべきだろうね。
例えばRAIDのアレイが壊れてディスク交換するとかなんとか。
で、その方法。
なお、SATAでもSCSIでもSASでもUSBでもIEEE1394(FireWire)でも全部やり方は同じ方法が使える(はず)。
①まずは抜き取りたいディスクを特定する。
/dev/sd? というデバイス名の特定と、物理的なディスクの特定を行う。
これを間違うとひどい目にあう。
ちなみに、HDD1個1個にLED等アクセスランプが備わっている場合は、実際にそのディスクにアクセスしてみるのが手っ取り早い。例えば…
dd if=/dev/sda of=/dev/null bs=1M count=1024
とかこんな具合に。「sda」の部分は適宜確認したいディスクデバイス名に読み替えてほしい。
ただ、この方法では確認しきれない場合もある。そんなときは逆に「抜き取る必要の無いディスク」にアクセスしてみて、LEDが点灯しなかったものが壊れたディスクだということで調べる方法もある。
あるいは、S.M.A.R.T.が有効になっていれば、
smartctl --test=short /dev/sda
とかみたいな方法を実行してみる。アクセスランプが点灯するか、壊れたディスクならきっとすごい異音がするので(笑)、これで物理的なディスクが特定できるだろう。
②「delete」ファイルに「1」を書き込んでやる
/sys/block/(デバイス名)/device/delete というファイルに「1」を書き込んでやると、そのディスクがOS上の認識が削除されることとなる。
例えば、「sdn」を削除したいよ! という場合は…
# echo "1" > /sys/block/sdn/device/delete
これでよい。世の中的にはデバイスIDを調べて…という方法が多いようだが、今時のカーネルなら調べる必要も無い。(調べなきゃいけない場合もあるかもしれないが、少なくともCentOS5.3以降なら大丈夫だった)
③ディスクを引っこ抜く
ディスクを注意深く抜き取ろう。
なお、まだ生きているディスクをこの方法で引き抜く場合は、もしかしたらメモリ上にキャッシュされているデータをあわてて書き込んでいるかもしれないので、ディスクアクセスが無いことを確認してから引き抜こう。
というか、事前に sync してからdeleteに「1」を書いてやるべきだろうね。
2010-08-20 17:40
nice!(0)
コメント(0)
トラックバック(0)
コメント 0