さいきんのOpensolarisでZFSにゃnfs鯖の作業手順
1st HDDにinst。最小9Gだが20Gくらいとっとく。
GUIで適度にIPとか変更。
以下の順に必要にゃ物だけ実行
cat /etc/nsswitch.dns > /etc/nsswitch.conf
ntpdate pool.ntp.org
pfexec pkg install SUNWipkg
pfexec pkg image-update
init 6
echo | format
0. c8t0d0 <DEFAULT cyl 290 alt 2 hd 255 sec 252>
1. c8t1d0 <DEFAULT cyl 291 alt 2 hd 255 sec 252>
2. c9t0d0 <DEFAULT cyl 291 alt 2 hd 255 sec 252>
3. c9t1d0 <DEFAULT cyl 291 alt 2 hd 255 sec 252>
4. c10t0d0 <DEFAULT cyl 291 alt 2 hd 255 sec 252>
5. c10t1d0 <DEFAULT cyl 291 alt 2 hd 255 sec 252>
format c8t1d0 fdisk create SOLARIS2 10GB(シリンダで指定)
format c9t0d0 fdisk create SOLARIS2 10GB(シリンダで指定)
format c9t1d0 fdisk create SOLARIS2 10GB(シリンダで指定)
format c10t0d0 fdisk create SOLARIS2 10GB(シリンダで指定)
format c10t1d0 fdisk create SOLARIS2 10GB(シリンダで指定)
但しHDDによってセクタ/シリンダとか違ってくるので違うHDD間でミラーする時は注意
format -e c8t1d0 label SMI
format -e c9t0d0 label SMI
format -e c9t1d0 label SMI
format -e c10t0d0 label SMI
format -e c10t1d0 label SMI
prtvtoc /dev/rdsk/c8t0d0s2 | fmthard -s - /dev/rdsk/c8t1d0s2
prtvtoc /dev/rdsk/c8t0d0s2 | fmthard -s - /dev/rdsk/c9t0d0s2
prtvtoc /dev/rdsk/c8t0d0s2 | fmthard -s - /dev/rdsk/c9t1d0s2
prtvtoc /dev/rdsk/c8t0d0s2 | fmthard -s - /dev/rdsk/c10t0d0s2
prtvtoc /dev/rdsk/c8t0d0s2 | fmthard -s - /dev/rdsk/c10t1d0s2
zpool attach -f rpool c8t0d0s0 c8t1d0s0
zpool attach -f rpool c8t0d0s0 c9t0d0s0
zpool attach -f rpool c8t0d0s0 c9t1d0s0
zpool attach -f rpool c8t0d0s0 c10t0d0s0
zpool attach -f rpool c8t0d0s0 c10t1d0s0
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c8t1d0s0
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c9t0d0s0
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c9t1d0s0
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c10t0d0s0
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c10t1d0s0
zpool list
zpool status
format c8t0d0 fdisk create SOLARIS2 99%
format c8t1d0 fdisk create SOLARIS2 99%
format c9t0d0 fdisk create SOLARIS2 99%
format c9t1d0 fdisk create SOLARIS2 99%
format c10t0d0 fdisk create SOLARIS2 99%
format c10t1d0 fdisk create SOLARIS2 99%
zpool create pool1 raidz c8t0d0p2 c8t1d0p2 c9t0d0p2 c9t1d0p2 c10t0d0p2 c10t1d0p2
zfs create -o atime=off -o casesensitivity=mixed -o snapdir=visible -o aclinherit=passthrough pool1/share
zfs set compression=on pool1/share
zfs set recordsize=64k pool1/share
zfs set aclmode=passthrough pool1/share
zfs set sharenfs=on pool1/share
chmod 777 /pool1/share
vi hosts
share
echo set nfs:nfs_allow_preepoch_time = 1 >> /etc/system
echo set nfs:nfs3_max_threads = 32 >> /etc/system
echo set nfs:nfs3_nra = 32 >> /etc/system
echo set zfs:zfs_nocacheflush = 1 >> /etc/system
echo set zfs:zfs_txg_timeout = 5 >> /etc/system
echo set zfs:zil_disable = 1 >> /etc/system
crontab -e
0 4 * * * svcadm restart idmap
0 * * * * ntpdate pool.ntp.org
svcadm restart cron
pkg install SUNWsmbskr
pkg install SUNWsmbs
init 6
svcadm enable -r smb/server
vi resolv.conf
zfs set sharesmb=on pool1/share
zfs set sharesmb=name=share1 pool1/share
smbadm join -w WORKGROUP
echo other password required pam_smb_passwd.so.1 nowarn >> /etc/pam.conf
passwd 既存ユーザ(smbpasswd相当)
smbadm join -u domain_admin DOMAIN
svcadm disable smb/server
svcadm enable -r smb/server
chmod -R A=owner@:full_set:fd:allow /pool1/share
chmod -R A+group@:full_set:fd:allow /pool1/share
chmod -R A+everyone@:read_set:fd:allow /pool1/share
sharemgr show -vp
init 6
useradd -b /export/home/ -g staff -m -s /usr/bin/bash user1
vi /etc/auto_home
usermod -d /home/user1 user1
passwd user1
vi /etc/user_attr
vi /rpool/boot/grub/menu.lst
svcadm disable gdm
visudo
user1 ALL=(ALL) NOPASSWD: ALL
Defaults:user1 !env_reset
定期snapshotをcronに登録とか、mail送信用スクリプトを適当にゃ所にコピーとか、定期ディスク表面検査とか、ssh関連とかvisudoとか適時設定のこと。
VMXNET3にゃNICを入れたUbuntu鯖で帯域限界まで使うとNICが落ちる件で、e1000だと問題にゃいのかもしれにゃいけどそもそもCPUが追っつかにゃくて帯域が出にゃいので、VMXNET2を試そうとしたらドライバが無いみたいにゃので結局VMXNET3に戻ってきて何とかする方向で考える。
まず確率的に減らそうってことで、bondingの数を2NICから4NICに分散。・・・しかしmode6ではやはり意味がにゃかったらしく、負荷試験中に1台お亡くにゃり。まぁでもこれで8NICくらいに増やしておけば時々network restartかければ実用にはにゃる・・・かもしれにゃいが嫌だにゃこのソリューションは。
ざらっと検索した所、tso, gsoのオフロードを切れば安定するかもにゃ話があったので、
ethtool -K eth0 tso off
ethtool -K eth0 gso off
ethtool -K eth1 tso off
ethtool -K eth1 gso off
してみたところ、大体安定した気味。
CPU負荷ははっきり計ってにゃいけど、とりあえず200MB/sのDownloadが可能ににゃってるようにゃので良しとする。
VMXNET3にゃNICを入れたUbuntu鯖で帯域限界まで使うとNICが落ちる件で、e1000だと問題にゃいのかもしれにゃいけどそもそもCPUが追っつかにゃくて帯域が出にゃいので、回り回って消去法のVMXNET2で行こう・・・と思ったのだが、Ubuntuから認識されにゃい。
そもそもvmware toolsにvmxnet2の文字列が見あたらにゃい。
一応サポートされてる気味にゃ雰囲気のはずにゃのだがこれは痛い。どうしろと
Ubuntu10.04鯖でbondingするよ・・・と言う話にゃのだが意外とめんどくさい。
にゃにせそこかしこに例が載ってるがコピペばかりで動かにゃい。
とりあえず
modprobe bonding
echo bonding >> /etc/modules
apt-get install ifenslave
echo alias bond0 bonding >> /etc/modprobe.d/bonding.conf
/etc/network/interfaces
auto bond0
iface bond0 inet static
address 1.1.1.1
netmask 255.255.0.0
broadcast 1.1.255.255
gateway 1.1.0.1
slaves eth0 eth1
bond-mode 0
bond-miimon 100
とこんにゃ感じでとりあえず動いてるように見えるが実はちょっと怪しい。
bond-mode 6
にして
/etc/init.d/networking restart
するとみょんにゃことに・・・にゃんぞこれ
とりあえずハマり所が何点か。
まずbonding状態の確認方法
cat /proc/net/bonding/bond0
但し正常に設定されてるとは限らにゃいので
ifconfig
してeth0とeth1のMACを確認する。bond-mode5,6にゃら異にゃるMACににゃってにゃいとおかしい。他には
dstat -N eth0,eth1,bond0
しておいてwgetかnfsかにゃにかipv4で受信してみる。等量のトラフィックが流れてきてたらそれはちっともmode5,6じゃにゃいよね・・・っていう。
次。/etc/network/interfacesのupとかdownって起動時にしか中身読まにゃい? post-upとか書き換えてもrebootしにゃいと反映されてにゃい。にゃんか方法があるだろうけどそもそもaddressにゃんかは読んでくれるので無駄にゃ作業をしてしまった。
ということでとりあえずにゃんでもいいから動いて欲しい設定
/etc/network/interfaces
auto lo
iface lo inet loopback
auto bond0
iface bond0 inet static
post-up /sbin/ifenslave -d bond0 eth0 eth1 ; /sbin/ifenslave bond0 eth0 eth1 || true
pre-down /sbin/ifenslave -d bond0 eth0 eth1 || true
address 1.1.1.1
netmask 255.255.0.0
broadcast 1.1.255.255
gateway 1.1.0.1
slaves eth0 eth1
bond-mode 6
bond-miimon 100
してreboot。
もうこれでもかとごり押し。eth0, eth1については定義しにゃくてよし。これで
/etc/init.d/networking restart
して音信不通ににゃったりはしにゃくにゃるはず。
で複数ホストからDLするとどっちかのNICに負荷が偏ってたりする。これは再度restartすれば治るので、もう起動後しばらくして一度restartさせるようにしちゃう。
crontabで
* * * * * root test -f /tmp/bonding_init.cron || ( sleep 60 ; /etc/init.d/networking restart ; touch /tmp/bonding_init.cron )
とかしとけばにゃんとかにゃるだろうたぶん。負荷分散されてるはずがされてにゃいとか一番困るだろうし。
と、これで複数ホストからdownloadすると2つのNICに負荷分散されるのが分かる。
あれやねぇ、不意に小さくにゃって動物と話ができるって設定、よく考えるとニルスと同じにゃのか。
若き頃の飯島真理の声が素晴らしいOPとED。っていうかクオリティが際立っとる。
ルウリィが出てくるまで見るべきかと思ったけどこのペースはキツいにゃぁ(笑)
そういやOP/ED含め字幕が全て後付けにゃのにゃ。30分でやるためにどうのこうの、って話かしら。