start

ServeRaid M1015はGA-H77-D3H-MVP/Aで動かないでござる

所持しているM1015が腐ってる可能性があり、この情報は正しくないかも知れません。

GIGABYTE GA-H77-D3H-MVP/AではIBM ServeRaid M1015(MegaRAID SAS 9240-8i)は動かない。

MPT2 BIOSの画面が出ないのは当然として、やっぱりマザボから認識されてない。

例によってmegarec.exeが「Warning! IO Base address high. Currently not supported.」を吐いてくれる。

H77 Pro4/MVPと違う所と言えば、CPUに近い方のPCIeだと何も起こらないが、遠い方だとボード上のLEDが点滅する。ハートビートLEDってヤツなのかしらん?まぁ、心臓動いてても脳死状態なので意味ないけどね!てか、Z77/H77とMegaRAIDの相性悪すぎじゃね?「これだ!!」っていう動作報告が全然出てこないんだけど。

ここまで来たら後には引けないのでGA-Z68X-UD3H-B3ポチっちゃったよ!LSI公式の互換リストに載ってるのはGA-Z68A-D3H-B3だけど、Xの方も動作報告あるしきっと大丈夫だよ!蟹チップだしESXi的にも安心!!

問題は手持ちのCPUがXeon E3-1260Lなので、BIOSが古いと動かないという事・・・。頼むぜSofmapちゃん。

ServeRaid M1015はH77 Pro4/MVPで動かないでござる

所持しているM1015が腐ってる可能性があり、この情報は正しくないかも知れません。

ASRcok H77 Pro4/MVPではIBM ServeRaid M1015(MegaRAID SAS 9240-8i)は動かない。

MPT2 BIOSの画面が出ないのは当然として、そもそもEFIで認識してくれない。PCIeのスロット変えてもダメ。

megarec.exeが「Warning! IO Base address high. Currently not supported」なるエラーを吐くのと関係してんのかなぁ。

家鯖のRAID-Zを構成しているHDD7台をM1015に繋いで、マシンの構成をすっきりさせる計画があああああ。ここまで来たらもう後には引けないので、妙に安くなってるGA-H77-D3H-MVP/Aをポチってみた。6980円の散在。

注文してから気づいたんだけど、こいつのNICってAtherosなのね。ESXiが対応してないんじゃん。ダメじゃん。茨の道を素足で突き進んでる気がする。

eBayでSFF-8087ケーブルを買ってみた

SFF-8087→SATAx4のケーブルが必要になった。ケースの都合上、SATA側は逆L型が望ましいのだが、国内で買うとそこそこ値が張る。そんな時はeBayだ!ってなもんで覗いてみると、送料無料で11米ドル程度〜だったので注文してみた。初eBay。

参考までに注文から配達までの経過を掲載。

日付 事象 場所
6/1 (土)注文
6/3 (月)出品者から発送通知
6/5 (水)引受HONG KONG
6/8 (土)国際交換局から発送KOWLOON D/HONG KONG
6/9 (日)国際交換局に到着成田国際空港郵便局
6/10(月)通関手続中
国際交換局から発送
6/11(火)到着最寄りの集配局
配達

香港から土日挟んで10日か。香港から出るまでに結構日数を食ってるが、日本国内に入ってからは流石の早さ。凄いぞ日本郵政。

ちなみに、荷物は国際特殊通常書留(問い合わせ番号がRCxxxyyyzzzHKという形式)扱いだった。ただ、この問い合わせがくせ者で、Hongkong Postの追跡サービスへの反映が極めて遅い(2013/6/8現在。確か日本郵政のサイトにも、香港郵政の追跡反映が遅延していると案内が出ていた)。日本郵政の追跡サービスの方で見るのが吉。

旧正月の時期は通常期より遅滞すると思うので要注意。

FreeBSD 9-RELEASEをRoot on ZFSで自動インストールするスクリプト作ったよー

FreeBSDをRoot on ZFSでインストールするには多大なコマンド入力が必要で、超面倒&高確率でミスを犯すので自動インストールするシェルスクリプト作った。 FreeBSD 9-RELEASE用。8はシステムの展開方法が違うので、そのままじゃ使えない。むしろ、さくらのVPS(2G)用。VNCコンソールでちまちま設定するのが面倒だったので…。

パーティションサイズやcompressionの設定、loader.confの中身は激しく俺仕様なので、要修正。

起動メディアからインストーラを立ち上げたら「Shell」に落ちて、このスクリプトを/varあたりに置いて実行すれば完全自動でRoot on ZFSな環境が出来上がるよ! ユーザーやらタイムゾーンやらの設定は全くしてないので、次回起動時に適宜設定する方向で。

システムファイルを配布サイトから取ってくる関係上、ifconfigとroute add defaultだけは手入力が必要。あと、スクリプトをどうやってインストール環境に持ってくかって問題もあるが、Root on ZFSしようとする人なら自前でFTPサーバくらい用意出来るだろうって事で。

freebsd9-root-on-zfs-installer.sh
#!/bin/sh
# FreeBSD 9.1-RELEASE Root on ZFS Installer
 
# システムファイルの配布サイト
URL="ftp://150.65.7.130/pub/FreeBSD/releases/amd64/9.1-RELEASE/"
 
# RAMディスク設定
RAMDISK="/tmp"
RAMDISK_DEV="md1"
# インストールに必要なtxzが収まり、物理メモリが1GBちょい空く位の容量にする
RAMDISK_SIZE="512M"
 
# インストールファイルのダウンロード先
DISTDIR="$RAMDISK/dist"
DISTFILES="base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz games.txz"
 
# インストール先ディスク
DISK="ada0"
# スワップパーティション名
SWAPNAME="-l swap"
# スワップサイズ
SWAPSIZE="-s 8G"
# データパーティション名
DATANAME="-l data"
# データボリュームサイズ
DATASIZE="-s 10G"
 
# ストレージプール名
ZPOOLNAME="zroot"
 
# インストール先ZFSファイルシステム
SYSROOT="$ZPOOLNAME/ROOT"
# 仮マウントポイントルート
MOUNTPOINT="/tmp/zfs"
# ストレージプールの代替マウントポイント
ALTROOT="$MOUNTPOINT/"
# インストール先フルパス
DESTDIR=$MOUNTPOINT/$SYSROOT
 
# ramdisk作り直し
echo 'Create ramdisk'
umount -f /dev/$RAMDISK_DEV
mdmfs -s $RAMDISK_SIZE $RAMDISK_DEV $RAMDISK
 
mkdir $MOUNTPOINT
 
# パーティション作成
echo 'Create partitions...'
sysctl kern.geom.debugflags=0x10
dd if=/dev/zero of=/dev/$DISK bs=1m count=100
 
gpart create -s gpt $DISK
gpart add -a 4k -s 64k -t freebsd-boot $DISK
gpart add -a 4k $SWAPSIZE -t freebsd-swap $SWAPNAME $DISK
gpart add -a 4k $DATASIZE -t freebsd-zfs $DATANAME $DISK
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $DISK
 
# 4kセクタでzpool作成
echo 'Create storage pool : ' $ZPOOLNAME
gnop create -S 4096 /dev/${DISK}p3
 
zpool create -R $ALTROOT -f $ZPOOLNAME /dev/${DISK}p3.nop
zpool export $ZPOOLNAME
 
gnop destroy /dev/${DISK}p3.nop
 
zpool import -R $ALTROOT $ZPOOLNAME
 
echo 'Create ZFS file systems'
zfs set checksum=fletcher4 zroot
 
zfs create -o normalization=formC $SYSROOT
 
zfs create $SYSROOT/usr
zfs create -o compression=gzip-9 $SYSROOT/usr/include
zfs create -o compression=gzip-9 $SYSROOT/usr/src
zfs create $SYSROOT/usr/home
cd $DESTDIR/; ln -s /usr/home home
cd /
 
zfs create -o compression=gzip-9 -o setuid=off $SYSROOT/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off $SYSROOT/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off $SYSROOT/usr/ports/packages
 
zfs create -o compression=on $SYSROOT/var
zfs create -o exec=off -o setuid=off $SYSROOT/var/crash
zfs create -o exec=off -o setuid=off $SYSROOT/var/db
zfs create -o exec=on  -o setuid=off $SYSROOT/var/db/pkg
zfs create -o exec=off -o setuid=off $SYSROOT/var/empty
zfs create -o exec=off -o setuid=off $SYSROOT/var/log
zfs create -o exec=off -o setuid=off $SYSROOT/var/mail
zfs create -o exec=off -o setuid=off $SYSROOT/var/run
zfs create -o exec=on  -o setuid=off $SYSROOT/var/tmp
chmod 1777 $DESTDIR/var/tmp
 
zfs create -o exec=on  -o setuid=off $SYSROOT/tmp
chmod 1777 $DESTDIR/tmp
 
echo 'Set bootfs='$SYSROOT
zpool set bootfs=$SYSROOT $ZPOOLNAME
 
echo 'Create zpool.cache'
zpool export $ZPOOLNAME
zpool import -o cachefile=/tmp/zpool.cache -R $ALTROOT $ZPOOLNAME
 
echo 'Fetch system files'
mkdir $DISTDIR
cd $DISTDIR
for file in $DISTFILES
do
    fetch ${URL}$file
done
 
echo 'Install system files'
for file in $DISTFILES
do
    echo "  extract... ${file}"
    cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}
done
 
cp /tmp/zpool.cache $DESTDIR/boot/zfs/zpool.cache
 
LOADERCONF=$DESTDIR/boot/loader.conf
echo 'Create '$LOADERCONF
echo 'zfs_load="YES"' >> $LOADERCONF
echo 'vm.kmem_size="512M"' >> $LOADERCONF
echo 'vm.kmem_size_max="1024M"' >> $LOADERCONF
echo 'vfs.root.mountfrom="zfs:'$SYSROOT'"' >> $LOADERCONF
echo 'vfs.zfs.prefetch_disable="1"' >> $LOADERCONF
echo 'vfs.zfs.vdev.cache.size="10M"' >> $LOADERCONF
echo 'vfs.zfs.arc_max="128M"' >> $LOADERCONF
 
RCCONF=$DESTDIR/etc/rc.conf
echo 'Create '$RCCONF
echo 'zfs_enable="YES"' >> $RCCONF
 
# sshを有効にする(危険なので各種設定が終わったらルートログイン不許可にすること)
#echo 'sshd_enable="YES"' >> $RCCONF
#SSHCONF=$DESTDIR/etc/ssh/ssh_config
#echo 'PermitRootLogin yes' >> $SSHCONF
 
FSTAB=$DESTDIR/etc/fstab
echo 'Create '$FSTAB
echo '/dev/gpt/swap none swap sw 0 0' >> $FSTAB
 
echo 'Set mountpoints'
zfs set readonly=on $SYSROOT/var/empty
 
zfs umount -af
zfs set mountpoint=none $ZPOOLNAME
zfs set mountpoint=legacy $SYSROOT
zfs set mountpoint=/usr $SYSROOT/usr
zfs set mountpoint=/tmp $SYSROOT/tmp
zfs set mountpoint=/var $SYSROOT/var
 
echo 'Done.'

で、だ。自作スクリプトが完成した直後に、zfsinstallという、そのまんまの名前の高機能なインストーラの存在を知って涙目。

お、俺スクリプトの方が引数とかないし、か、簡単に使えるし(震え声)

ストレージプールの直下以外でRoot on ZFSする時はmountpoint=noneを忘れずに(確信)

FreeBSDのRoot on ZFSで、ストレージプールのルート以外をシステムのルートディレクトリにする時は、ストレージプールのルートのマウントポイントを殺さないと死ぬ。

これだけじゃ何の事か分からんと思うので具体例をあげると、ストレージプールztankがあり、ztank/SYSROOTにFreeBSDをインストールしたとする。 インストール終盤で、以下のようにマウントポイントを設定するわけだが、1行目のztankルートに対するマウントポイントの設定を忘れると、システムの起動でこける。

zfs set mountpoint=none ztank              # 忘れがち!!
zfs set mountpoint=legacy ztank/SYSROOT
zfs set mountpoint=/usr ztank/SYSROOT/usr
...

“Trying to mount root from zfs:ztank/SYSROOT”は成功しているのに、直後に「ファイルがないよー」的なログが出てabortしてしまう。症状から察するに、どうやらztankの方が先に/にマウントされてしまい、起動に必要なファイルが見えない状態の模様。分かってしまえばどうってことはないが、地味に分かりづらい厄介な罠。

特に設定しなければ、ストレージプールは/poolnameとしてマウントされるはずなんだけど、なんで/にマウントされちゃうんだろう・・・?

尚、例ではmountpoint=noneにしてるけど、ルート(とシステム関係の場所)以外なら任意に設定して大丈夫だと思う(試してないけど)。

  • start.txt
  • 最終更新: 2022-07-27 15:26
  • by Decomo