最近、HDDを整理してたら 320G SATA HDD (Seagate製) が 8台も出てきた。
うちで使っている ReadyNAS Duoには 2台の750G SATA HDD を載せているが、ボリュームの使用率が10%未満なので宝の持ち腐れな気がするので、ちょっと入れ替えてみた。
ReadyNAS Duoで実装されているX-RAIDは、HDDの容量を大きくする方向の変更は出来ても、小さくする変更は出来ない。まぁしょうがないので、大人しく別途バックアップを取って入れ替えた。
使っていた 750G HDDがフリーになったので、もの試しに読めるかどうか調べてみた。
LVMへのアクセス
普通のPCに繋いでみると、 一台のみにIBM PCベースのパーティションテーブルらしきある。
どうも先頭の2セクタを除いてミラーリングされているっぽく、2台中1台のみにパーティションテーブルが書かれているようだ。まぁ、同じ内容のディスクが変に認識されて混乱するのを避ける為なんだろうなぁ。
パーティションの最後が LVM のボリュームになっており、論理ボリューム上にデータ領域が確保されている。
# sfdisk -l -uS /dev/sdd
Disk /dev/sdd: 91201 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdd1 2 4096001 4096000 83 Linux
/dev/sdd2 4096002 4608001 512000 82 Linux swap / Solaris
/dev/sdd3 4608002 1465112305 1460504304 5 Extended
/dev/sdd4 0 - 0 0 Empty
/dev/sdd5 4608003 1465112305 1460504303 8e Linux LVM
個々のパーティションは、シリンダ境界で区切られておらず、パーティションが無いもう一台に再現するのは、先頭2セクタをコピーするか、sfdisk を駆使するか、ちぃと面倒。
X-RAIDで容量の拡張とかしていなければ、dmsetup を使うのも良いかも。
# lvmsize=$((`blockdev --getsz /dev/sdd` - 4608003))
# echo 0 $lvmsize linear /dev/sdd 4608003 | dmsetup create readynas-pv
# pvscan
# lvchange -ay -pr c/c
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
c c -ri-a- 696.41G
ファイルシステムへのアクセス
LVMの論理ボリュームがアクセスできるようになったら、何にも考えずに ext2/ext3 でマウントをしてみると上手く行かない。
# mount -t ext3 -oro /dev/c/c /mnt
mount: wrong fs type, bad option, bad superblock on /dev/mapper/c-c,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
# dmesg | tail -1
[ 3446.561022] EXT3-fs: bad blocksize 16384.
man を見ると、ブロックサイズは1024,2048,4096の3種類しか有効でないが、いつの時点で実装されたか分からないが、ext2/ext3のブロックサイズはCPUアーキテクチャのページサイズまで拡張されている。ReadyNAS で使われていたext2/ext3 ファイルシステムはブロックサイズが 16K なので、普通にはマウントできなかったようである。
ext2/ext3でブロックサイズが大きすぎる場合、読むだけなら2通りの方法がありそうである。
dump/restore でのアクセス
まぁ何も考えずに dump/restore を使えば、ブロックサイズを気にせずにファイルシステム全体をコピーできるので、ファイルを取り出すことが出来る。容量が大きいHDDが用意できるのならば、安定したアクセスが出来る。
# dump 0f - /dev/c/c | ( cd /backup ; restore rf - )
fuse ext2 でのアクセス
fuse 様にお伺いすると、ext2/ext3 にアクセスできる奴がある。。。コイツもブロックサイズの制限を気にせずにアクセスできる。ただ、、、まぁ、、、枯れきっていない感があるなぁ。
# apt-get install fuseext2
...
# fuseext2 -o ro /dev/c/c /mnt
# mount | grep mnt
fuseext2 on /mnt type fuse.fuseext2 (ro,nosuid,nodev)
まとめ
取り敢えず、ReadyNAS Duo からサクサクとファイルを抜き出せるようになりましたと。。。まぁ、ファンが五月蝿いから捨てますかねぇ。
2 件のコメント:
ブログを見てやってみましたが、どうもうまくいきません。大きなハードディスクが無いためfuseext2を使ってみたのですが、/mntの中身が見えません。試しに/mntの中のディレクトリをrm -rdで消そうとしたら、/dev/c/cの中身が見えました(途中で止めました)
あと一番下の#mount | grep mnt fuseext2 on…….を入力したら、予期しないトークン‘(’の周辺に構文エラーがあります、と怒られました。お手数ですがアドバイスいただければ幸いです。よろしくお願いします。
上記のものですが、なんとかfuseext2でファイルを取り出せました。ありがとうございました。
コメントを投稿