
ドライブに障害がないかどうかを確認するために、マウントされたパーティションを確認しようとしています。
[root@virtuality ~]# /sbin/badblocks -v /dev/sdb1
Segmentation fault
ああ。どういう意味ですか?セグフォルトはなぜbadblocks
発生しますか?修正できますか?
(システムはCentOSバージョン4.6で、ドライブはSATAドライブです)
編集する:使用strace
:
[root@virtuality ~]# strace /sbin/badblocks -v /dev/sdb1
...[snip]...
open("/dev/sdb1", O_RDONLY) = 3
ioctl(3, BLKGETSIZE, 0x7fbffff878) = 0
close(3) = 0
open("/dev/sdb1", O_RDONLY) = 3
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
答え1
最後の数行はstrace
やや退屈な話を聞きます。badblocks
ドライブデバイスを開いて、サイズを確認し、閉じて、再度開いて、いくつかの操作を実行しますが、何らかの方法で失敗してstrace
表示されません。gdb
より深く掘り下げるには、同様のツールを使用する必要があります。
パーティションをマウント解除すると、症状が消えて安定したbadblocks
作業ができるようになります。明らかに、これは実行しようとする読み取り専用テストを実行するためだけに必要ではありませんが、一部の低レベルの一般的ではない操作が正しく機能しなかったのは今回が初めてではありません。
ボーナス:パーティションをアンマウントすると、この機能を使用できます。badblocks -n
これは、ディスク表面の問題を見つけて回復するのにはるかに効果的です。
答え2
これは愚かな間違いであることが判明し、私のコピーbadblocks
にバグがあるように見えました。
私はそれを実行し、yum update
それ以降はもはやbadblocks
セグフォルトが発生しませんでした。