#navi(CentOS51でバックアップサーバ)
- バックアップ更新の手順までは前回確認したが、バックアップ先をどうするかが問題である。
- 別サーバを常時立ち上げておくのもわずらわしいので、HDDを増設して、そこにバックアップすることにした。併せて自動かも確認した。
- バックアップサーバで検証したものだが、近々に現サーバと入れ替える予定なので、このまま利用することに。。(2008/6/20頃 実施)
#contents
**HDDの増設 [#m8ec77ed]
- 長年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に買収されたのか?迷ったが、一応[[情報>http://www.tacktech.com/display.cfm?ttid=379]]は見つけた。横にして2個使うという珍しい設定。
&lightbox{lbimg/addHDD.jpg,HDD,400x250 };
//&ref(addHDD.jpg);&br;
//&lightbox{lbimg/addHDD.jpg,HDD,400x250 };
&ref(addHDD.jpg,,50%,add_HDD);&br;
- で、取り付け完了。写真の下側ドライブが増設HDD。
- なお、参考にしたサイトは「お便利サーバ.com」の[[LinuxOSの使いこなし術>http://www.obenri.com/_operation/adddisk.html]]を参照。
**ドライブ確認 [#lc66e069]
- まずは、増設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等のデバイス名について [#b26d925c]
- WIndowsでは、IDEのインタフェースにしたがって、マスター/スレーブ、プライマリ/セカンダリ と言う形でドライブを認識するが、LinuxOSではハードディスクの取付け位置によって「デバイス名」 が決定される。つまり、呼び名が異なる。
プライマリコントローラーのマスターポートに接続 = /dev/hda
プライマリコントローラーのスレーブポートに接続 = /dev/hdb
セカンダリコントローラーのマスターポートに接続 = /dev/hdc
セカンダリコントローラーのスレーブポートに接続 = /dev/hdd
- もともと、Linuxサーバをインストールしたものでもあり、「hdb」として、問題なく認識している。ジャンパー設定も間違っていなかったということ。
** HDDの領域設定 [#ofa42b67]
- 基本的に「fdisk」コマンドを使用する。 まず、状態確認の「サブコマンド p」。
- 昔サーバで使ったので、その名残のパーティッションがそのまま残っている。デバイス名の後ろの数字がパーティッションを意味している。パーティッションを削除して、改めて領域確保を行う。&br;
①状態確認
[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のフォーマット [#a4a1286c]
- コマンドは、「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.
** マウント設定 [#sd3bdaba]
- ハードディスクの増設はいとも簡単に終了するが、このドライブに簡単にアクセスできるよう、マウント設定を行う。
- 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
** バックアップコマンドのスクリプト化 [#w8cf15ba]
- バックアップの手順は、前回確認したとおりであるが、これを自動化するため、まず実行可能なスクリプトにする。といっても、難しいことではない。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
** バックアップの自動化 [#ac32191b]
- 増設した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
#navi(CentOS51でバックアップサーバ)