USBメモリがよく壊れる。
USBメモリから起動させて数日経つと、フリーズしてしまう。原因は、どうやらUSBメモリのデータ破損らしい。ZFSのCKSUMがうなぎ登り。やはり激安USBメモリではムリがあったか。
対策としては、信頼性の高いストレージを導入することだが、いまさらHDDに切り替えも困難。物理的に搭載できる限界に達してしまっている。USBメモリで何とかするしかない。
SLCのUSBメモリを買えば信頼性は向上するだろうが、今のメモリが無駄だし高いし、そもそも所詮USBメモリなので、根本的解決にはならないだろう。MLCだって1万回程度の書き換え耐久はある(と言われているようだが、どう考えても2~3回くらいしか書き換えてないが…)はずで、それが10倍になったところでこの現象が収まるとは思えない。2~3日で壊れるのが、20~30日で壊れるようになっても、ねぇ。
今回はZFSのミラーリングを利用し、データが破損すること前提で、対策を打ってみる。ZFSが全ブロックチェックサムでデータ破損を検知し、正常なミラーブロックのデータで上書きして動き続ける仕組みを活用する。
バッドノウハウですけれども。。
■ディスク構成
・1GBのUSBメモリ 1本(da0)
・4GBのUSBメモリ 1本(da1) こいつが腐ってるUSBメモリ。
■構築方法
1. da0にFreeBSDをインストールする。
2. da0のFreeBSDでkernelを再構築する(da1が腐っているので、その対策のため設定改変)
3. da1を4分割し、ZFSミラープールを構築する(rpoolという名前にした)。
4. /boot以外のデータをrpoolにコピーする。
5. 起動時にrpoolをrootとしてマウントするように設定する。
■問題点
・2本1セットでないと運用できない(目をつぶる)
・bootパーティションはミラー化されていない(ddでバックアップしておくことにする)
ミラーを3本にすれば1本のUSBメモリで何とかなる気もするが、なにせ信用ならないUSBメモリなので、bootパーティションが破壊された時のために分割しておくことにします。da0のほうはわりと運用実績あるので、信用する。
■やりかた要旨(基本、3つ前のエントリーに沿って作業する)
da0にFreeBSDをインスコして、kernel再構築する。
…と思ったら1GBメモリでは容量不足で再構築できなかったので、腐ったUSBメモリで再構築した/boot以下を上書きコピーしちゃう。
○シングルモードで起動
mount -w /
mkdir /mnt/temp
mount /dev/da1s1a /mnt/temp
rm -rf /boot
cp -a /mnt/temp/boot /
umount /mnt/temp
rmdir /mnt/temp
reboot
○マルチユーザモードで起動
sysinstall->fdiskでスライスを同容量で4つ確保する(da1)
7843838/4 = 1960959
sysinstall->labelでそれぞれパーティションを1つづつ作る
da1s1d/da1s2d/da1s3d/da1s4d
ミラープール作成
zpool create rpool mirror /dev/da1s1d /dev/da1s2d /dev/da1s3d /dev/da1s4d
ZFSパーティション作成。読み書き速度が1/4になる&容量ちょっと足んないので、全部圧縮しちゃう。
zfs create rpool/root
zfs set compress=gzip rpool/root
zfs set atime=off rpool/root
zpool export rpool
reboot
○シングルユーザモードで起動
mount -w /
zpool import rpool
da0のデータをrpoolにコピーしてboot時にマウントされるようにする。
find -x / | cpio -pmd /rpool/root
rm -rf /rpool/root/boot
mkdir /rpool/root/bootdir
cd /rpool/root
ln -s bootdir/boot boot
echo 'vfs.root.mountfrom="zfs:rpool/root"' >> /boot/loader.conf
vi /rpool/root/etc/fstab
(変更前)/dev/da0s1a / ufs rw 1 1
(変更後)/dev/da0s1a /bootdir ufs rw 1 1
cd /
zfs set mountpoint=/ rpool/root
zfs set mountpoint=legacy rpool
zpool export
reboot
これだけ。ナイスだZFS。
安定性はまた後日レポします。
--追記(2009/5/15)--
極めて安定している。嘘のように安定している。エラーが出ない・・・orz
4組ミラーはさすがに無駄が多いので、2組ミラーのストライピングに切り替えちゃいました。
zpool detach rpool da1s3d
zpool detach rpool da1s4d
zpool add rpool mirror /dev/da1s3d /dev/da1s4d
うーん、再起動不要。ナイスだZFS。
2009年5月5日火曜日
2009年4月28日火曜日
DomU mem11の導入
memcached専用ドメインを作る。
ローカル稼働の方が速いんだろうけど、まぁ、共有すると思うので、一応…。
一応新システム用ということでリビジョンコードを上げて、1x系とする。
■立ち上げ
sed -i 's/IPADDR=192.168.0.XXX/IPADDR=192.168.0.161/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:A1/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=mem11.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ここらでyum updateする
■mem01に導入するものと手順
yum --enablerepo=rpmforge install memcached
service memcached start
chkconfig memcached on
とりあえず、これで終わり。
www11からテストしてみる。
vi /etc/sysconfig/memcached
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="128"
OPTIONS=""
ローカル稼働の方が速いんだろうけど、まぁ、共有すると思うので、一応…。
一応新システム用ということでリビジョンコードを上げて、1x系とする。
■立ち上げ
sed -i 's/IPADDR=192.168.0.XXX/IPADDR=192.168.0.161/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:A1/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=mem11.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ここらでyum updateする
■mem01に導入するものと手順
yum --enablerepo=rpmforge install memcached
service memcached start
chkconfig memcached on
とりあえず、これで終わり。
www11からテストしてみる。
vi /etc/sysconfig/memcached
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="128"
OPTIONS=""
DomU www11の導入
memcachedをフル活用した超高速な新システムを構築するべく、導入する。
■立ち上げ
sed -i 's/IPADDR=192.168.0.XXX/IPADDR=192.168.0.151/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:97/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=www11.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ここらでyum updateする
■www01に導入するものと手順
yum install httpd httpd-devel php perl php-mysql php-pear php-mbstring php-mcrypt ImageMagick-perl php-devel
perl -MCPAN -e shell
## install Jcode
○APCの導入
vi /usr/share/pear/pearcmd.php
## @ini_set('memory_limit', '16M'); ←追記する
pecl install apc
vi /etc/php.ini
## extension=apc.so ←追記する
○memcached PHPバインディングの導入
yum install php-pecl-memcache
○その他PHP関連
pear channel-update pear.php.net
pear upgrade --force PEAR
pear upgrade-all
pear install Cache_Lite
○PHPの設定
#vi /etc/php.ini
↓以下変更点
output_buffering = Off
post_max_size = 80M
upload_max_filesize = 20M
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
○apacheの設定
バーチャルホストベースでwww01を作ります。httpd.confを適切に編集する。
○mod_rpaf
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxpf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
vi Makefile
以下の行を書き換える。
APXS2=$(shell which apxs2) を
APXS2=/usr/sbin/apxs
make rpaf-2.0
make install-2.0
vi /etc/httpd/conf.d/mod_rpaf.conf
以下の記述を追加
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips <プロキシサーバのIPアドレス>
【出典】http://www.nire.com/2008/02/howto-install-mod_rpaf/
○起動
service httpd start
chkconfig httpd on
■立ち上げ
sed -i 's/IPADDR=192.168.0.XXX/IPADDR=192.168.0.151/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:97/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=www11.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ここらでyum updateする
■www01に導入するものと手順
yum install httpd httpd-devel php perl php-mysql php-pear php-mbstring php-mcrypt ImageMagick-perl php-devel
perl -MCPAN -e shell
## install Jcode
○APCの導入
vi /usr/share/pear/pearcmd.php
## @ini_set('memory_limit', '16M'); ←追記する
pecl install apc
vi /etc/php.ini
## extension=apc.so ←追記する
○memcached PHPバインディングの導入
yum install php-pecl-memcache
○その他PHP関連
pear channel-update pear.php.net
pear upgrade --force PEAR
pear upgrade-all
pear install Cache_Lite
○PHPの設定
#vi /etc/php.ini
↓以下変更点
output_buffering = Off
post_max_size = 80M
upload_max_filesize = 20M
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
○apacheの設定
バーチャルホストベースでwww01を作ります。httpd.confを適切に編集する。
○mod_rpaf
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar zxpf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
vi Makefile
以下の行を書き換える。
APXS2=$(shell which apxs2) を
APXS2=/usr/sbin/apxs
make rpaf-2.0
make install-2.0
vi /etc/httpd/conf.d/mod_rpaf.conf
以下の記述を追加
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips <プロキシサーバのIPアドレス>
【出典】http://www.nire.com/2008/02/howto-install-mod_rpaf/
○起動
service httpd start
chkconfig httpd on
2009年4月11日土曜日
ZFS@FreeBSDの導入
Dom0でファイルサーバを動かしていたが、大容量化するべくZFSを使いたくなったので、ZFSが使えるOSに乗り換える。LinuxはZFSとライセンスの折り合いが悪いようで、Solaris系かFreeBSD系から選択せねばならない。正直まんどい。
■FreeNAS 0.7.4489(amd64)
一旦入れてみたものの、負荷をかけると安定しない。カーネルメモリの割り当てが足りない。amd64版でも1.5GB割り当てようとすると、起動しなくなる。こういうブツは標準状態を改変して運用したくないので泣く泣くパスすることにする。
■Solaris 10
HDDを丸ごとNAS領域にしたいのでUSBメモリにインスコしたが、めちゃめちゃ重い。起動に1時間かかる。神聖Solaris帝国っちゅーことでパッケージの依存関係を自動解決できず運用工数もかかるし、これもパスすることにする。
■OpenSolaris 2008/11
NEC Express5800/110Gdでインストーラが起動しない。Language選択で画面がまっ白になり、固まる。パスすることにする。
■Nexenta Core 1.0.1 Stable
Debian互換のSolaris。パッケージ管理がapt-getで楽勝だろうということで。
インストールは簡単。導入先を選択し、ネットワーク設定を行うだけ。起動すると既にSSHDが上がっているので、以後はSSHから操作することにする。
#初期状態でzfs snapshotが取られていてGJ。
だがしかし、FreeNASで作ったZFS領域をimportできなかった。詳しい情報があまりないのだが、どうもBSD Flagというのがあって、簡単には移行できないっぽい? Solaris系は諦めるしかないのか…?
■Nexenta Core 2.0RC1
NEC Express5800/110Gdでインストーラが起動しない。ロード中に落ちる。他のマシンでインストールして110Gdに繋いでも、ロードが終わらない。ダメっぽい。
…結局、モトのNreeNASで何とかするか、素のBSDを入れるしか選択肢がない。。FreeNAS0.7はamd64版が全然公開されないし、進捗遅そうなので、自力で立てるほうを選択します。
■FreeBSD7.1 RELEASE
HDDを全量ストレージにするため、USBメモリにminimalでインスコした。
USBメモリは書換耐久力が気になる。ZFSは追記型FSなので書き換え領域が分散するし、後からミラー追加できるし、全ブロックにCheckSUM付きで安心である。ここを参考に/ディレクトリのZFS化を試みた。
…USBメモリがFlushコマンドに対応していないらしく、書き換える度に猛烈にエラーが出まくる…。
↓書き込む度にこんなのが大量にグワァァァーーーっと。
(da0:umass-sim0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition
(da0:umass-sim0:0:0:0): ILLEGAL REQUEST asc:24,0
(da0:umass-sim0:0:0:0): Invalid field in CDB
(da0:umass-sim0:0:0:0): Unretryable error
kernelを再構築すれば解消できるらしいが、minimalで入れてしまったのでソースやmakeはおろかkpg_addもsysinstallも、fetchさえも入っていない始末。。。
…素のBSDでも、一筋縄では行かないようで。
気を取り直して再インスコからやり直す。他のOSがまともに動かないんじゃ、しょうがない。。
■FreeBSD7.1 インストール
インストールパッケージは「Kern-devel」を選択。
スライスはUSBメモリ全体を丸ごと1スライスで確保する。
パーティションは/を1.5GB確保(一次インストール&/boot用)。残り全量をマウント無しで確保(ZFSストレージ化して後から引っ越す)。
#後から思ったが、/bootをちょびっと確保して、/とZFS領域を同量で確保しておくと、JBOBかRAID0で無駄なく使えたかもな… と思った。
■kernel再構築 マルチユーザモードでも可
○再構築の準備&ついでに若干最適化
cd /usr/src/sys/amd64/conf
cp GENERIC KFS
vi KFS
(変更前)ident GENERIC
(変更後)ident KFS
↓コメントアウトした行。もっと攻めてもいいけど、無難にね。。
makeoptions DEBUG=-g
options INET6
options SCTP
options COMPAT_FREEBSD4
options COMPAT_FREEBSD5
options COMPAT_FREEBSD6
options KTRACE
options AUDIT
○Transcend JetFlash Driveの機器追加
エラーを吐きまくる現象を回避する。このメモカ限定の現象。参考資料1 参考資料2
cd /usr/src/sys/dev/usb/
vi usbdevs
(追加)product ALCOR TRANSCEND 0x6387 Transcend JetFlash Drive
vi umass.c
(追加)
{ USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_TRANSCEND, RID_WILDCARD,
UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
NO_GETMAXLUN | NO_SYNCHRONIZE_CACHE
},
○kernel再構築
cd /usr/src/sys/amd64/conf
config KFS
cd ../compile/KFS
make cleandepend
make depend
make
make install
reboot
■ZFS pool作成 マルチユーザモードでも可
zpool create rpool /dev/da0s1d
zfs create rpool/root
zfs create rpool/root/usr
zfs create rpool/root/var
zfs create rpool/root/var/log
zfs set compress=gzip rpool/root/usr
zfs set compress=gzip rpool/root/var/log
zfs set atime=off rpool
zfs set quota=512M rpool/root/var/log
echo 'zfs_enable="YES"' >> /etc/rc.conf
echo 'zfs_load="YES"' >> /boot/loader.conf
echo 'vm.kmem_size="1536M"' >> /boot/loader.conf
echo 'vm.kmem_size_max="1536M"' >> /boot/loader.conf
zpool export rpool
reboot
■ZFS on root化 シングルユーザモード
mount -w /
zpool import rpool
find -x / | cpio -pmd /rpool/root
rm -rf /rpool/root/boot
mkdir /rpool/root/bootdir
cd /rpool/root
ln -s bootdir/boot boot
echo 'vfs.root.mountfrom="zfs:rpool/root"' >> /boot/loader.conf
vi /rpool/root/etc/fstab
(変更前)/dev/da0s1a / ufs rw 1 1
(変更後)/dev/da0s1a /bootdir ufs rw 1 1
cd /
zfs set mountpoint=/usr rpool/root/usr
zfs set mountpoint=/var rpool/root/var
zfs set mountpoint=/var/log rpool/root/var/log
zfs set mountpoint=/ rpool/root
zfs set mountpoint=legacy rpool
zpool export
reboot
■SWAPのZFS化 シングルユーザモード
zfs create -V 1GB rpool/swap
zfs set org.freebsd:swap=on rpool/swap
zpool export
reboot
■ゴミ片付け シングルユーザモード
cd /bootdir
rm -rf `ls | grep '[^boot]'`
mv /bootdir/boot /bootdir/boot.old
cp -Rp /bootdir/boot.old/* /bootdir
mv /bootdir/boot /bootdir/boot.file
cd /bootdir
ln -s ./ ./boot
echo '/loader' >> /bootdir/boot.config
rm /boot
mkdir /boot
vi /etc/fstab
/dev/ad0s1a /boot ufs rw 1 1
zpool export
reboot
■続・ゴミ片付け シングルユーザモード
rm -rf /bootdir
↓残りの作業はまだまだこんなに。。
■NFS
vi /etc/rc.conf
(追加)nfs_server_enable="YES"
(追加)nfs_server_flags="-u -t -n16"
(追加)rpc_lockd_enable="YES"
(追加)rpc_statd_enable="YES"
(追加)rpcbind_enable="YES"
zfs_enable="YES"
↑これも書いておかないと、zfs set sharenfsが効かない。
共有ディレクトリはZFSでmountする。
zfs set sharenfs="-network 192.168.0.0 -mask 255.255.255.0 -maproot=root" kfs01/kfs
■Samba
ja-sambaとsambaの違いは、設定ファイルやメッセージが日本語だったりする点。正直いらね。
よってsysinstallからnet/sambaを入れちゃう。
vi /etc/rc.conf
(追加)samba_enable="YES"
でもって、文字コードにUTF8やCP932を指定したりする。
vi /usr/local/etc/smb.conf
[global]
encrypt passwords = yes
map to guest = Bad User
workgroup = WORKGROUP
server string = hogehoge storage
hosta allow = 192.168.0.
load printers = no
display charset = utf-8
unix charset = utf-8
dos charset = cp932
[homes] ※すべてコメントアウト
[printers] ※すべてコメントアウト
[FreeNAS1] ※ネーミングはFreeNAS時代の名残り
comment = FreeNAS1
path = /mnt/kfs01/FreeNAS1
public = yes
writable = yes
printable = no
guest ok = yes
only guest = yes
browseable = yes
ちなみにja-sambaの場合↓
cd /usr/ports/japanese/samba3
make config
make NO_CHECKSUM=yes
make install clean
あとは一緒。
/usr/local/etc/rc.d/samba start
■Webmin
sysinstallで導入しとく。
vi /etc/rc.conf
(追加)webmin_enable="YES"
■Postfix
■rsyncd
■smartd
■FreeNAS 0.7.4489(amd64)
一旦入れてみたものの、負荷をかけると安定しない。カーネルメモリの割り当てが足りない。amd64版でも1.5GB割り当てようとすると、起動しなくなる。こういうブツは標準状態を改変して運用したくないので泣く泣くパスすることにする。
■Solaris 10
HDDを丸ごとNAS領域にしたいのでUSBメモリにインスコしたが、めちゃめちゃ重い。起動に1時間かかる。神聖Solaris帝国っちゅーことでパッケージの依存関係を自動解決できず運用工数もかかるし、これもパスすることにする。
■OpenSolaris 2008/11
NEC Express5800/110Gdでインストーラが起動しない。Language選択で画面がまっ白になり、固まる。パスすることにする。
■Nexenta Core 1.0.1 Stable
Debian互換のSolaris。パッケージ管理がapt-getで楽勝だろうということで。
インストールは簡単。導入先を選択し、ネットワーク設定を行うだけ。起動すると既にSSHDが上がっているので、以後はSSHから操作することにする。
#初期状態でzfs snapshotが取られていてGJ。
だがしかし、FreeNASで作ったZFS領域をimportできなかった。詳しい情報があまりないのだが、どうもBSD Flagというのがあって、簡単には移行できないっぽい? Solaris系は諦めるしかないのか…?
■Nexenta Core 2.0RC1
NEC Express5800/110Gdでインストーラが起動しない。ロード中に落ちる。他のマシンでインストールして110Gdに繋いでも、ロードが終わらない。ダメっぽい。
…結局、モトのNreeNASで何とかするか、素のBSDを入れるしか選択肢がない。。FreeNAS0.7はamd64版が全然公開されないし、進捗遅そうなので、自力で立てるほうを選択します。
■FreeBSD7.1 RELEASE
HDDを全量ストレージにするため、USBメモリにminimalでインスコした。
USBメモリは書換耐久力が気になる。ZFSは追記型FSなので書き換え領域が分散するし、後からミラー追加できるし、全ブロックにCheckSUM付きで安心である。ここを参考に/ディレクトリのZFS化を試みた。
…USBメモリがFlushコマンドに対応していないらしく、書き換える度に猛烈にエラーが出まくる…。
↓書き込む度にこんなのが大量にグワァァァーーーっと。
(da0:umass-sim0:0:0:0): SYNCHRONIZE CACHE. CDB: 35 0 0 0 0 0 0 0 0 0
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition
(da0:umass-sim0:0:0:0): ILLEGAL REQUEST asc:24,0
(da0:umass-sim0:0:0:0): Invalid field in CDB
(da0:umass-sim0:0:0:0): Unretryable error
kernelを再構築すれば解消できるらしいが、minimalで入れてしまったのでソースやmakeはおろかkpg_addもsysinstallも、fetchさえも入っていない始末。。。
…素のBSDでも、一筋縄では行かないようで。
気を取り直して再インスコからやり直す。他のOSがまともに動かないんじゃ、しょうがない。。
■FreeBSD7.1 インストール
インストールパッケージは「Kern-devel」を選択。
スライスはUSBメモリ全体を丸ごと1スライスで確保する。
パーティションは/を1.5GB確保(一次インストール&/boot用)。残り全量をマウント無しで確保(ZFSストレージ化して後から引っ越す)。
#後から思ったが、/bootをちょびっと確保して、/とZFS領域を同量で確保しておくと、JBOBかRAID0で無駄なく使えたかもな… と思った。
■kernel再構築 マルチユーザモードでも可
○再構築の準備&ついでに若干最適化
cd /usr/src/sys/amd64/conf
cp GENERIC KFS
vi KFS
(変更前)ident GENERIC
(変更後)ident KFS
↓コメントアウトした行。もっと攻めてもいいけど、無難にね。。
makeoptions DEBUG=-g
options INET6
options SCTP
options COMPAT_FREEBSD4
options COMPAT_FREEBSD5
options COMPAT_FREEBSD6
options KTRACE
options AUDIT
○Transcend JetFlash Driveの機器追加
エラーを吐きまくる現象を回避する。このメモカ限定の現象。参考資料1 参考資料2
cd /usr/src/sys/dev/usb/
vi usbdevs
(追加)product ALCOR TRANSCEND 0x6387 Transcend JetFlash Drive
vi umass.c
(追加)
{ USB_VENDOR_ALCOR, USB_PRODUCT_ALCOR_TRANSCEND, RID_WILDCARD,
UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
NO_GETMAXLUN | NO_SYNCHRONIZE_CACHE
},
○kernel再構築
cd /usr/src/sys/amd64/conf
config KFS
cd ../compile/KFS
make cleandepend
make depend
make
make install
reboot
■ZFS pool作成 マルチユーザモードでも可
zpool create rpool /dev/da0s1d
zfs create rpool/root
zfs create rpool/root/usr
zfs create rpool/root/var
zfs create rpool/root/var/log
zfs set compress=gzip rpool/root/usr
zfs set compress=gzip rpool/root/var/log
zfs set atime=off rpool
zfs set quota=512M rpool/root/var/log
echo 'zfs_enable="YES"' >> /etc/rc.conf
echo 'zfs_load="YES"' >> /boot/loader.conf
echo 'vm.kmem_size="1536M"' >> /boot/loader.conf
echo 'vm.kmem_size_max="1536M"' >> /boot/loader.conf
zpool export rpool
reboot
■ZFS on root化 シングルユーザモード
mount -w /
zpool import rpool
find -x / | cpio -pmd /rpool/root
rm -rf /rpool/root/boot
mkdir /rpool/root/bootdir
cd /rpool/root
ln -s bootdir/boot boot
echo 'vfs.root.mountfrom="zfs:rpool/root"' >> /boot/loader.conf
vi /rpool/root/etc/fstab
(変更前)/dev/da0s1a / ufs rw 1 1
(変更後)/dev/da0s1a /bootdir ufs rw 1 1
cd /
zfs set mountpoint=/usr rpool/root/usr
zfs set mountpoint=/var rpool/root/var
zfs set mountpoint=/var/log rpool/root/var/log
zfs set mountpoint=/ rpool/root
zfs set mountpoint=legacy rpool
zpool export
reboot
■SWAPのZFS化 シングルユーザモード
zfs create -V 1GB rpool/swap
zfs set org.freebsd:swap=on rpool/swap
zpool export
reboot
■ゴミ片付け シングルユーザモード
cd /bootdir
rm -rf `ls | grep '[^boot]'`
mv /bootdir/boot /bootdir/boot.old
cp -Rp /bootdir/boot.old/* /bootdir
mv /bootdir/boot /bootdir/boot.file
cd /bootdir
ln -s ./ ./boot
echo '/loader' >> /bootdir/boot.config
rm /boot
mkdir /boot
vi /etc/fstab
/dev/ad0s1a /boot ufs rw 1 1
zpool export
reboot
■続・ゴミ片付け シングルユーザモード
rm -rf /bootdir
↓残りの作業はまだまだこんなに。。
■NFS
vi /etc/rc.conf
(追加)nfs_server_enable="YES"
(追加)nfs_server_flags="-u -t -n16"
(追加)rpc_lockd_enable="YES"
(追加)rpc_statd_enable="YES"
(追加)rpcbind_enable="YES"
zfs_enable="YES"
↑これも書いておかないと、zfs set sharenfsが効かない。
共有ディレクトリはZFSでmountする。
zfs set sharenfs="-network 192.168.0.0 -mask 255.255.255.0 -maproot=root" kfs01/kfs
■Samba
ja-sambaとsambaの違いは、設定ファイルやメッセージが日本語だったりする点。正直いらね。
よってsysinstallからnet/sambaを入れちゃう。
vi /etc/rc.conf
(追加)samba_enable="YES"
でもって、文字コードにUTF8やCP932を指定したりする。
vi /usr/local/etc/smb.conf
[global]
encrypt passwords = yes
map to guest = Bad User
workgroup = WORKGROUP
server string = hogehoge storage
hosta allow = 192.168.0.
load printers = no
display charset = utf-8
unix charset = utf-8
dos charset = cp932
[homes] ※すべてコメントアウト
[printers] ※すべてコメントアウト
[FreeNAS1] ※ネーミングはFreeNAS時代の名残り
comment = FreeNAS1
path = /mnt/kfs01/FreeNAS1
public = yes
writable = yes
printable = no
guest ok = yes
only guest = yes
browseable = yes
ちなみにja-sambaの場合↓
cd /usr/ports/japanese/samba3
make config
make NO_CHECKSUM=yes
make install clean
あとは一緒。
/usr/local/etc/rc.d/samba start
■Webmin
sysinstallで導入しとく。
vi /etc/rc.conf
(追加)webmin_enable="YES"
■Postfix
■rsyncd
■smartd
2009年2月27日金曜日
DomU mail01の設定(2)
MySQL化+バーチャルドメイン化。
ここが秀逸だったので保管。
http://centos.bungu-do.jp/2008/11/postfix_postfixmysqldovecotpos.html
http://s03.megalodon.jp/2009-0227-2203-27/centos.bungu-do.jp/2008/11/postfix_postfixmysqldovecotpos.html
既存のローカル配送は維持したいので、main.cfはこんな感じになった。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#local_transport = virtual
local_transport = local
virtual_transport = virtual
virtual_mailbox_base = /kfs/mail
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 89
virtual_uid_maps = static:89
virtual_gid_maps = static:89
virtual_mailbox_limit = 512000000
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yes
virtual_mailbox_limit_inbox = yes
ここが秀逸だったので保管。
http://centos.bungu-do.jp/2008/11/postfix_postfixmysqldovecotpos.html
http://s03.megalodon.jp/2009-0227-2203-27/centos.bungu-do.jp/2008/11/postfix_postfixmysqldovecotpos.html
既存のローカル配送は維持したいので、main.cfはこんな感じになった。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#local_transport = virtual
local_transport = local
virtual_transport = virtual
virtual_mailbox_base = /kfs/mail
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 89
virtual_uid_maps = static:89
virtual_gid_maps = static:89
virtual_mailbox_limit = 512000000
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yes
virtual_mailbox_limit_inbox = yes
2009年2月14日土曜日
DomU yjnews01の設定
sed -i 's/IPADDR=192.168.0.XXX/IPADDR=192.168.0.241/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:F1/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=yjnews01.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ln -s /etc/xen/yjnews01 /etc/xen/auto/yjnews01
ここらでyum updateする
「全Dom0にPostfixを入れる」をやる
「DomU www01の設定」をやる
/usr/share/pear/pearcmd.php に追記
> @ini_set('track_errors', true);
> @ini_set('html_errors', false);
> @ini_set('magic_quotes_runtime', false);
> @ini_set('memory_limit','16M'); // ここに追加
# yum install gcc-c++
# pear install HTTP_Request
# yum -y install php-devel
# pecl install perl
php.iniに追記
> extension=perl.so
# service httpd restart
# wget http://downloads.sourceforge.net/mecab/mecab-0.97.tar.gz?use_mirror=jaist
# wget http://downloads.sourceforge.net/mecab/mecab-ipadic-2.7.0-20070801.tar.gz?use_mirror=jaist
# wget http://downloads.sourceforge.net/mecab/mecab-perl-0.97.tar.gz?use_mirror=jaist
# wget http://gensen.dl.itc.u-tokyo.ac.jp/soft/TermExtract-4_08.tar.gz
# tar xvzf mecab-0.97.tar.gz
# cd mecab-0.97
# ./configure --with-charset=utf8 --prefix=/usr/local/mecab
# make
# make install
# cd ..
# tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz
# cd mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf8 --prefix=/usr/local/mecab --with-mecab-config=/usr/local/mecab/bin/mecab-config
# make
# make install
# cd ..
# tar xvzf mecab-perl-0.97.tar.gz
# cd mecab-perl-0.97
# sed -i s/mecab-config/\\/usr\\/local\\/mecab\\/bin\\/mecab-config/ Makefile.PL
# perl Makefile.PL
# make
# make install
# cd ..
# tar xvzf TermExtract-4_08.tar.gz
# cd TermExtract-4_08
# perl Makefile.PL
# make
# make install
# cd ..
# cd /usr/lib/perl5/site_perl/5.8.8/TermExtract/
# nkf --utf8 MeCab.pm > MeCab-utf8.pm
# mv MeCab-utf8.pm MeCab.pm
# perl -MCPAN -e shell
## install DB_File
いじょう。
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:F1/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=yjnews01.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ln -s /etc/xen/yjnews01 /etc/xen/auto/yjnews01
ここらでyum updateする
「全Dom0にPostfixを入れる」をやる
「DomU www01の設定」をやる
/usr/share/pear/pearcmd.php に追記
> @ini_set('track_errors', true);
> @ini_set('html_errors', false);
> @ini_set('magic_quotes_runtime', false);
> @ini_set('memory_limit','16M'); // ここに追加
# yum install gcc-c++
# pear install HTTP_Request
# yum -y install php-devel
# pecl install perl
php.iniに追記
> extension=perl.so
# service httpd restart
# wget http://downloads.sourceforge.net/mecab/mecab-0.97.tar.gz?use_mirror=jaist
# wget http://downloads.sourceforge.net/mecab/mecab-ipadic-2.7.0-20070801.tar.gz?use_mirror=jaist
# wget http://downloads.sourceforge.net/mecab/mecab-perl-0.97.tar.gz?use_mirror=jaist
# wget http://gensen.dl.itc.u-tokyo.ac.jp/soft/TermExtract-4_08.tar.gz
# tar xvzf mecab-0.97.tar.gz
# cd mecab-0.97
# ./configure --with-charset=utf8 --prefix=/usr/local/mecab
# make
# make install
# cd ..
# tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz
# cd mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf8 --prefix=/usr/local/mecab --with-mecab-config=/usr/local/mecab/bin/mecab-config
# make
# make install
# cd ..
# tar xvzf mecab-perl-0.97.tar.gz
# cd mecab-perl-0.97
# sed -i s/mecab-config/\\/usr\\/local\\/mecab\\/bin\\/mecab-config/ Makefile.PL
# perl Makefile.PL
# make
# make install
# cd ..
# tar xvzf TermExtract-4_08.tar.gz
# cd TermExtract-4_08
# perl Makefile.PL
# make
# make install
# cd ..
# cd /usr/lib/perl5/site_perl/5.8.8/TermExtract/
# nkf --utf8 MeCab.pm > MeCab-utf8.pm
# mv MeCab-utf8.pm MeCab.pm
# perl -MCPAN -e shell
## install DB_File
いじょう。
2008年10月11日土曜日
ad01の設定
sed -i 's/IPADDR=192.168.0.XXX/IPADDR=192.168.0.231/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:E7/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=ad01.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ln -s /etc/xen/ad01 /etc/xen/auto/ad01
output_buffering = Off
zlib.output_compression = Off
register_argc_argv = On
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.detect_order = auto
mbstring.substitute_character = none;
/etc/rc.d/init.d/saslauthd start
chkconfig saslauthd on
chkconfig --list saslauthd
mkdir -p /etc/skel/Maildir/new
mkdir -p /etc/skel/Maildir/cur
mkdir -p /etc/skel/Maildir/tmp
chmod -R 700 /etc/skel/Maildir/
/etc/rc.d/init.d/sendmail stop
chkconfig sendmail off
chkconfig --list sendmail
alternatives --set mta /usr/sbin/sendmail.postfix
/etc/rc.d/init.d/postfix start
chkconfig postfix on
chkconfig --list postfix
あとpostfixの設定、と。
sed -i 's/HWADDR=00:16:3E:63:95:XX/HWADDR=00:16:3E:63:00:E7/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/HOSTNAME=standard.hoge.com/HOSTNAME=ad01.hoge.com/g' /etc/sysconfig/network
rm -rf /etc/ssh/ssh_host*
rm -rf /root/.bash_history
reboot
ln -s /etc/xen/ad01 /etc/xen/auto/ad01
output_buffering = Off
zlib.output_compression = Off
register_argc_argv = On
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.detect_order = auto
mbstring.substitute_character = none;
/etc/rc.d/init.d/saslauthd start
chkconfig saslauthd on
chkconfig --list saslauthd
mkdir -p /etc/skel/Maildir/new
mkdir -p /etc/skel/Maildir/cur
mkdir -p /etc/skel/Maildir/tmp
chmod -R 700 /etc/skel/Maildir/
/etc/rc.d/init.d/sendmail stop
chkconfig sendmail off
chkconfig --list sendmail
alternatives --set mta /usr/sbin/sendmail.postfix
/etc/rc.d/init.d/postfix start
chkconfig postfix on
chkconfig --list postfix
あとpostfixの設定、と。
登録:
投稿 (Atom)