※この記事は、あくまで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をして中断したとしても、続きからできるので便利です。