今まで使っていたデータをsambaで見られるようにする前にやることがあります。
いっぱいになってしまっているデータの分散です。
今のドライブの状態は
となってます。
で、Bは実際は100%じゃないのにファイルを削っても残量が0のままの謎のドライブです。
メモ: 2012秋のファイルサーバ復旧 01 ディスクフル発覚→シングルユーザで起動してみる
怪しいので一度フォーマットしたほうがいいと思うので下記の手順で進めます。
なお、コピーしたファイルのチェックサムとかでの比較をしてないのはrsync自体がチェックサム機能を使ってファイルの差分をチェックしているから。
転送時にもチャンクごとにチェックサムを計算して比較していて2度rsync使ってチェックするようなことも不要です。
rsync - Wikipedia
↑間違ってました。オプション指定が必要
2013年春のファイルサーバHDD障害発生
でもCとDは今後は同期する必要なんか無さそうですな。データの増減がなさそうだし。
途中でLABELを設定してますが、それぞれのドライブは指している場所で順番にsdb,sdc,sdd,sdeと順番に振られているため、途中1つが認識されない状態で起動してしまうと今までsdeだったものがsddになってしまったり、と恐ろしいことが起きてしまうのでドライブ固定で認識するように設定する必要があるということです。
どうやるのかというとfstabにsdbとかじゃなくてLABELを指定するだけ。
今はそれぞれのドライブというかパーティションにLABELをつけてずに、
とやってました。これだと上記の理由でおっかないことになるわけです。
下記のように割り当てます。
ではまずB,Cのドライブだけ接続して起動します。
ドライブが接続されているか確認。
sdb, sdc が出ていることを確認できたのでマウント先を作成してマウントします。
マウントが済んだら中身が見えるので確認します。
メイン側にはthis_is_mainのファイル、ミラー側にはthis_is_mirrorのファイルがあるので正常にマウントされました。
Bの不要なファイルを消します。
無事消し去りました。
では続いてB→Cのrsync。
直前に空き容量確保のために色々移動させたからすごい量です。
ではdfしてみます。
一致していない!!!!
使用量が一致しないのはなぜ…?
もういちどrsyncしてみます。
同じです。当然ですが…。
du で見てみてもやはりサイズが違います。
diffってみます。
いつになっても終わりません。
USBメモリのtmpでがりがり書き込まれて寿命が減っていっているような不安にかられるので途中で停止。
Ctrl+Cです。
仕方ないのでいつものlsでの比較をやります。
HDDいっぱいで書き出せない気がするし、USBメモリにはなるべき書き出したくないのでputtyのログを保存することでファイル書き出ししときます。
メモ: ファイルサーバHDD障害対応2
の投稿にある通り、
で出力します。
ファイルに出さいないのでリダイレクトはナシです。
出力されたログファイルから上記投稿通りに余計な行を削除して保存。
Winmergeで比較します。
結果、ファイルは完全に一致してました。
きっとまたディレクトリサイズが違うだけなんだろうなあ、なんでだろうなあ、でもまあ、ディレクトリサイズが違うだけだから大丈夫でしょ、と放置しておいた謎をググってみました。
すぐに出てきました。すごく納得。
Linuxでlsコマンドを実行したときに参照できる「ディレクトリの.. - 人力検索はてな
これでは仕方ないですな!!!
では次にすすみます。LABELの設定です。
LABELが設定されてないことを確認、設定、とやってます。
なお、システム領域を確認してみるとこんな感じです。
設定がおわったのでfstabに設定します。
メモ: 3TBのドライブはfdiskじゃだめらしいにあるのと同じですが、LABEL指定なのでちょっと違います。
追記するのは下記の内容です。
ところでパーティションが/dev/sdb1とかにならず/dev/sdbだけになっているのは上記投稿にある通りの理由からで、記述ミスではありません。
保存し終わったらリブートしてみます。
そう思ってputtyではなく実機のモニタを見てみるとなんか警告がでてました。
後で調べてみます。
再起動が終わったのでディレクトリを確認します。
OKでした。
さて、先程の警告です。
です。チェック時間が来ましたよ。e2fsckをやりなさいとのことです。
やってみます。
ここから先が全然すすまない。
このまま放置して仕事行きます。
続きは次回
いっぱいになってしまっているデータの分散です。
今のドライブの状態は
- A - システム領域用のUSBメモリ
- B - 100%
- C - 98%くらい - Aのミラーリング用
- D - 98%くらい
- E - 98%くらい - Cのミラーリング用
- F - 0% - 新しく買ってきたドライブ
- G - 0% - Eのミラーリング用
となってます。
で、Bは実際は100%じゃないのにファイルを削っても残量が0のままの謎のドライブです。
メモ: 2012秋のファイルサーバ復旧 01 ディスクフル発覚→シングルユーザで起動してみる
怪しいので一度フォーマットしたほうがいいと思うので下記の手順で進めます。
転送時にもチャンクごとにチェックサムを計算して比較していて2度rsync使ってチェックするようなことも不要です。
rsync - Wikipedia
↑間違ってました。オプション指定が必要
2013年春のファイルサーバHDD障害発生
- Bの不要ディレクトリを削除(/var/log, /var/tmp, /tmp のシンボリックリンク先にしていたもの)
- yumでrsyncをインストール
- B→Cでrsyncで同期。サーバが止まる前の状態の差分反映をしていないため。
- B,Cドライブ(パーティション)にLABELを設定してfstabの記述をLABEL指定に変更
- D→Eも同様に同期。
- D,Eドライブ(パーティション)にLABELを設定してfstabの記述をLABEL指定に変更
- F,Gドライブにパーティション作成、フォーマット、LABEL設定
- BのデータをFにrsyncでコピー。実際のデータは100%じゃないのでFにコピーした時には98%位になるはず。
- FのデータをGにrsyncでミラーリング。
- B,Cをフォーマット
- FからBに移動する必要のあるデータだけをディレクトリ単位でrsyncでコピー
- BからCへrsyncでコピー
- Bに移動したデータをFから削除
- FからGへrsyncで削除した分を反映
- B→Cへの反映rsyncをcronに登録
- D→Eも同様
- F→Gも同様
でもCとDは今後は同期する必要なんか無さそうですな。データの増減がなさそうだし。
途中でLABELを設定してますが、それぞれのドライブは指している場所で順番にsdb,sdc,sdd,sdeと順番に振られているため、途中1つが認識されない状態で起動してしまうと今までsdeだったものがsddになってしまったり、と恐ろしいことが起きてしまうのでドライブ固定で認識するように設定する必要があるということです。
どうやるのかというとfstabにsdbとかじゃなくてLABELを指定するだけ。
今はそれぞれのドライブというかパーティションにLABELをつけてずに、
/dev/sdb /var/storage/00/main
とやってました。これだと上記の理由でおっかないことになるわけです。
下記のように割り当てます。
- B - 00main
- C - 00mirror
- D - 01main
- E - 01mirror
- F - 02main
- G - 02mirror
ではまずB,Cのドライブだけ接続して起動します。
ドライブが接続されているか確認。
# ls /dev MAKEDEV network_latency ramdisk tty17 tty44 usbdev1.1_ep81 X0R network_throughput random tty18 tty45 usbdev1.2_ep00 bus null rawctl tty19 tty46 usbdev1.2_ep02 console nvram root tty2 tty47 usbdev1.2_ep81 core oldmem rtc tty20 tty48 usbdev2.1_ep00 cpu parport0 sda tty21 tty49 usbdev2.1_ep81 cpu_dma_latency parport1 sda1 tty22 tty5 usbdev3.1_ep00 disk parport2 sda2 tty23 tty50 usbdev3.1_ep81 fd parport3 sda3 tty24 tty51 usbdev4.1_ep00 full port sdb tty25 tty52 usbdev4.1_ep81 hidraw0 ppp sdc tty26 tty53 usbdev5.1_ep00 hidraw1 ptmx sg0 tty27 tty54 usbdev5.1_ep81 hpet pts sg1 tty28 tty55 usbdev5.2_ep00 initctl ram sg2 tty29 tty56 usbdev5.2_ep81 input ram0 shm tty3 tty57 usbdev5.2_ep82 kmsg ram1 snapshot tty30 tty58 vcs log ram10 stderr tty31 tty59 vcs2 loop0 ram11 stdin tty32 tty6 vcs3 loop1 ram12 stdout tty33 tty60 vcs4 loop2 ram13 systty tty34 tty61 vcs5 loop3 ram14 tty tty35 tty62 vcs6 loop4 ram15 tty0 tty36 tty63 vcsa loop5 ram2 tty1 tty37 tty7 vcsa2 loop6 ram3 tty10 tty38 tty8 vcsa3 loop7 ram4 tty11 tty39 tty9 vcsa4 mapper ram5 tty12 tty4 ttyS0 vcsa5 mcelog ram6 tty13 tty40 ttyS1 vcsa6 md0 ram7 tty14 tty41 ttyS2 zero mem ram8 tty15 tty42 ttyS3 net ram9 tty16 tty43 urandom
sdb, sdc が出ていることを確認できたのでマウント先を作成してマウントします。
# mkdir -p /var/storage/00/main # mount /dev/sdb /var/storage/00/main/ # mkdir -p /var/storage/00/mirror # mount /dev/sdc /var/storage/00/mirror/
マウントが済んだら中身が見えるので確認します。
# ls /var/storage/00/main/ data lost+found svn this_is_main tmp var.log # ls /var/storage/00/mirror/ data lost+found svn this_is_mirror
メイン側にはthis_is_mainのファイル、ミラー側にはthis_is_mirrorのファイルがあるので正常にマウントされました。
Bの不要なファイルを消します。
# cd /var/storage/00/main/ # ls data lost+found svn this_is_main tmp var.log # cd var.log/ # ls anaconda.log btmp maillog messages.4 secure spooler.4 anaconda.syslog cron maillog.1 pm secure.1 svndumpall anaconda.xlog cron.1 maillog.2 prelink secure.2 sync_storage boot.log cron.2 maillog.3 rpmpkgs secure.3 tallylog boot.log.1 cron.3 maillog.4 rpmpkgs.1 secure.4 wtmp boot.log.2 cron.4 messages rpmpkgs.2 spooler yum.log boot.log.3 dmesg messages.1 rpmpkgs.3 spooler.1 yum.log.1 boot.log.4 faillog messages.2 rpmpkgs.4 spooler.2 brcm-iscsi.log lastlog messages.3 samba spooler.3 # rm -rf * # ls # cd ../ # cd tmp/ # ls tmp var.tmp # rm -rf * # ls # cd ../ # ls data lost+found svn this_is_main tmp var.log # rmdir tmp # rmdir var.log # ls data lost+found svn this_is_main
無事消し去りました。
では続いてB→Cのrsync。
# rsync -av --delete /var/storage/00/main/data /var/storage/00/mirror (略) sent 379593776382 bytes received 33989 bytes 41226588.15 bytes/sec total size is 2860450281344 speedup is 7.54
直前に空き容量確保のために色々移動させたからすごい量です。
ではdfしてみます。
# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda3 14729016 1280256 12688484 10% / /dev/sda1 101086 12180 83687 13% /boot tmpfs 1020812 0 1020812 0% /dev/shm /dev/sdb 2884285104 2750092700 0 100% /var/storage/00/main /dev/sdc 2884285104 2797531524 0 100% /var/storage/00/mirror
一致していない!!!!
使用量が一致しないのはなぜ…?
もういちどrsyncしてみます。
# rsync -av --delete /var/storage/00/main/data /var/storage/00/mirror sending incremental file list sent 6092860 bytes received 14782 bytes 67487.76 bytes/sec total size is 2860450281344 speedup is 468339.55 [root@localhost main]# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda3 14729016 1280256 12688484 10% / /dev/sda1 101086 12180 83687 13% /boot tmpfs 1020812 0 1020812 0% /dev/shm /dev/sdb 2884285104 2750092700 0 100% /var/storage/00/main /dev/sdc 2884285104 2797531524 0 100% /var/storage/00/mirror
同じです。当然ですが…。
du で見てみてもやはりサイズが違います。
# du -shm /var/storage/00/main/ 2685437 /var/storage/00/main/ # du -shm /var/storage/00/mirror/ 2731768 /var/storage/00/mirror/
diffってみます。
# diff -r /var/storage/00/main/ /var/storage/00/mirror/
いつになっても終わりません。
USBメモリのtmpでがりがり書き込まれて寿命が減っていっているような不安にかられるので途中で停止。
Ctrl+Cです。
仕方ないのでいつものlsでの比較をやります。
HDDいっぱいで書き出せない気がするし、USBメモリにはなるべき書き出したくないのでputtyのログを保存することでファイル書き出ししときます。
メモ: ファイルサーバHDD障害対応2
の投稿にある通り、
# ls -laR /var/storage/00/main/ # ls -laR /var/storage/00/mirror/
で出力します。
ファイルに出さいないのでリダイレクトはナシです。
出力されたログファイルから上記投稿通りに余計な行を削除して保存。
Winmergeで比較します。
結果、ファイルは完全に一致してました。
きっとまたディレクトリサイズが違うだけなんだろうなあ、なんでだろうなあ、でもまあ、ディレクトリサイズが違うだけだから大丈夫でしょ、と放置しておいた謎をググってみました。
すぐに出てきました。すごく納得。
Linuxでlsコマンドを実行したときに参照できる「ディレクトリの.. - 人力検索はてな
これでは仕方ないですな!!!
では次にすすみます。LABELの設定です。
LABELが設定されてないことを確認、設定、とやってます。
# e2label /dev/sdb # e2label /dev/sdb 00main # e2label /dev/sdb 00main # e2label /dev/sdc # e2label /dev/sdc 00mirror # e2label /dev/sdc 00mirror
なお、システム領域を確認してみるとこんな感じです。
# e2label /dev/sda1 /boot1
設定がおわったのでfstabに設定します。
メモ: 3TBのドライブはfdiskじゃだめらしいにあるのと同じですが、LABEL指定なのでちょっと違います。
追記するのは下記の内容です。
LABEL=00main /var/storage/00/main ext3 defaults 0 0 LABEL=00mirror /var/storage/00/mirror ext3 defaults 0 0
ところでパーティションが/dev/sdb1とかにならず/dev/sdbだけになっているのは上記投稿にある通りの理由からで、記述ミスではありません。
保存し終わったらリブートしてみます。
そう思ってputtyではなく実機のモニタを見てみるとなんか警告がでてました。
後で調べてみます。
再起動が終わったのでディレクトリを確認します。
# cd /var/storage/00/main/ # ls data lost+found svn this_is_main # cd /var/storage/00/mirror/ # ls data lost+found svn this_is_mirror # df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda3 14729016 1280296 12688444 10% / /dev/sda1 101086 12180 83687 13% /boot tmpfs 1020812 0 1020812 0% /dev/shm /dev/sdb 2884285104 2750092700 0 100% /var/storage/00/main /dev/sdc 2884285104 2797531524 0 100% /var/storage/00/mirror
OKでした。
さて、先程の警告です。
コンソールに出ていた警告 |
EXT3-fs warning: checktime reached, running e2fsck is recommended.
です。チェック時間が来ましたよ。e2fsckをやりなさいとのことです。
やってみます。
# fsck -n /dev/sdb fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) Warning! /dev/sdb is mounted. Warning: skipping journal recovery because doing a read-only filesystem check. 00main has gone 245 days without being checked, check forced. Pass 1: Checking inodes, blocks, and sizes
ここから先が全然すすまない。
このまま放置して仕事行きます。
続きは次回
コメント
コメントを投稿