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

Last-modified: 2008-07-05 (土) 16:41:25 (5792d)

  • バックアップ更新の手順までは前回確認したが、バックアップ先をどうするかが問題である。
  • 別サーバを常時立ち上げておくのもわずらわしいので、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個使うという珍しい設定。    add_HDD
  • で、取り付け完了。写真の下側ドライブが増設HDD。

ドライブ確認

  • まずは、増設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

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   リンク元