参考にしたWEBhttp:\\lab.tricorn.co.jp/toda/2294、http://lab.tricorn.co.jp/toda/2477、このリンクはその2と3(その1は説明のみ)
*smbldap-toolsをインストールするために http://centossrv.com/rpmforge.shtml を参考にしてrpmforgeリポジトリを導入しておく。
*必要なプログラムのインストール
# yum -y install nss_ldap samba openldap openldap-servers smbldap-tools
2010年4月19日(月)悪夢が襲ってきました...といっても自分が悪いのですが。この日、サーバーに設置してあるデジタル電圧計の5Vが5.4Vに上がっていましたので、5Vラインを少し下げようと負荷(もちろんコンピュータ)を付けたまま、半固定VRを調整ししていました。(この電源は新しく製作したもので、設置前に負荷をかけ5Vに調整していましたが、この調整が全負荷で行った関係で、実際は全負荷がかかっていないので電圧が高くなっていた。)これって安定化が悪すぎ!!
この電源は3Aのチョッパ型のSW電源モジュールを強引にパラレルにし、最大6Aをとれる仕様ですが、この2つのSWモジュールのバランスを取るために半固定のVRを少しずつ可変し両方から、ほぼ同じ電流が流れるように調整しなくてはならず。やりにくかったのですが、この時、ミスって片方のSWを壊し、この回路が導通し(つまり入力の24Vとショートした)5Vラインが異常に高くなりました。!!!
壊れた物:ほぼ全部
マザーボード、7台の2.5インチハードディスク、1台のSSD,CPU、デジタル電圧・電流計
壊れなかった物
メモリー2GBx4個、Raidボード(highpoint3510) これらは5Vを使っていない見たい。とDVDドライブこれが壊れなかったのは、単なる耐性の問題?
この中で一番高いのはhighpointの3510ですが、1番困ったのは、ハードディスクとSSDが壊れたこと
このコンピューターはデスク4台で(SSDをふくむ)XENを使い仮想コンピューター三台を動かし、その内の1台で別のRAID5構成(320GBx4台=960GB)のディスクにこの3台のdomainUとdomein0及び別のWin XPのバックアップをしていたのですが、肝心のバックアップディスクも同じ5Vラインを使っていたので昇天し、結局オリジナルもバックアップも無い状態になってしまい、バックアップの意味が無くなりました.
という訳で、今はバックアップ用のコンピューターを物理的に別のコンピュタにし、バックアップする時間に電源が入るようにし、バックアップ後、電源を落とすように考えています.現在は実験段階ですが、近々結果を御報告します.
2010年5月12日追記
xenカーネルは休止などをサポートしてないみたい。普通の5.4カーネルを別のコンピュータに入れて見たけどハイバネートが途中で止まる。とりあえず今はバックアップに使う4台の2.5インチハードデスクの電源を別の5Vにして、運用中(下の写真の5V別と書いてあるモジュール)。私が使っている日立の7K320シリーズは5V 800mAとなっていて4台だと3.2Aになる。SWモジュールの最大電流は3Aで少し足りない。800mA流れるのは多分ブート時のデスクが回転し始める(スピンアップ)時の電流だと勝手に解釈し、raidコントローラーの3510のほうでスピンアップを2台ずつする設定にして逃げてある。本当は電流を測るといいのだけれど、その際また壊しそうなのでやめている!!
ある日から突然 warning: trouble injecting bounce message, will try later がログに記録されるようになり、/var/log/maillog が巨大になっていた。このエラーは1分間に30回くらい記録されている。ググるとパーミッションエラーが発生しているらしい。
# for i in /var/qmail/queue/mess/*; do chown qmailq:qmail $i/*;done
をすると以降エラーはでなくなった。
11月初旬に突然logのrotateが止まり、ログが肥大していた。
logrotate.conf等を見直してみたが正しいみたい。
マニュアルでロテートしてみる
# /usr/sbin/logrotate /etc/logrotate.conf をすると
error: conman:21 error verifying olddir path /var/log/conman.old/: No such file or directory
と表示された。conmanってなんだ?? 調べてみるとリモコン用のプログラムみたい。デフォルトでは起動していないし、使う予定もなさそうなので/var/log/conman.old/を作るより /etc/logrotate.d/ にあるconmanを削除し
# /usr/sbin/logrotate /etc/logrotate.conf
をするとエラーが無くなった。
注意:この時apacheは古いログを使いつづけるみたい。apacheを
# service httpd graceful
でスタートし直すと新しいaccess_log を使うようになった。
(それまではaccess_log.1に書き込んでいた.)
以前に作ったrailsのアプリケーションをコピーして使えるようにする。
このアプリケーションは will_paginete と paginating_find を使っていたのでインストールする。注:will_paginate は mislav-will_paginate に名前が変わっている
mislav-will_pagineteのインストール
# gem sources -a http://gems.github.com/
# gem install mislav-will_paginate
次にpaginating_findをインストールするが、その前にアプリケーションのルートDIRに移っておく
# cd /Rails/report
# ruby script/plugin install http://svn.cardboardrocket.com/paginating_find
# cd
rails2.2位からmysqlのドライバーが入らなくなったので入れる
# yum -y install mysql-devel
# gem install mysql -- --with-mysql-config
Successfully installed mysql-2.7
1 gem installed
の後に、大量の No definition for xxxxxxxx が出たが、大丈夫見たい
mysql dataの復元
古いrails applicationが入っているサーバーの方でmysqldが走っているのを確認して
$mysqldump -A -u root -pパスワード > SqlAllData.sql
-pとパスワードの間にはスペースを入れてはいけない。
として、全databaseのバックアップをして置き、このサーバーで
# service mysqld start
# mysql -u root -pパスワード < SqlAllData.sql
としてdatabaseを復元する。
個人的な好みでrailsの標準のWEBrickよりmongrelの方がいいので
# gem insatll mongrel
でインストールする。大量の no definition が表示されたが問題ないみたい。
でもって、アプリケーションのルートから(私の場合は /Rails/report)
# ruby script/server
でWEBサーバ(mongrel)を走らせ、webブラウザからlocalhost:3000/reports (reportsは以前作ったアプリケーション)とすると、uninitialized constant ApplicationController とエラーが出る。そう言えばapplicaton.rbの名前が変更になっていたっけ。なので /Rails/report/app/controllers/application.rb を application_controller.rb に変更するとOKになった.
アプリケーションを走らせたら2つのDEPRECATION WARNINGが出た
最初は :session_key が :keyに変更になった。
rails applicationの configフォルダーにある environment.rb の
:session_key を :key に変更する。
もうひとつは、protect_from_forgery の :secret オプションがなくなったので、
app/controllers にある application_controller の protect_from_forgery の行を消去すると WARNINGは無くなった。
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