CentOS51でバックアップサーバ/(4)HDD増設とバックアップ自動化 のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- CentOS51でバックアップサーバ/(4)HDD増設とバックアップ自動化 へ行く。
- 1 (2008-07-05 (土) 15:37:46)
- 2 (2008-07-05 (土) 16:41:25)
- 3 (2008-07-05 (土) 16:41:25)
- バックアップ更新の手順までは前回確認したが、バックアップ先をどうするかが問題である。
- 別サーバを常時立ち上げておくのもわずらわしいので、HDDを増設して、そこにバックアップすることにした。併せて自動かも確認した。
- バックアップサーバで検証したものだが、近々に現サーバと入れ替える予定なので、このまま利用することに。。(2008/6/20頃 実施)
HDDの増設 †
- 長年linuxサーバを運用しているが、実はHDDはいつもシングルドライブだった。サーバって、それほど容量食わないもんね。イメージ掲示板やブログで写真が増えたと言っても、コンテンツとアプリソフト全部合わせても、300MB超えていない。
- メインに80GBのHDD入れているが、OS含めての使用状態をチェックしても、ほとんど数%のオーダーである。
[root@kuraric5 ~]# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00 77257664 4474944 68794856 7% / /dev/hda1 101086 23066 72801 25% /boot tmpfs 127816 0 127816 0% /dev/shm
- 容量的には問題ないんだけれど、バックアップ先として考えてた時には、空きがあればよいと言うものではない。HDD自体が故障した時は、いくらパーティッションが分けてあっても、安全性は低い。最低でも、別ドライブにする必要がある。
- 使ったHDDは、「Quantum fireball EX 6.4GB」で、昔、何かの試験用にハードオフで買ったもの。スレーブで使うためのジャンパーの設定が分からなくてネットで探した。QuntumはMaxtorに買収されたのか?迷ったが、一応情報は見つけた。横にして2個使うという珍しい設定。
- で、取り付け完了。写真の下側ドライブが増設HDD。
- なお、参考にしたサイトは「お便利サーバ.com」のLinuxOSの使いこなし術を参照。
ドライブ確認 †
- まずは、増設HDDを認識しているのかどうかを確認。コマンド名は、「dmesg」
[root@kuraric51 ~]# dmesg Linux version 2.6.18-53.1.21.el5 (mockbuild@builder6.centos.org) (gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Tue May 20 09:34:18 EDT 2008 Probing IDE interface ide0... hda: ST380011A, ATA DISK drive hdb: QUANTUM FIREBALL EX6.4A, ATA DISK drive ★ ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 Probing IDE interface ide1... hdc: Pioneer DVD-ROM ATAPIModel DVD-106S 012, ATAPI CD/DVD-ROM drive hdd: PLEXTOR CD-R PX-W8432T, ATAPI CD/DVD-ROM drive ide1 at 0x170-0x177,0x376 on irq 15 hda: max request size: 512KiB hda: 156301488 sectors (80026 MB) w/2048KiB Cache, CHS=16383/255/63, UDMA(33) hda: cache flushes supported hda: hda1 hda2 hdb: max request size: 128KiB hdb: 12594960 sectors (6448 MB) w/418KiB Cache, CHS=13328/15/63, UDMA(33) hdb: cache flushes not supported hdb: hdb1 hdb2 hdb3 ide-floppy driver 0.99.newide
LinuxのHDD等のデバイス名について †
- WIndowsでは、IDEのインタフェースにしたがって、マスター/スレーブ、プライマリ/セカンダリ と言う形でドライブを認識するが、LinuxOSではハードディスクの取付け位置によって「デバイス名」 が決定される。つまり、呼び名が異なる。
プライマリコントローラーのマスターポートに接続 = /dev/hda プライマリコントローラーのスレーブポートに接続 = /dev/hdb セカンダリコントローラーのマスターポートに接続 = /dev/hdc セカンダリコントローラーのスレーブポートに接続 = /dev/hdd
- もともと、Linuxサーバをインストールしたものでもあり、「hdb」として、問題なく認識している。ジャンパー設定も間違っていなかったということ。
HDDの領域設定 †
- 基本的に「fdisk」コマンドを使用する。 まず、状態確認の「サブコマンド p」。
- 昔サーバで使ったので、その名残のパーティッションがそのまま残っている。デバイス名の後ろの数字がパーティッションを意味している。パーティッションを削除して、改めて領域確保を行う。
①状態確認
[root@kuraric51 ~]# fdisk /dev/hdb コマンド (m でヘルプ): p Disk /dev/hdb: 6448 MB, 6448619520 bytes 255 heads, 63 sectors/track, 784 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス Boot Start End Blocks Id System /dev/hdb1 * 1 13 104391 83 Linux /dev/hdb2 14 752 5936017+ 83 Linux /dev/hdb3 753 784 257040 82 Linux swap / Solaris
②既存のパーティッションを削除
コマンド (m でヘルプ): d 領域番号 (1-4): 1 コマンド (m でヘルプ): d 領域番号 (1-4): 2 コマンド (m でヘルプ): d No partition is defined yet! コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
③再度、領域を確保する (何やら、グチャグチャ文句を言ってきたが、無視して実行した)
[root@kuraric51 ~]# fdisk /dev/hdb このディスクのシリンダ数は 13328 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 1 最初 シリンダ (1-13328, default 1): 1 終点 シリンダ または +サイズ または +サイズM または +サイズK (1-13328, default 13328): 13328 コマンド (m でヘルプ): p Disk /dev/hdb: 6448 MB, 6448619520 bytes 15 heads, 63 sectors/track, 13328 cylinders Units = シリンダ数 of 945 * 512 = 483840 bytes デバイス Boot Start End Blocks Id System /dev/hdb1 1 13328 6297448+ 83 Linux コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。
HDDのフォーマット †
- コマンドは、「mke2fs」。 LinuxOS基本の "ext3" 形式でフォーマットする。
- オプションの 「j」は、ジャーナリング機能(ディスク障害時の復旧のための情報)を追加したext3形式を指定するもの
[root@kuraric51 ~]# mke2fs -j /dev/hdb1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 788704 inodes, 1574362 blocks 78718 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1614807040 49 block groups 32768 blocks per group, 32768 fragments per group 16096 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
マウント設定 †
- ハードディスクの増設はいとも簡単に終了するが、このドライブに簡単にアクセスできるよう、マウント設定を行う。
- LinuxOS側のドライブで、/backup と言う名前のディレクトリを作成し、これに増設したHDDをマウントする。こうすれば、増設HDDは、DIRと同じに見えるようになる。
[root@kuraric51 ~]# mkdir /backup [root@kuraric51 ~]# mount /dev/hdb1 /backup [root@kuraric51 ~]# ls /backup lost+found [root@kuraric51 ~]# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/VolGroup00-LogVol00 74814864 3832092 67121064 6% / /dev/hda1 101086 23331 7253 25% /boot tmpfs 192740 0 192740 0% /dev/shm /dev/hdb1 6198404 143520 5740012 3% /backup
- 起動時にファイルシステムをマウントさせるための設定は以下のとおり
[root@kuraric51 ~]# vi /etc/fstab === この1行を追加する === /dev/hdb1 /backup ext3 defaults 1 3
バックアップコマンドのスクリプト化 †
- バックアップの手順は、前回確認したとおりであるが、これを自動化するため、まず実行可能なスクリプトにする。といっても、難しいことではない。DOSのbatファイルみたいなものである。
- Linuxの場合は、コ万度を並べたファイルに実行権限を与えればよい。バックアップ関係のコマンドファイルをbackup.sh と言う名前で保存したら、
[root@kuraric5 backup]# chmod 700 backup.sh [root@kuraric5 backup]# ls -l backup.sh -rwx------ 1 root root 610 6月 21 10:50 backup.sh
- 実行する際は、これだけ。
[root@kuraric5 backup]# ./backup.sh
- ただし、注意事項がある。実は、tarコマンドで結合(圧縮)すると、各ファイルやディレクトリーの「相対パス」情報を保持した形で最終ファイルを作成する。
- このため、リカバリーを実行する時に、もしバックアップ時の実行位置(DIR)と異なると、とんでもない場所にDIR(ファイル)を作成、復元してしまうことになる。
- このため、スクリプトの最初に 位置変更コマンド(cd /)を入れておくことにする。
[root@kuraric51 backup]# vi backup.sh ========================= #!/bin/bash cd / tar cvf backup/OP.tar /var/www/OpenPNE/ tar cvf backup/wp.tar /var/www/html/wordpress/ tar cvf backup/wiki.tar /var/www/html/wiki/ tar cvf backup/sgc.tar /var/www/html/sgcounter/ tar cvf backup/bbs16.tar /var/www/html/bbs16/ tar cvf backup/bbs16_cgi.tar /var/www/cgi-bin/bbs16/ tar cvf backup/bbs_cgi.tar /var/www/cgi-bin/bbs/ tar cvf backup/pw.tar /var/www/.htpasswd mysqldump -u root -ppassword openpne > /backup/openpne_dump mysqldump -u root -ppassword wordpress > /backup/wordpress_dump
- これに対応した、リカバリー用スクリプトは
[root@kuraric51 backup]# vi backup.sh ============================ #!/bin/bash # /home/eizo/配下に、バックファイル一式(backup/)を置く cd / rm -rf /var/www/html/wordpress/ tar xvf /home/eizo/backup/wp.tar rm -rf /var/www/html/wiki/ tar xvf /home/eizo/backup/wiki.tar rm -rf /var/www/html/sgcounter/ tar xvf /home/eizo/backup/sgc.tar rm -rf /var/www/html/bbs16/ tar xvf /home/eizo/backup/bbs16.tar rm -f /var/www/.htpasswd tar xvf /home/eizo/backup/pw.tar rm -rf /var/www/OpenPNE/ tar xvf /home/eizo/backup/OP.tar rm -rf /var/www/cgi-bin/bbs16 tar xvf /home/eizo/backup/bbs16_cgi.tar rm -rf /var/www/cgi-bin/bbs tar xvf /home/eizo/backup/bbs_cgi.tar mysql -u root -ppassword openpne < /home/eizo/backup/openpne_dump mysql -u root -ppassword wordpress < /home/eizo/backup/wordpress_dump /etc/rc.d/init.d/mysqld restart
バックアップの自動化 †
- 増設したHDDを利用して、バックアップの自動化を行う。
- バックアップのスクリプトは既にできているので、これをタスクに登録するだけでよい
- 毎朝、5AMに、backup.sh を実行することにする
[root@kuraric5 ~]# crontab -e crontab: installing new crontab ================================= 00 05 * * * /backup/backup.sh ★追加行★ 【以下は略】
- 翌日、チェックすると、ちゃんとできている(タイムスタンプにご注目!)
[root@kuraric5 /]# ls -l backup/ 合計 246924 -rw-r--r-- 1 root root 32870400 6月 22 05:00 OP.tar -rw-r--r-- 1 root root 688 6月 22 05:00 backup.dat -rwx------ 1 root root 634 6月 21 11:16 backup.sh -rw-r--r-- 1 root root 127416320 6月 22 05:00 bbs16.tar -rw-r--r-- 1 root root 112640 6月 22 05:00 bbs16_cgi.tar -rw-r--r-- 1 root root 2273280 6月 22 05:00 bbs_cgi.tar -rw-r--r-- 1 root root 18639290 6月 22 05:00 openpne_dump -rw-r--r-- 1 root root 10240 6月 22 05:00 pw.tar -rw-r--r-- 1 root root 143360 6月 22 05:00 sgc.tar -rw-r--r-- 1 root root 10813440 6月 22 05:00 wiki.tar -rw-r--r-- 1 root root 770018 6月 22 05:00 wordpress_dump -rw-r--r-- 1 root root 59494400 6月 22 05:00 wp.tar