久しぶりの更新ですが、このブログが更新される時は障害とか嫌なことが起きた時だったりするので嬉しいことではないです。
そして今回も同じく嬉しくないこと。
まずWindows上からsambaのドライブを認識してないことが発覚。
認識していないというか、ドライブは認識されているけどHDDの中身が空の状態。
なぜ気付いたかというと、thunderbirdのローカルフォルダが空になっていたから。
最初はthunderbirdの不具合で上手く読み取れないとかじゃないかなと思ったのですが、エクスプローラから見ても空。
ちょっと焦ってきたので冷静にsshで確認してみました。
そしてこんな感じ
I/Oエラーです。
マウントしなおせば元通りになったりしてくれるかもしれないと思いアンマウントしてマウントしなおしてみます。
使用中と言われました。
一体何がこいつを掴んでいるんだろう?
sambaでした。
サービスを停止し忘れていました。
sambaを止めてからアンマウントしてみます。
エラーです。
ファイルシステムがおかしいと言っています。
しかしfstabには
とかいてあるので間違っているわけではないようです。
とりあえずリブートしてみます。
それだけでうまくいくこともある!!!
あっさりもどってました。
でもデータが破損してたりしたら嫌なのでdiffってみます。
フォルダ構造はまったくもって平気なようです。
続いてファイルの差分等がないか見てみます。
なんかいいやり方はないかなと思ってググっていたらrsyncでできそうです。
気になったのがこの2つ。
なんだか同じように見えますが、前者はコピー元のファイルを一覧表示するだけでファイルを比較した結果とかではなく、
何のためにあるのかさっぱりわからないもので、後者は実際に転送する対象を一覧表示するという素晴らしいものです。
さて、実行して対象をファイルに出力してみます。
前回の同期バッチ以降はthunderbirdのファイル以外は増えていないはずですが・・・。
チェックサムに変えたので異常に時間がかかるだろうと予想して確認は仕事から帰ってきてからにします。
ついでに、rsyncのオプションをみていて気付いたこと。
こんなオプションがあるってことは普段は更新日時とファイルサイズをみて対象ファイルを決定しているということで、
以前の記事で「rsyncは元々チェックサムで比較している」と書いてしまっていたことが間違いだったと気付かされました。
2012秋のファイルサーバ復旧 05 データ領域用HDDの設定など
そういうわけで差分更新バッチ用のスクリプトを修正しておきます。
無事解決。よかったよかった。
そして今回も同じく嬉しくないこと。
まずWindows上からsambaのドライブを認識してないことが発覚。
認識していないというか、ドライブは認識されているけどHDDの中身が空の状態。
なぜ気付いたかというと、thunderbirdのローカルフォルダが空になっていたから。
最初はthunderbirdの不具合で上手く読み取れないとかじゃないかなと思ったのですが、エクスプローラから見ても空。
ちょっと焦ってきたので冷静にsshで確認してみました。
そしてこんな感じ
# ls /var/storage/00/main/ ls: reading directory /var/storage/00/main/: 入力/出力エラーです
I/Oエラーです。
マウントしなおせば元通りになったりしてくれるかもしれないと思いアンマウントしてマウントしなおしてみます。
#umount /var/storage/00/main デバイスを使用中です
使用中と言われました。
一体何がこいつを掴んでいるんだろう?
# fuser -mv /var/storage/00/main/ USER PID ACCESS COMMAND /var/storage/00/main/: root 10262 ..c.. smbd
sambaでした。
サービスを停止し忘れていました。
sambaを止めてからアンマウントしてみます。
# /etc/init.d/smb stop SMB サービスを停止中: [ OK ] NMB サービスを停止中: [ OK ] # umount /var/storage/00/main/ # mount -t ext3 /dev/sdb /var/storage/00/main mount: wrong fs type, bad option, bad superblock on /dev/sdb, missing codepage or other error In some cases useful info is found in syslog - try dmesg | tail or so
エラーです。
ファイルシステムがおかしいと言っています。
しかしfstabには
LABEL=00main /var/storage/00/main ext3 defaults 0 0
とかいてあるので間違っているわけではないようです。
とりあえずリブートしてみます。
それだけでうまくいくこともある!!!
# cd /var/storage/00/main/ # ls data lost+found scripts svn this_is_main tmp var.log [root@localhost main]# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda2 1781732 1270392 419368 76% / /dev/sda1 101086 12180 83687 13% /boot tmpfs 1020808 0 1020808 0% /dev/shm /dev/sdb 2884285104 1210150780 1527620996 45% /var/storage/00/main /dev/sdc 2884285104 1209528564 1528243212 45% /var/storage/00/mirror /dev/sdd 2884285104 2571644916 166126860 94% /var/storage/01/main /dev/sde 2884285104 2571644928 166126848 94% /var/storage/01/mirror /dev/sdf 2884285104 2237635508 500136268 82% /var/storage/02/main /dev/sdg 2884285104 2237631004 500140772 82% /var/storage/02/mirror
あっさりもどってました。
でもデータが破損してたりしたら嫌なのでdiffってみます。
# diff /var/storage/00/main /var/storage/00/mirror 共通の下位ディレクトリー: /var/storage/00/main/dataと/var/storage/00/mirror/data 共通の下位ディレクトリー: /var/storage/00/main/lost+foundと/var/storage/00/mirror/lost+found /var/storage/00/mainだけに発見: scripts 共通の下位ディレクトリー: /var/storage/00/main/svnと/var/storage/00/mirror/svn /var/storage/00/mainだけに発見: this_is_main /var/storage/00/mirrorだけに発見: this_is_mirror /var/storage/00/mainだけに発見: tmp /var/storage/00/mainだけに発見: var.log
フォルダ構造はまったくもって平気なようです。
続いてファイルの差分等がないか見てみます。
なんかいいやり方はないかなと思ってググっていたらrsyncでできそうです。
気になったのがこの2つ。
--list-only list the files instead of copying them (ファイルをコピーはしないで一覧表示する) -n, --dry-run perform a trial run with no changes made (ファイルを更新せずに転送対象となるものを探してみるだけ)
なんだか同じように見えますが、前者はコピー元のファイルを一覧表示するだけでファイルを比較した結果とかではなく、
何のためにあるのかさっぱりわからないもので、後者は実際に転送する対象を一覧表示するという素晴らしいものです。
さて、実行して対象をファイルに出力してみます。
前回の同期バッチ以降はthunderbirdのファイル以外は増えていないはずですが・・・。
rsync -crn --list-only /var/storage/00/main/data /var/storage/00/mirror > /root/20130404.log 2>&1
チェックサムに変えたので異常に時間がかかるだろうと予想して確認は仕事から帰ってきてからにします。
ついでに、rsyncのオプションをみていて気付いたこと。
-c, --checksum skip based on checksum, not mod-time & size (更新時刻とファイルサイズではなくチェックサムでファイル転送をスキップするかどうか決める)
こんなオプションがあるってことは普段は更新日時とファイルサイズをみて対象ファイルを決定しているということで、
以前の記事で「rsyncは元々チェックサムで比較している」と書いてしまっていたことが間違いだったと気付かされました。
2012秋のファイルサーバ復旧 05 データ領域用HDDの設定など
そういうわけで差分更新バッチ用のスクリプトを修正しておきます。
#!/bin/bash # log directory log_dir="/var/storage/00/main/scripts/log" if [ ! -d $log_dir ] then mkdir $log_dir fi # log file path log_file=$log_dir"/sync_storage_"`date +%Y%m%d%H%M`".log" # start echo "### Start sync storage ##########" >> $log_file date >> $log_file # check dupe running=`pgrep -fo $0` if [ $$ != $running ] then echo "### Already running : $running ###" >> $log_file exit 1 fi # exec rsync rsync -avc --delete /var/storage/00/main/data /var/storage/00/mirror >> $log_file 2>&1 rsync -avc --delete /var/storage/00/main/svn /var/storage/00/mirror >> $log_file 2>&1 rsync -avc --delete /var/storage/01/main/data /var/storage/01/mirror >> $log_file 2>&1 rsync -avc --delete /var/storage/02/main/data /var/storage/02/mirror >> $log_file 2>&1 # end echo "### End sync storage ############" >> $log_file date >> $log_file exit 0
無事解決。よかったよかった。
コメント
コメントを投稿