※この記事は、あくまでLinuxの知識が多少ある人向けに作成しています。まったくLinuxの知識がない人が、これをすると大変なことになる可能性がありますので、実行する際は自分の力でなんとかできそうか、十分に検討してください。
最近安価なNASが市場に出回ってきています。製品を挙げると玄人志向の「玄箱」、メルコの「Link Station」、IOデータの「LANDISK」などがあります。
中身は安価なCPUの上で動作するLinuxの上で動作するSambaで、Windowsのネットワーク上からファイルが扱えるので、結構な数出回っているようです。またLinuxなので、簡単にハックできるということで、アレゲな人にもそこそこ人気はあるようです。今回は友人からデータ復旧依頼を頼まれ、「LANDISK」を触る機会があったので、それについて簡単にメモを残しておきたいと思います。
LANDISKと玄箱の大きく異なる点は、HDD側にLinuxが乗っていて、チップはブートプロセスのみ行うか、Linuxカーネルが丸々全部チップに乗っているか、の違いです。前者のほうが、カーネルの入れ替えなどを行うには適していると言えるのですが、何かの事故でブート中にKernel Panicになるような事態があった場合は、LANDISK単体では復旧ができなくなります。今回はそういう事態になった場合に、データを取り出す方法について記述しておきたいと思います。
バージョン・ロットの違いに注意
まず、LANDISKといっても発売時期・バージョンなどで中身がずいぶん違います。 データを取り出す際に気をつけなければいけないのは、ファイル名の文字コードの問題とファイルシステムの問題です。ファイル名の文字コードに関しては、日本語ファイル名を使ってなければ何の問題もありませんが、今時そんな人は殆どいないでしょう。 私が取り扱ったものでは、 ・HDL-160U (ext2fs、文字コードはcp932(Shift-JIS)) ・HDL-F300 (ext3fs、文字コードはutf-8) となっていました。Knoppixを使ったデータ復旧方法
さて、いよいよデータの復旧ですが、上記のようにext2、ext3のファイルシステムを扱うにはLinux環境で復旧させるのが一番です。ここで手軽にLinux環境をそろえる方法としてKnoppixを使ったLinux環境の構築というものがあります。
http://unit.aist.go.jp/itri/knoppix/
Knoppix5.0が最新ですが、何故か私の環境にはKnoppix4.0の方がHDDの認識など安定が良かったです。これを使うと、Samba環境までを簡単に用意できるので、LANDISKのデータ復旧にはこれほど適している環境はありません。
この手法でデータを復旧させるとなると、データの復旧先としてコピーできる十分な容量を持ったHDDも必要です。その場合Linux上ではNTFSファイルシステムへの書き込みは不安定なので、別途違うものを使う必要があることを考えておかなければいけません。
今回のデータ復旧方法としては、以下のようなものを考えてみました。
・LANDISK→別のネットワークドライブ
・LANDISK→別のLANDISK(直繋ぎによるコピー)
Sambaを使用して擬似的なLANDISKを作る
KnoppixのCDを作成したら、CDブートするときに、「knoppix dma」とブートしましょう。DMA転送が有効になっていなければコピーが非常に遅く、200GB以上のデータを復旧するのに時間がかかります。
本当にDMAモードで動作しているかを確認するために一応root権限で、
hdparm /dev/hdc
などとして、確認しましょう。using_dmaが1(on)になっていれば、OKです。なっていない場合は、
hdparm -d1 /dev/hdc
などとして、DMAを有効にしましょう。
次にSambaの設定をします。主なSambaの構築までのプロセスは詳しくは解説しませんので、以下のURLを参考にしてください。丁寧で分かりやすいと思います。
http://gapo.zive.net/knoppix/right.html
LANDISKを復旧する上で、必要な設定はsmb.confに対して
unix charset=CP932(もしくはutf-8)一番最後に
[landisk]
path=/mnt/hdc6
browseable=yes
writable=yes
と付け足しておきましょう。KnoppixはデフォルトではHDDの領域がマウントされないようになっているので、自前でマウントする必要があります。unix charsetは上での例で示したように、ファイル名がcp932でエンコードされている場合と、utf-8でエンコードされている場合がありますので、環境に合わせて変えてください。nkfの-guessオプションを使えば判定できるので、利用するといいでしょう。
また、pathに関しても、実際どこがデータ領域になっているかはマウントしてみなければ分かりませんので、確認して、環境に合わせて変更してください。
後はSamba起動後、Windowsからアクセスするだけです。
/etc/init.d/samba start
Windowsから「\\IPアドレス\landisk」と打ち込むと、LANDISK内のデータの中身が見られるはずですので、あとはWindows側からコピーしてください。ローカルからローカルにコピーしてしまいたい場合は、Samba環境をKnoppix上でマウントしてコピーするといいと思います。
SambaをKnoppix上にマウントする方法ですが、/mnt/landiskというディレクトリにマウントすると仮定すると、以下のようなコマンドで実現できます。
mount -t smbfs //127.0.0.1/landisk /mnt/landisk -o username=knoppix,password=samba,codepage=cp932,iocharset=euc-jp
codepageは例によってutf-8の場合もあり得ます。
次にローカルからローカルへのコピーです。
コピーするディスクが/mnt/hdc1とすると、コピーコマンドは以下のようになります。
#cp -R -u -v /mnt/landisk/share/ /mnt/hdc1
-Rは再帰オプション、-uは日付の新しいもののみコピー、-vはコピーしたファイルを画面に表示です。
こうしておくと、途中でCTRL+Cをして中断したとしても、続きからできるので便利です。
すっごい、参考になりましたー
ありがとでしたー
コメントどうもですー。
なんつーか、後から見直してみたらコマンドはデザインの都合で途中切れしてるわ、誤字あるわでお恥ずかしい限りです。
また何かのご縁がありましたら、よろしくお願いします。
めちゃくちゃ参考になりました!!たすかった!
ちなみにHDL-GX500では、
unix charset = UTF-8
display charset = UTF-8
dos charset = CP932
で、Windows(vista)のエクスプローラで日本語取り扱いができました。
お役に立てて何よりです。
今後ともよろしくお願いしますー。
HDL4G-1.0でRAID崩壊し調べてみたところKirikaさんのHPへ辿りつきました。
とても参考になりました。
これから試してみようとおもうのですが、RAID5でも同じ方法で可能でしょうか。
knoppixではまだアクセスしていないのですが、telnetでLANDISKの中身は見れたのですが、もしtelnetの操作だけで復旧できる方法がありましたら、ご教授ください。
よろしくお願い致します。
はじめまして。ご来訪いただきありがとうございます。
残念ながらRAID5のディスクは無理だと思います。
ところでRAID5であれば、ディスクが2台以上壊れていない限り、RAID崩壊の状態でも復旧できると思っているのですが、LANDISK単体
で復旧できないのでしょうか?
私自身は当該製品を所有していないので、具体的なアドバイスはでき
ないですが、もしデータが見られるのであれば、/mnt以下にディスク
があれば、外部のFTPサーバや共有ディスクにデータを送信すること
が出来ると思います。それ以上はメーカーサポートを頼ったほうが無難である気がします。
Kirika さんご返事ありがとうございます。
メンテナンスツールはあるのですが、HDDの状態は物理的には4本とも正常です。RAIDの状態はRAID崩壊となっております。
(おそらく停電で崩壊してしまったとおもわれます。)
アドバイスありがとうございます。
/mnt以下を見てみます。
また、わからない時にご質問させて頂くかもしれませんが、よろしくお願い致します。
Kirika さんご質問させてください。
mntの下にdaap、dlnashare、esata1~7、hda5、hda7、ram0、rom0、sata4、sataraid1、slot4、usb1~4、usbdisk1~4が存在しているのですが、どこにデータがあるのかよくわかりません。
fftpで繋げてみたのですが、ファイルは何も見れませんでした。
ご教授よろしくお願い致します。
怪しいのはsataraid1だと思うのですが、おそらくRAID構成の定義がなくなってしまっているためマウントできなくなっているのではないかと思います。
/etc/fstabに/mnt/sataraid1に関連付けられている/dev/****の確認とdmesgを使って、/dev/****に対するデバイスが検出されているかを確認してみるといいと思います。
もしRAID定義が消えただけであれば、RAIDを再定義すればよいと思うのですが、最悪データが消えてしまう可能性もあります。サポートに問い合わせて、再定義しても大丈夫かどうかの確認をしてみてはいかがでしょうか。
Kirikaさんレスありがとうございます。
mnt/sataraid1の下は何も無く、fstabの中身は
0 0
/dev/md1 /boot ext2 defaults,rw 0 0
/dev/md2 / ext3 defaults,rw 1 1
/dev/sda3 swap swap defaults 0 0
/dev/sdb3 swap swap defaults 0 0
/dev/sdc3 swap swap defaults 0 0
/dev/sdd3 swap swap defaults 0 0
/dev/sde3 swap swap defaults 0 0
/dev/sdf3 swap swap defaults 0 0
/dev/md5 /mnt/hda5 ext3 defaults,rw,sync
0 0
となっておりました。
RAID再定義とは、/mnt/sataraid1に本来、/dev/****とファイルが存在していて、その構成と定義があってなかったら編集するといったことでよろしいでしょうか。
dmesgをたたいたところ、/dev/****関係のメッセージはありませんでした。
RAID再定義方法もしくは、参考サイト等があれば教えていただけないでしょうか。
サポートに問合わせたところTOOLで再構築以外はわかりかねますとありました。
Kirikaさんレスありがとうございます。
mnt/sataraid1の下は何も無く、fstabの中身は
0 0
/dev/md1 /boot ext2 defaults,rw 0 0
/dev/md2 / ext3 defaults,rw 1 1
/dev/sda3 swap swap defaults 0 0
/dev/sdb3 swap swap defaults 0 0
/dev/sdc3 swap swap defaults 0 0
/dev/sdd3 swap swap defaults 0 0
/dev/sde3 swap swap defaults 0 0
/dev/sdf3 swap swap defaults 0 0
/dev/md5 /mnt/hda5 ext3 defaults,rw,sync
0 0
となっておりました。
RAID再定義とは、/mnt/sataraid1に本来、/dev/****とファイルが存在していて、その構成と定義があってなかったら編集するといったことでよろしいでしょうか。
dmesgをたたいたところ、/dev/****関係のメッセージはありませんでした。
RAID再定義方法もしくは、参考サイト等があれば教えていただけないでしょうか。
サポートに問合わせたところTOOLで再構築以外はわかりかねますとありました。
ちょっと調べてみましたが、どうもLANDISKはLinux上でRAIDが構築してあるみたいです。RAIDの定義情報がことですが/etc/raidtabというファイルがありませんか?
デバイスとしては/dev/md1や/dev/md2や/dev/md5がRAID用のドライブとなるみたいです。恐らくデータの入っているエリアは/mnt/hda5だと思います。
RAIDに関する参考情報は、ここあたりが参考になるのではないかと思います。
http://www.linux.or.jp/JF/JFdocs/The-Software-RAID-HOWTO-4.html
このページによると、raidstart /dev/md5というコマンドでRAIDを起動したりするようですが、このコマンドを使用した場合に正常に起動しますでしょうか?
raidstartを使わなくても、自動的にRAIDドライブを検出してくれるようなのですが、RAID領域にアクセスできないとのことなので、正常にRAIDシステムが起動できてないのではないかと思いました。あとは別の問題としてSambaが起動してない等が考えられます。
あと、私は当該製品を所持しておらず、RAIDシステムが組まれたLANDISKは全く使用したことがないため、適切なアドバイスが出来ません。素直にサポートに持っていって対応してもらう方が安全だと思います。