system management
1748010 メンバー
4476 オンライン
108757 解決策
新規ポスト

スーパーブロックの読み取り障害

 
清水
新しいメンバー

スーパーブロックの読み取り障害

いつも参考にさせて頂いてます。

さて、表題の件ですが、先日HPUX10.20にてハードディスクの第1スーパーブロックに読み書きエラーが出てしまい、マウントする事が出来なくなってしまいました。

fsckを行うと次の様になります。

# fsck -b 16 /dev/vg02/lvol1

Alternate super block location: 16

** /dev/vg02/lvol1

** Last Mounted on

** Phase 1 - Check Blocks and Sizes

** Phase 2 - Check Pathnames

** Phase 3 - Check Connectivity

** Phase 4 - Check Reference Counts

** Phase 5 - Check Cyl groups

28738 files, 0 icont, 3672551 used, 671370 free (18202 frags, 81646 blocks)

CANNOT WRITE: BLK 8

CONTINUE? y

fsck: flush() -- Write Failure at Block 8

こう言った場合、例えば代替ブロックを使用してディスクをマウントさせると言うことは可能なのでしょうか。
7件の返信7
masaakio65
レギュラーアドバイザー

スーパーブロックの読み取り障害



HFSのようだし、-f で強制的にマウントかけてさっさとバックアップとってしまうことですね。

清水
新しいメンバー

スーパーブロックの読み取り障害

早速の返答ありがとうございます。

さて、強制マウントなのですが、10.20のmountコマンドにはその様なオプションは無いようです。確か9.xの時はありましたが・・・

他に強制マウントさせるようなコマンドはありましたでしょうか。

# mount -f /dev/vg02/lvol1 /users

usage: mount

mount -a

mount

{ special | directory }

mount

special directory

# mount -r /dev/vg02/lvol1 /users

/dev/vg02/lvol1: unrecognized file system
masaakio65
レギュラーアドバイザー

スーパーブロックの読み取り障害



man mount_hfs には、-fオプションはあるので、

mount -F hfs -f

を使ってみては?

nadachi
レギュラーアドバイザー

スーパーブロックの読み取り障害

> fsck: flush() -- Write Failure at Block 8

>

> こう言った場合、例えば代替ブロックを使用して

> ディスクをマウントさせると言うことは可能

> なのでしょうか。

かなり仮定の多い話になりますが、LVMだからこういうことも出来るかも知れないということで。

 LVM-mirror製品が入っているとします。さらに

VG02 に加えることの出来るディスク(disk B)があるとします。さらに、vg02/lvol1 の障害はある特定ブロックでの書き込みであって、読み取りは出来る、と仮定します。(こちらをdisk Aと呼ぶことにします。)

 VG02 に物理ディスクを追加して、VG02/lvol1をそれらディスクを使って LVM-mirror構成に

します。lvol1をもともと構成していたディスク(disk A)は読める、と仮定していますから、lvextendをするときdisk Aから読めて、disk Bに書けるはず

ですからLVM-mirror構成に出来るはずです。

 この構成で alternate superblockを指定して

vg02/rlvol1にfsckを行います。最後に superblock を BLK 8 に書こうとしますが、LVM-mirrorですから書けるはずです。disk A では書き込みに失敗していますので、extentは "stale" とマークされているはずですが、disk Bの方は書き込みが成功しているはず。

(この時点で vg02/lvol1 はmount可能になっている

はずです。)

 ここで、vg02/lvol1 を reduceして disk Aを

外します。(LVM-mirrorでもなくなります。)

disk Aをさらにvg02 からも外して、点検するとか、

mediainitをかけなおし、さらにwriteテストをして

write failureがなくなればまだこのディスクは

使えますが、write failureがまだ起こるなら、この

diskは使わないほうがいいと思います。

 
清水
新しいメンバー

スーパーブロックの読み取り障害

レスありがとうございます。

masaakio65さん

強制マウントですが、以下の様にはじかれてしまいました。

# mount -F hfs -f -o ro /dev/vg02/lvol1 /users

mount: /dev/vg02/lvol1 on /users : I/O エラーが発生しました。

nadachiさん

良い考えだと思いますが、今回の場合は、

・LVM-mirror製品が入っていない。

・第一スーパーブロックは読み取り出来ない(読み取りできなくても強制的にミラー出来ればいけそうですね。)
nadachi
レギュラーアドバイザー

スーパーブロックの読み取り障害

>・LVM-mirror製品が入っていない。

>・第一スーパーブロックは読み取り出来ない

それじゃ別解。vg02/lvol1 と同じ大きさのlvolを作って、vg02/lvol1からそこへ、出来る限りブロックをコピーしてください。これには小さなプログラムを

作るか、"dd"を繰り返してとにかくvg02/lvol1 から読める部分を(オフセット位置が同じになるように)

コピーします。(例えばプログラムでやるなら、1kbytesづつvg02/lvol1から読んで、新しいlvolに

書く。readが失敗したら、そのブロックはlvol1, 新しいlvol共にlseekでスキップして、終わりまで続けます。)

  primary superblockを含んだブロックはコピーできないかも知れませんが、secondary superblockを含んだブロックはコピーできたはずです。このコピーした lvolに対してseconday superblockを指定してfsckを実行して、修復が出来るならば、mountも出来るようになるはずですが。

清水
新しいメンバー

スーパーブロックの読み取り障害

レスありがとうございます。大変参考になりました。

容量が4Gbyteほどありますので、少し時間かかりそうですが、やってみる価値はありますね。

今週末か来週には試す事が出来そうですので、修復が終わりましたら、結果報告します。