2009年5月31日日曜日

busyboxのselinux

lxc関係でテストしてみたくなり、busyboxを最新にしてselinuxのアプレットを有効にしたところ
/sbin/restorecon が /etc/init.d/udevにあってなぜかバッチを殺してくれる。

なのでやっぱり、busyboxのselinuxは使わない

2009年5月27日水曜日

壊れたマシンと入れ替える(その1)

ディスクの下準備はできたので、バックアップディスクで動作しているマシンを入れ替えます。

バックアップで稼働中の仮想サーバーのアーカイブをとって新しいサーバーにリストアします。

# find 仮想サーバのルート/ -depth -print | cpio -o -H newc > アーカイブファイル

ファイルが3GBぐらいになるので、scpやsshのシェルを使ったファイル転送を避けるため、新規側でrsyncサーバを動作させました。

新規側
# lrp_load -b rsync

/etc/rsyncd.conf を編集して /homeに受け入れるように作成
(一時的なので適当)

[home]
path=/home
read only = false
uid=root

サーバ起動
# rsync --daemon

アーカイブを作成した側から
# rsync -v アーカイブファイル rsync://サーバIP/home/

8.7M/sec(約70Mbit/sec)で転送。100BASE-T なので限界でしょう。

ミラー上にLVMを作る

前回の続き

再起動してraidを確認。/dev/md0もできているはず。
#mdadm --detail /dev/md0

lvm2をロード
# lrp_load -b lvm2

以前作っておいたユーティリティ(41ベータ版にもある) /usr/sbin/make_lvm.sh を使ってみる。
make_lvm.shは /system/make_lvm.conf からLVMを作成する。
/system/samplesにサンプルがあるのでこれをコピーしてから編集する

#cp /system/samples/make_lvm.conf /system/make_lvm.conf
#e3 /system/make_lvm.conf


LV_SWAP=1g
LV_HOME=20g
LV_VAR=20g
LV_TMP=1g
LV_OTHER=

VG_NAME=vg

LV_SWAP_NAME=lvswap
LV_HOME_NAME=lvhome
LV_VAR_NAME=lvvar
LV_TMP_NAME=lvtmp
LV_OTHER_NAME=lvother

LABEL_SWAP=SWAP
LABEL_VAR=VAR
LABEL_HOME=HOME
LABEL_TMP=TMP
LABEL_OTHER=OTHER

LV_SWAP,LV_HOME,LV_VAR,LV_TMP,LV_OTHERに容量が指定していればそのLVMをデバイス上に作成する。
swap以外のファイルシステムはext3

上の例だと
ラベル 容量 ファイルシステム
SWAP 1GB swap
VAR 20GB ext3
HOME 20GB ext3
TMP 20GB ext3

が作られる。
デバイスは/dev/md0を指定すること
# make_lvm.sh /dev/md0

/etc/fstabを編集

# /etc/fstab: static file system information.
#
#
proc /proc proc noauto 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0
/dev/cdrom /cdrom iso9660 noauto,ro
#/dev/hda2 none swap sw 0 0
LABEL=VAR /var ext3 defaults 0 2
LABEL=HOME /home ext3 defaults 0 2
LABEL=TMP /tmp ext3 defaults 0 2
LABEL=SWAP none swap sw 0 0

# You may edit only under line when you know that you do
tmpfs / tmpfs rw,size=160M
#tmpfs /tmp tmpfs rw,size=12M
#tmpfs /var tmpfs rw,size=24M


lvm2を起動時に読み込むようにして、設定を保存
# lrp_list -a lvm2
# save_conf

起動時に読み込むファイルは /system/lrp.lstにかかれている。起動していないときに変更する場合は
設定を保存しているUSBの/sysetem/lrp.lstを編集する

再起動後マウントを確認

# mount
tmpfs on / type tmpfs (rw,size=160M)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
shm on /dev/shm type tmpfs (rw)
/dev/mapper/vg-lvvar on /var type ext3 (rw)
/dev/mapper/vg-lvhome on /home type ext3 (rw)
/dev/mapper/vg-lvtmp on /tmp type ext3 (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
/dev/loop0 on /lib/modules/mnt_loop type squashfs (ro)
/var/cropkg/4suite-xml.squ on /var/cropkg/mnt/4suite-xml type squashfs (ro,loop=/dev/loop1)
/var/cropkg/python2_5.squ on /var/cropkg/mnt/python2_5 type squashfs (ro,loop=/dev/loop2)
# swapon -s
Filename Type Size Used Priority
/dev/mapper/vg-lvswap partition 1048568 0 -1

2009年5月26日火曜日

久しぶりにディスクをミラー化

メインのマシンのハードディスクが壊れた。

ちょうどいい機会なので、43a3-gwでテストしてみる

http://www.s-me.co.jp/ipnuts/ipnuts41/server/ch02s02.html
 を 参照

ディスクまるごとミラーする。
fdisk で /dev/hdaと/dev/hdcの新規HDを確認

IPnuts.mydomain# fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/hda doesn't contain a valid partition table

Disk /dev/hdc: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/hdc doesn't contain a valid partition table

Disk /dev/sda: 128 MB, 128974848 bytes
16 heads, 32 sectors/track, 492 cylinders
Units = cylinders of 512 * 512 = 262144 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sda1 * 1 492 125936 6 FAT16


作業でこのメモを書くためscreenをいれる
#lrp_load -b screen

screen起動
#screen

sshで作業するのでパスワードを設定
#passwd

ここからがmdの作業

mdadmをいれる
# lrp_load -b mdadm


RAIDの作成 注意:/dev/md0ではなく/dev/md/0にすること
# mdadm --create --auto=yes /dev/md/0 --level=1 --raid-devices=2 /dev/hda /dev/hdc
# mdadm -E --scan >> /etc/mdadm/mdadm.conf

/etc/mdadm/mdadm.confにDEVICEの行を追加し、
--scan で 追加された ARRAY=の行のUUIDを使って編集する

DEVICE= hda hdc
ARRAY= /dev/md/0 auto=yes UUID=39e476bc:5be27d92:c8fac465:06756b0d

mdadm-raidを実行してからraidの状況を確認

# /etc/init.d/mdadm-raid start
# mdadm --detail /dev/md0

Version : 00.90
Creation Time : Wed May 27 03:52:35 2009
Raid Level : raid1
Array Size : 78150656 (74.53 GiB 80.03 GB)
Used Dev Size : 78150656 (74.53 GiB 80.03 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue May 26 19:37:03 2009
State : active, resyncing
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Rebuild Status : 8% complete

UUID : 39e476bc:5be27d92:c8fac465:06756b0d
Events : 0.5

Number Major Minor RaidDevice State
0 3 0 0 active sync /dev/hda
1 22 0 1 active sync /dev/hdc

mdadmを起動時のパッケージに追加して、設定保存

# lrp_list -a mdadm
# save_conf

2009年5月24日日曜日

43a2-gw復旧と43a3-gw

先日からカーネルを2.6.29.4に変更してパッケージは43a3-gwに変更して作業している。

さきほど、コマンドをうち間違えて43a2-gwを壊してしまい、先ほどバックアップから復旧した。

43a3では、カーネルに組み込まれたsquashfsが、前のsquashfsと互換性がなくなり、圧縮ファイルを使っているpythonなどパッケージで作り直しになる。

また、IPsecのopenswanの作っているKLIPSでは新しいカーネルでNAT-Tが使えなくなって、どうもそのまま対応しそうにもないので、NETKEYに変更しようとしている。これを変更するとipsec0とかのデバイスはできなくなるので、ルーティングやフィルタリングが設定のやり直しが必要で難しくなると思う。

ついでに、仮想サーバでLXCがカーネルに組み込まれ、vserverは組み込まれそうもない。なので、LXCにも対応してみたい。

仮想イーサネットペアデバイス(Virtual ethernet pair device)を使うので、これはvserverよりルーティングやフィルタリングがわかりやすくなるのかもしれない。

2009年5月14日木曜日

テスト版のテスト

#1週間も更新していなかった。orz

IPnutsテスト版の公開をするため、テスト版のテストを IPnutsとはあまり関係の無い CMS Nightの会場の隅のほうでやりました。
パッケージを外部からとったことがなかったので心配でしたが、あまり問題なく動作できました。

Simpleの山本さんが自分の自作アクリルPCでも確認してみてくれたのですがフレームバッファが不具合で動作せず、今日確認したところ、/etc/modprobe.confがあると/etc/modprobe.dの中を見てくれてなくて、display_classが効いていなかったことがわかり修正。
あと、要望のあったユーザー名とパスワードの入力部分を改善して本日公開にいたりました。

CMS Nightの長尾さん、それから 山本さんそれからお話させていただきました皆さん、ありがとうございました。

2009年5月5日火曜日

AmazonのEC2を使ってみる

ここを、参考にさせてもらってできました。
http://www.studio-fix.com/blog/kaoru/
非常にわかりやすくて、何もいうことはありません。
今日は"Amazon EC2のイメージファイルをS3に保存する "までやりました。
ありがとうございます。

2009年5月2日土曜日

仮想サーバ(vserver)とIPnutsの運用(1)

運用上、早速 問題が起きているのでメモ。

今回はcronでのバックアップまわりの修正
/etc/crontab

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

/etc/cron.dailyでバックアップをしてしているが、仮想サーバーも同じタイミングでcronが動作する。
このとき、バックアップするために仮想サーバが同時にシャットダウンしてしまうので、タイミングをずらすためにcrontabを変更した。

また、バックアップ時のcronの標準出力をメールで受けとるように/etc/cron.daily/backupを変更

#!/bin/sh
/root/bin/backup.sh 2>&1 | /usr/sbin/sysmail -s "vserver backup"

sysmailはipnutsのユーティリティで、webadminで管理者のメールアドレスと、メールサーバを指定しておくと、標準入力をメールで送る。

cronでMAILTO=でメールが送られるようにssmtpをロードして/etc/ssmtp/ssmtp.confを設定
# lrp_load -b ssmtp
/etc/ssmtp/ssmtp.conf

Mailhub=メールサーバ
Hostname=自ホストのFQDNのホスト名

ssmtpの送信テスト

# echo テキスト | sendmail -v 送信先メールアドレス

大丈夫だと思う。

最後にssmtpの起動時のパッケージ追加と設定保存

# lrp_list -a ssmtp
# save_conf

2009年5月1日金曜日

MySQLサーバ移行のメモ

etchで動いていたMySQLをlenny上で動作するMySQLに移行しようとしている。

データベースはファイルをscpでコピーしてきた。
まず、ユーザーIDが違っていたのでオーナーをセット。
# chown -R mysql mysql

debianなので /etc/mysql/debian.cnf 内のパスワードを元のものに合わせる

起動しようとすると

Checking for corrupt, not cleanly closed and upgrade needing tables..
になる。
/var/log/syslogをみると errorになっていたので
Table upgrade required. Please do "REPAIR TABLE ...

mysql_upgrade -pを実行

かなり時間がかかったが、無事に終了。

相変わらずこのメッセージがでるが、これ自体は問題ないらしい
Checking for corrupt, not cleanly closed and upgrade needing tables..

仮想サーバのバックアップ(その3)

---バックアップの自動化
バックアップのスクリプトを/root/binに作った。/usr/local/binに作って# lrp_save localでパッケージを作成してもよいが、今回は/rootに作った。/root内のファイルは設定ファイルとしてconfig.lrpに保存される。

/root/bin/backup.sh

#!/bin/sh
VSERVER=仮想サーバ名

vserver $VSERVER stop
rsync -av --delete /var/lib/vservers/$VSERVER /var2/lib/vservers/
vserver $VSERVER start


/etc/cron.daily/backup

#!/bin/sh
/root/bin/backup.sh


/etc/cron.daily/backupはcronによって/etc/crontabから実行される。

テストしてOKであれば、save_confで保存する。

保存された設定ファイルの一覧は#lrp_conf -lで確認できる。