名城大学理工学部 応用化学科 永田研究室
トップ 教育 研究 プロフィール アクセス リンク キャラクター ブログ
トップ  >  ブログ  >  研究室のファイルサーバが壊れた

 

ブログ「天白で有機化学やってます。」 ブログ「天白で有機化学やってます。」
< メモ:本をスキャンしたデータから PDF を作る | ブログトップ | 名城大女子駅伝部6連覇 >

研究室のファイルサーバが壊れた2022/10/24(月)

研究室のファイルサーバとして使っていた QNAP の TS-110 が、急に壊れてしまいました。ハードディスクというのは突然壊れるものなので、バックアップからデータを救出して復旧しようとしたのですが、なぜか数日前のものしかなくて、直近の1週間ほどのデータが飛んでしまいました。バックアップを週末だけの設定にしてたんかな……?

復旧させるには、(1) バックアップから大部分のデータを救出する、(2) TS-110 内蔵のハードディスクをなんとか復活させて、そこから直近のデータを救出する、という手順が必要です。ちょっと頑張りました。

QNAP の中身は Linux OS がベースで、ファイルシステムは ext4 です。Mac で読めないこともないのですが、壊れたディスクの修復は Linux 上でないと無理でしょう。計測装置の開発で買った Raspberry Pi 3 が1台余っていたので、これを使いました。

まず、最新の OS をインストールします。Debian 11 (Bullseye) ベースです。Raspberry Pi Imager というものを使えば、コマンドを一切打たなくてもインストールできます。Mac にカードリーダー経由で 16 GB の microSD を接続して、そこに OS を書き込みます。初期のラズパイに比べるとずいぶん楽になりました。

microSD をラズパイに装着して電源を入れ、初期設定を行います。5インチの HDMI 接続液晶を使っています。字が小さくて読むのが辛いけど頑張ります。キーボードとマウスのでかさがアンバランスで、なんだか笑えます。

手元にあったバスパワーの USB ハードディスクを接続します。電源容量が足りるかどうか心配でしたが、大丈夫だったようです(電源が足りないと、画面に稲妻マークが出ます)。バックアップ用に使っていたハードディスクも接続します。これは別途電源があるので問題ありません。

バスパワーのハードディスクを ext4 で初期化します。やり方は「Raspberry Pi ext4 フォーマット」あたりで検索してください。GUI でやる方法もあるはずですが、私は Mac から SSH でつないでコマンドラインでやっています。

ラズパイを再起動すると、バックアップ用に使っていたハードディスクと、新しくフォーマットしたバスパワーのハードディスクがそれぞれ認識され、マウントされました。ファイルを rsync でコピーします。

#!/bin/sh
echo '==== rsync_HDD started at ' `date` >/home/nagata/rsync_HDD.log
rsync -a -v -8 /media/nagata/be1e0a9d-d5e7-451a-bf28-5047bbca913b/homes/ /media/nagata/e69bb182-5d22-4739-a9ee-edf9e7ffd436/homes >>/home/nagata/rsync_HDD.log 2>&1

/media/nagata に続く英数字の列は、たぶん何かの識別番号なのでしょう。これが実際のマウントポイントになっています。上の内容を rsync_HDD.sh として保存しておき、以下のコマンドで実行します。6時間ぐらいかかりましたが、無事終了しました。

$ sudo nohup sh rsync_HDD.sh &

問題は、TS-110 に内蔵していたハードディスクの方です。TS-110 からハードディスクの本体を取り出して、外付けディスクのケースに入れ、接続してみましたが、マウントされません。fsck をかけてみると、Bad magic number in super-block while trying to open ... というメッセージが出ました。"fsck bad magic number superblock" などで検索して、以下のコマンドで修復できるかもしれない、という情報を得ました。

$ sudo mkfs.ext4 -n /dev/sda1
...
Superblock backups stored on blocks:
32768, 98304, 163840, 2294912, 294912, 819200, 884736, 1605632
$ sudo fsck.ext4 -b 32768 -B 4096 /dev/sda1

ダメもとでやってみたところ、マウントできるようになりました! しかし、動作が鈍くて、完全故障が迫っていることは明らかです。先ほどと同様の rsync で、「バックアップされていなかった」ファイルをバスパワーのハードディスクにコピーします。いくつかアクセスできないファイルがありましたが、大部分は救出できました。

新しい QNAP が来るまで、このラズパイをサーバにして運用することにしました。Samba を設定します。

$ sudo apt-get install samba
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original
$ sudo nano /etc/samba/smb.conf
...
browseable = no  #  [print$] セクションの中
...
[home]
comment = NagataGroup Home
path = /media/nagata/be1e0a9d-d5e7-451a-bf28-5047bbca913b/homes/nagatagroup
force user = nagata
valid users = nagatagroup
browseable = no
create mask = 0666
directory mask = 0777
dos filetimes = yes
guest ok = no
read only = no
...
$ sudo systemctl restart smbd

QNAP に入っていたハードディスクは廃棄し、今までバックアップに使っていた外付けハードディスクをメインに、バスパワーのディスクをバックアップ用にします。1日1回 cronrsync を回します。(rsync_HDD.sh の中身は、「外付けハードディスク→バスパワーディスク」のコピーになるように書き直しています。)

$ sudo crontab -e
...
# m h  dom mon dow   command
0 2 * * * sh /home/nagata/rsync_HDD.sh
< メモ:本をスキャンしたデータから PDF を作る | ブログトップ | 名城大女子駅伝部6連覇 >