http://centossrv.com/mysql.shtmlを参考にmysql関連の設定をする。あくまで設定のみ、これを参考にインストールしてはいけない。インストールは前節を参照。
個人の趣味の範囲ですが、データーベースのdirを変更しておく。まずdirを作る
# service mysqld stop
# mkdir /Rails/mysql
# chown mysql:mysql /Rails/mysql
/etc/my.cnf の datadir の所のみを
datadir=/Rails/mysql
とし、保存し、mysqlのデータを移しておき,
(私の場合は
# cd /var/lib/mysql
# cp -pr ./ /Rails/mysql/
で出来た。)
# cd /var/lib/mysql
# cp -pr ./ /Rails/mysql
# service mysqld start
mysqlにアクセスできることを確認しておく
ruby-1.8.6 rubygems-1.3.6 rails-2.3.5 をインストールする。
まずはrubyからしますが、カレントDIRにインストールされますので、保存しておくDIRにしておきます。
$ cd /Rails/download
$ wget http://rubyforge.org/frs/download.php/18421/ruby-1.8.6.tar.gz
$ tar -xvzf ruby-1.8.6.tar.gz
$ cd ruby-1.8.6
$ ./configure --enable-pthread
$ make
$ su -
パスワードを入力
# make install
関連でruby-devel、rdoc、irbも入れなければいけないようですが、私の環境ではrdocだけありませんでした(rdocを入れるとirbも入るみたい)
# yum install rdoc
# exit
$ cd ..
rubygemsをインストールします。
$ wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
$ tar -xvzf rubygems-1.3.6.tgz
$ cd rubygems-1.3.6
$ su -
パスワードを入れる
# ruby setup.rb
railsのインストール
# gem install rails <時間がかかる
# exit
yum で rubyはインストールしない。
rubygems-1.3.6をインストールする時にruby-1.8.6が必要、ruby-1.8.6はrubyforgeから持ってくる必要あり、yumでは1.8.5になる。
rails 3 の場合はruby-1.8.7か1.9.2が必要らしい。centosのyumは今でも1.8.5 2011-2-24追記
この説明はdomUを作るときLVMを指定した場合です。最初に
# losetup -f
でLOOPの番号を調べ、
# losetup /dev/表示されたloopナンバー /dev/VGネーム/LVネーム # ここに指定するのはオリジナルのdomUのLVM(コピーされる)
# kaprtx -a /dev/loopナンバー
とし
# ls /dev/mapper
とすると loopナンバーP1やloopナンバーP2等が表示される。
# mount/mapper/loop0p1 /temp1
temp1はマウントポイント。これは/bootになっている筈、又loop0p2 はLVMになっている筈なので、このままではmount出来ない。
# vgchange -ay
とするとloop0p2のLVMがアクティブになるので
# lvscan
をすると新しいLVがある筈。デフォルトでそのまま作ると
/dev/VolGroup00/LogVol00 と /dev/VolGroup00/LogVol01になっていると思う。
(全てデフォルトから変更をしていないとVolGroup00が重複している可能性が大。その時は、vgchange -an で一度inactiveにした後、vgrename 旧VG名 新VG名 でVG名を変更してあげればいい)
どちらかがswapで他方が / の筈なので両方を /temp2にmountしてみてmount出来る方が / 。もちろんswapは必要ない。
コピーされる領域(LVM)をマウントして置く
# mount /dev/VGrails/LVrailsboot /temp3 # VG名、LV名は自分の環境に合わせる
# mount /dev/VGrails/LVrailsroot /temp4 # VG名、LV名は自分の環境に合わせる
カレントDIRを変更し、
# cd /temp1
コピーする
# cp -pr ./ /temp3
# cd /temp2
# cp -pr ./ /temp4
domUのfstabを変更しておく
# gedit /temp4/etc/fstab
ここで /, /boot, swap を それぞれ/dev/xvdb1, /dev/xvda1, /dev/xvdc1 にして保存。
例:/dev/xvdb1 / ext3 defaults 1 1
grub.confの変更 (/boot/grub/grub.conf)
kernel /vmlinuz-バージョン ro root=/dev/xvda2 rhgb quiet を
kernel /vmlinuz-バージョン ro root=/dev/xvdb1 rhgb quiet
にエントリー分あるので変更する。
全てをアンマウントする
# cd
# umount /temp1
# umount /temp2
# umount /temp3
# umount /temp4
kpartxやlosetupを元に戻す。
# kpartx -d /dev/loopナンバー
# losetup -d /dev/loopナンバー
次にxenの設定ファイルを変更する。
# gedit /etc/xen/rails
disk = [ "phy:/dev/オリジナルのVGネーム/オリジナルのLVネーム,xvda,w" ]
の部分を
disk = [ "phy:/dev/VGrails/LVrailsboot,xvda1,w" ,"phy:/dev/VGrails/LVrailsroot,xvdb1,w" ,"phy:/dev/VGrails/LVrailsswap,xvdc1,w" ]
に変更し保存。
これでdomUを走らせればいい。
Xenの仮想化でdomUを作る時、イメージファイルやLVM,ext3等の領域は1つしか指定できませんので、新規にdomUを作ると、指定したイメージファイルや領域の中にLVMを作り、デフォルトではそこにboot用、root用、swap用の3つのLV(ロジカル・ボリューム)を作ります。
つまりLVMの中にさらにLVM(LVMを指定した時)を作るようなイメージになります。
個人的にこの2重の構造は抵抗があり、オフラインからmountするのも大変ですので、domUを作成後、3つの領域を直接LVMにします。
準備として新しくコピーされるLVM領域を作ってフォーマットしておきます。
まずPVを作る
# pvcreate /dev/sdd1 # sdd1は各自の環境による
VGを作る
# vgcreate VGネーム /dev/sdd1
LVを作る
# lvcreate -L 10G -n LVネーム VGネーム
10Gは作るLVのサイズ、私はLVrailsboot (100M), LVrailsroot (15G), LVrailsswap (2G)を作りました。
各領域をフォーマット
# mkfs.ext3 /dev/VGネーム/LVrailsboot
# mkfs.ext3 /dev/VGネーム/LVrailsroot
# mkswap /dev/VGネーム/LVrailsswap
amandaサーバー(samba)で
# su - amanda
-bash-3.2$ /usr/sbin/amcheck intra
ここで どつぼ にハマル
WARNINGS: web: selfcheck request failed: timeout waiting for ACK
とエラーが出る。ファイヤーウォール等を見直しても直らない。
domU(samba)からdomU(web)にpingを打つと、 Destination Host Unreachable となり、pingが届かない。これはdomU同士のみpingが届かないだけで、それ以外(domOやxenに入っていないサーバーやrouterには問題なく届く) domU(web)はwebをインターネットに公開し、mailサーバー等も動いているが問題は無い。
何でdomU同士のみpingが届かないの!!!!!
原因はもちろん設定ミス
判明するとまったくばかばかしいくらいのミスでしたが、エラーが出ている時は気がつかないものですね!!
原因はxenのdomU (webとsamba)の設定ファイル(/etc/xen/ドメインUホスト名)に同じMACアドレスの設定がしてあった。
これはdomUを作っていく時はxenが自動的に重複しないアドレスを設定してくれるが、私はその後、domUのコピーなどをし、同じmacアドレスになっているのを気が付かなかった。 あーーしんどかった。違うMACアドレスを設定し、domUを立ち上げ直すと問題は解決。
この時curinfoやindexのディレクトリが無いとNOTE:が出るが、次回に作ると書いてるので問題ない。
最初のバックアップをする
-bash-3.2$ /usr/sbin/amdump intra
これで最初のバックアップが出来る(もちろん最初は時間がかかる)
次にcronの設定
-bash-3.2$ crontab -e
として、下記を書き込む。
0 16 * * 1-7 /usr/sbin/amcheck -m intra
45 1 * * 1-7 /usr/sbin/amdump intra
この設定の意味は毎日午後4時にチェックをし問題があればe-mailする(問題が無ければメールはされない)、毎日午前1時45分にバックアップをする(結果のメールが届く)
テストその他で作ったバックアップデーターを消去し、初期化するには
# su - amanda
-bash-3.2$ rm -r /var/log/amanda/intra/curinfo/*
-bash-3.2$ rm -r /var/log/amanda/intra/index/*
-bash-3.2$ rm -r /var/log/amanda/intra/log*
-bash-3.2$ rm -r /var/log/amanda/intra/amdump*
-bash-3.2$ rm -r /var/log/amanda/*.debug ← これは消去しなくてもいいが、残しておくと本番で見にくくなる
ラベルを付ける事によりデーターは初期化され消去される。
-bash-3.2$ cd /Data/LinuxBackup/intra/slots
-bash-3.2$ for ((i=1; $i<=29; i++)); do /usr/sbin/amlabel -f intra intra-$i slot $i; done
仮想テープをリセットし、データが消去されたか確認する
-bash-3.2$ /usr/sbin/amtape intra reset
-bash-3.2$ /usr/sbin/amadmin intra find
No dump to list と表示される。
-bash-3.2$ /usr/sbin/amadmin intra ホスト名 /ディスク名 /ディスク名 他のホスト名 /ディスク名 /ディスク名
とし、次回のバックアップを強制的にフルバックアップにする。
確かに次のバックアップはフルバックアップになったが各ディスクの次回のフルバックアップがバラバラのままで、amandaはどこかで、各ディスクが何回目のバックアップかを保持しているようです。どこにその設定があるかわから無いので、リカバリーにはそのままでも問題ないので調べていません。
バックアップされる側の全てのサーバーで下記を行う。
amanda-client のインストール
# yum -y install amanda-client
.amandahosts の設定
# gedit /var/lib/amanda/.amandahosts
server3.domain.name amanda ← amandaサーバーのホスト名をドメインを含んで記入する
xinetd で起動する為の設定ファイル
# gedit /etc/xinetd.d/amanda
amanda の内容(必要箇所のみ)
disable = no # yes を no に変更する
xinetd をリスタートする
# service xinetd restart
amandaのプロセスをチェックする
# lsof | grep amanda
ファイヤーウォールの設定。udpの10080を開ける
システム>管理>セキュリティレベルとファイヤーウォールの設定をクリック
その他のポートをクリック、追加をクリック、ポートに10080を入れ、プロトコルをudpにし、OKをクリック、適用をクリック、OKをクリック、確認ダイアログが開くのでOKをクリック。これでudp 10080 がファイヤーウォールを通れる。
私ははiptables.shというスクリプトを作りいろいろな設定をしてあり、その中で iptables -A INPUT -s $LOCALNET -j ACCEPT ($LOCALNETは使用しているネットワークを定義している。この意味は内部からのアクセスをすべて許可)ので特に設定はしなかった、
参考にしたURL
Centralized Backup Server with Amanda on CentOS
日本語のamandaのページ「注」amndabackupユーザとしてコマンドを入力する時 ammt 等はパスが通っていないのでエラーになるので /usr/sbin/を付ける事
domUのsambaにamandaサーバー関係をインストール
# yum -y install amanda*
2012/1/3追記:yumでインストールされるバージョンは2.5でもhttp://www.zmanda.com/download-amanda.phpにあるバージョンは3.3になっている。又設定ファイル等も変更になっているので別のページを作成したので、ここをクリック。追記ここまで
/etc/xinetd.dにあるamanda、amandaidx、amidxtapeをgedit等でdisable = yesを disable = no に換え保存する。
設定ファイルのコピー
#cp -r /etc/amanda/DailySet1 /etc/amanda/intra
amanda.confの編集
# gedit /etc/amanda/intra/amanda.conf
amanda.confの内容(必要箇所のみ表示)
org "バックアップの名前" # バックアップの結果がe-mailされるとき件名の最初にここに設定した文字列が入る
mailto "結果を受け取るためのメールアドレス"
netusage 600Kbps # ネットワーク帯域、のデフォルトのまま
dumpcycle 2 weeks # 2週間で1回のフルバックアップになる
runspercycle 14 # バックアップする曜日は crontab で設定する
tapecycle 29 tapes # 必ずdumpcycle+1 2週間(14日)なら15にする。私はdiskに余裕があるので29にした。
tpchanger "chg-disk"
tapedev "file:/Data/LinuxBackup/intra/slots" # ここに仮想テープがtaprcycleで指定した個数分出来、バックアップされたデーターが保存される。
changerfile "/etc/amanda/intra/changer"
# tapetype HP-DAT ← コメントアウトする
# labelstr "^DailySet1-[0-9][0-9]*$" ← コメントアウトする
ここから挿入
tapetype HARDDISK
define tapetype HARDDISK {
comment "backup to virtual tape"
length 30 gbytes # each tape is 30GB
}
ここまで挿入
amrecover_changer "changer"
ホールディング ディスクとはバックアップをテープに書き出す前にハードディスク内に保存するための設定、使わないのでコメントアウト
#holdingdisk hd1 { ← コメントアウト
# comment "main holding disk" ← コメントアウト
# directory "/dumps/amanda" # where the holding disk is ← コメントアウト
# use -100 Mb # how much space can we use on it ← コメントアウト
# a non-positive value means:
# use all space but that value
# chunksize 1Gb # size of chunk if you want big dump to be ← コメントアウト
# dumped on multiple files on holding disks
# N Kb/Mb/Gb split images in chunks of size N
# The maximum value should be
# (MAX_FILE_SIZE - 1Mb)
# 0 same as INT_MAX bytes
# } ← コメントアウト
infofile "/var/log/amanda/intra/curinfo"
logdir "/var/log/amanda/intra"
indexdir "/var/log/amanda/intra/index"
/etc/amanda/intra/disklistにバックアップしたいホスト名、ディレクトリー、圧縮設定を記入する(自分自身もhostname -sで表示される名前を指定する)
server1 /home comp-user-tar
server1 /var comp-user-tar
server2 /home comp-user-tar
server2 /var comp-user-tar
/etc/hostsにバックアップしたいホスト名とIPアドレスを最後に付け足す
192.168.xxx.xxx server1
192.168.xxx.xxx server2
バックアップディレクトリーを作る
# mkdir -p -m 770 /Data/LinuxBackup/intra/slots
# chown -R amanda:disk /Data/LinuxBackup
テープリストを作る
# touch /etc/amanda/intra/tapelist
# chown -R amanda:disk /etc/amanda/intra
29本の仮想テープを作る
# su - amanda
-bash-3.2$ cd /Data/LinuxBackup/intra/slots
-bash-3.2$ for ((i=1; $i<=29; i++)); do mkdir slot$i; done
-bash-3.2$ ln -s slot1 data
テープのテスト
-bash-3.2$ /usr/sbin/ammt -f file:/Data/LinuxBackup/intra/slots status
/Data/LinuxBackup/intra/slotsにinfoというファイルが出来る
仮想テープにラベルを付ける
-bash-3.2$ for ((i=1; $i<=29; i++)); do /usr/sbin/amlabel intra intra-$i slot $i; done
各スロットに4個のファイルが出来ている
テープをリセットする
-bash-3.2$ /usr/sbin/amtape intra reset
rootの戻り、バックアップされるホストと自分自身を .amandahosts に記入し保存する
-bash-3.2$ exit
# gedit /var/lib/amanda/.amandahosts
.amandahostsの内容
server1 amanda
server2.domain.name amanda ← server2はamandaが走っているサーバー。 自分自身はドメインも記入すること。ホスト名だけだと amcheck の時に"amanda@xxx.xxxx.xxx"が無いと怒られる。
intraディレクトリーを作る
# mkdir /var/log/amanda/intra
# chown -R amanda:disk /var/log/amanda
xinetd をリスタートする
# service xinetd restart
amandaのプロセスをチェックする
# lsof | grep amanda
domUのデスク領域を作る。
私はLVMとして作りました。このマシーンにはVGとしてVGdomUがありますので、ここに
LV名:LVweb サイズ:13GBとして作る。
# lvcreate -L 13G -n LVweb VGdomU
これで /dev/VGdomU/LVweb として領域が出来る。ここからwebという名のdomUを作っていく。
アプリケーション>システムツール>仮想マシンマネージャーで表示させ、IDがxen(デフォルト)を選択し新規をクリック。実はこの画面はこのdomUを作った後の、画面なので一番下にwebが表示されていますが、作成時点ではもちろんありません。
次は進め方が書いてあるので読んだら進むをクリック
作るdomUの名前を入力し進む
準仮想化を選び進むをクリック
次はデフォルトのまま進む
URLを入力し、後は空欄で進む
ブロック・デバイスを選び、ロケーションに最初に作ったLVMの領域を入力し進む
共有物理装置を選び進む
割り当てるメモリーとCPUの数を入力し、進む
次に今までの入力の確認画面が表示されるので進むをクリック。
これでインストールが開始されるので最初のインストール(centosのインストール)と同じように進む。私はもう一つsambaというdomUを作りました。
ASUSのM3N78-VMにCentOS 5.3(5.4では2点とも問題無し)をインストールしようとしたところ次の2点で問題がありました。
1:AHCI DRIVERのインストールで5分以上時間がかかる
2:SATAのハードディスクが認識されない。
以上の問題はインストール時 BOOT:で止まって通常はEnterを押すところで
linux pci=nomsi boot と入力しEnterを押す。
この時キーボードはUS Typeですので = はひらがなの へ に割り当てられています。
これでインストールできます.
M4A78-EMの時同じ現象になりましたが、上記の用に設定するとインストールできましたが、BIOSを変更しても出来ました。BIOSのPowerのACPI 2.0 Support と ACPI APIC Support を両方共Enableにするとインストール出来ました。又Powerメニューの中にSuspend Modeもありますが、どの設定でも無関係。