CentOS51でバックアップサーバ/(4)HDD増設とバックアップ自動化 の変更点


#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でバックアップサーバ)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元