CONTENTS
Lastmodified 2013-08-08 (木) 17:15:31
ML110 G7 OSレスモデル 6473360-AHZN (HP(旧コンパック))のデフォルトMemoryは2GB、HDD250GB
2013年6月1日現在の時点で当該モデル上でZFSrootな環境では、リブートに失敗する。っていうかシャットダウン出来ない。
http://www.nekolove.jp/wp/archives/2012/11/20121108105449.php
そこで、システムはUFSで、ユーザのデータ(/usr/home)はZFSで行くことにする。
デフォルト同梱の250GBのHDDへ、FreeBSD9.1RをDVD1を用いて普通に?UFSででインストール。このとき、一般ユーザを作らなければ/usr/homeはない。
root@g7:/boot/zfs # df -h Filesystem Size Used Avail Capacity Mounted on /dev/ada0p2 220G 3.6G 199G 2% / devfs 1.0k 1.0k 0B 100% /dev
の様になっている。勿論、/以下には、/usr/home やリンクはない。
で、ここで500GBのHDD3基を残りのベイに挿して、
zpool create tank raidz1 ada1 ada2 ada3
する。と、
root@g7:/boot/zfs # zpool status pool: tank state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada1 ONLINE 0 0 0 ada2 ONLINE 0 0 0 ada3 ONLINE 0 0 0 errors: No known data errors
このtankを/usr/homeにする
g7# zfs set mountpoint=/usr/home tank
流儀に則ってリンクを作る
g7# ln -s /usr/home/ /home
と、こうなる
root@g7:/boot/zfs # df -h Filesystem Size Used Avail Capacity Mounted on /dev/ada0p2 220G 3.6G 199G 2% / devfs 1.0k 1.0k 0B 100% /dev tank 912G 40k 912G 0% /usr/home
で、これだけだと、rebootすると、
messagesにこんなログも吐いて
Jun 1 12:48:43 g7 kernel: ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present; Jun 1 12:48:43 g7 kernel: to enable, add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf. Jun 1 12:48:43 g7 kernel: ZFS filesystem version 5 Jun 1 12:48:43 g7 kernel: ZFS storage pool version 28
/usr/home がdfで見えなくなります。
Filesystem Size Used Avail Capacity Mounted on /dev/ada0p2 220G 3.6G 199G 2% / devfs 1.0k 1.0k 0B 100% /dev
このとき、
g7# cd /boot/zfs g7# zpool export tank g7# zpool import tank
すれば、
tank 912G 40k 912G 0% /usr/home
が再び現れます。(^_^;
コレの回避策は、4GB以上メモリーを積むか、
/boot/loader.conf
vfs.zfs.prefetch_disable=0
のどちらか・・・です。
というのは、ウソでした(^^ゞ
8GBのメモリーを積んでみました。起動時に
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
というログは消えましたが、
root@G7:/dev # df -h Filesystem Size Used Avail Capacity Mounted on /dev/ada0p2 220G 3.5G 199G 2% / devfs 1.0k 1.0k 0B 100% /dev
tank 912G 40k 912G 0% /usr/home
最下段のtankの行は出てきません。/etc/fstabに書くのかな・・・じゃなくて(^^ゞ
https://www.bsdconsulting.co.jp/DOWNLOAD/FREEBSDSTUDY-013.SATO.pdf
によれば、
/etc/fstab は見ない。
/etc/rc.conf
zfs_enable="YES"
/boot/loader.conf
zfs_load="YES"
を書くべし。とのことでした。
要するに、カーネルモジュールを自分で明示的に起動しなさい、ということでした(^^ゞ
買ったばかりのHDDをベイに挿しただけだと、/var/log/messages にこんな・・・
Jun 6 18:04:18 G7 kernel: GEOM: ada1: the primary GPT table is corrupt or invalid. Jun 6 18:04:18 G7 kernel: GEOM: ada1: using the secondary instead -- recovery strongly advised. Jun 7 06:37:48 G7 kernel: GEOM: ada2: the primary GPT table is corrupt or invalid. Jun 7 06:37:48 G7 kernel: GEOM: ada2: using the secondary instead -- recovery strongly advised. Jun 7 06:37:48 G7 kernel: GEOM: ada3: the primary GPT table is corrupt or invalid. Jun 7 06:37:48 G7 kernel: GEOM: ada3: using the secondary instead -- recovery strongly advised. Jun 7 06:37:48 G7 kernel: Trying to mount root from ufs:/dev/ada0p2 [rw]...
なんかマズイ風味
root@G7:/root # gpart show /dev/ada1 gpart: No such geom: /dev/ada1.
確かに、GPT table ありません。
root@G7:/root # gpart create -s gpt ada1 gpart: geom 'ada1': Operation not permitted
あれ?
root@G7:/root # gpart create -s gpt /dev/ada1 gpart: geom 'ada1': Operation not permitted
ん?こういうのは、これで良かった様な・・・
root@G7:/root # sysctl kern.securelevel kern.securelevel: -1 root@G7:/root # sysctl kern.geom.debugflags=0x10 kern.geom.debugflags: 0 -> 16
これでどうだ?
root@G7:/root # gpart create -s gpt /dev/ada1 ada1 created
できたヽ(^。^)丿
root@G7:/root # gpart create -s gpt /dev/ada2 ada2 created root@G7:/root # gpart create -s gpt /dev/ada3 ada3 created
他のも出来たので、
root@G7:/root # sysctl kern.geom.debugflags=0 kern.geom.debugflags: 16 -> 0
と元へとかえす。ちょっと強引だったか(^^ゞ
システムは、、/dev/ada0上にあって、物理的には一番ベイにある。で、ada1~3の三基のHDDでraidz1を組むということなのだけど、実際にHDDを2番ベイに一基増やすと、
Jun 6 10:04:49 G7 kernel: ada0 at ata2 bus 0 scbus0 target 0 lun 0 Jun 6 10:04:49 G7 kernel: ada0: <VB0250EAVER HPG9> ATA-8 SATA 2.x device Jun 6 10:04:49 G7 kernel: ada0: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes) Jun 6 10:04:49 G7 kernel: ada0: 238475MB (488397168 512 byte sectors: 16H 63S/T 16383C) Jun 6 10:04:49 G7 kernel: ada0: Previously was known as ad4 Jun 6 10:04:49 G7 kernel: ada1 at ata2 bus 0 scbus0 target 1 lun 0 Jun 6 10:04:49 G7 kernel: ada1: <WDC WD5000AZLX-00K4KA0 80.00A80> ATA-8 SATA 3.x device Jun 6 10:04:49 G7 kernel: ada1: 600.000MB/s transfers (SATA 3.x, UDMA5, PIO 8192bytes) Jun 6 10:04:49 G7 kernel: ada1: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C)
の様になる。で、その隣の3番ベイにHitachのHDDをさすと・・・
Jun 6 10:04:49 G7 kernel: ada0 at ata2 bus 0 scbus0 target 0 lun 0 Jun 6 10:04:49 G7 kernel: ada0: <VB0250EAVER HPG9> ATA-8 SATA 2.x device Jun 6 10:04:49 G7 kernel: ada0: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes) Jun 6 10:04:49 G7 kernel: ada0: 238475MB (488397168 512 byte sectors: 16H 63S/T 16383C) Jun 6 10:04:49 G7 kernel: ada0: Previously was known as ad4 Jun 6 10:04:49 G7 kernel: ada1 at ata2 bus 0 scbus0 target 1 lun 0 Jun 6 10:04:49 G7 kernel: ada1: <Hitachi HDP725050GLA360 GM4OA52A> ATA-8 SATA 2.x device Jun 6 10:04:49 G7 kernel: ada1: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes) Jun 6 10:04:49 G7 kernel: ada1: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C) Jun 6 10:04:49 G7 kernel: ada1: Previously was known as ad5 Jun 6 10:04:49 G7 kernel: ada2 at ata3 bus 0 scbus1 target 0 lun 0 Jun 6 10:04:49 G7 kernel: ada2: <WDC WD5000AZLX-00K4KA0 80.00A80> ATA-8 SATA 3.x device Jun 6 10:04:49 G7 kernel: ada2: 600.000MB/s transfers (SATA 3.x, UDMA5, PIO 8192bytes) Jun 6 10:04:49 G7 kernel: ada2: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C) Jun 6 10:04:49 G7 kernel: ada2: Previously was known as ad6
Jun 6 11:18:19 G7 kernel: ada0 at ata2 bus 0 scbus0 target 0 lun 0 Jun 6 11:18:19 G7 kernel: ada0: <VB0250EAVER HPG9> ATA-8 SATA 2.x device Jun 6 11:18:19 G7 kernel: ada0: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes) Jun 6 11:18:19 G7 kernel: ada0: 238475MB (488397168 512 byte sectors: 16H 63S/T 16383C) Jun 6 11:18:19 G7 kernel: ada0: Previously was known as ad4 Jun 6 11:18:19 G7 kernel: ada1 at ata2 bus 0 scbus0 target 1 lun 0 Jun 6 11:18:19 G7 kernel: ada1: <Hitachi HDP725050GLA360 GM4OA52A> ATA-8 SATA 2.x device Jun 6 11:18:19 G7 kernel: ada1: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes) Jun 6 11:18:19 G7 kernel: ada1: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C) Jun 6 11:18:19 G7 kernel: ada1: Previously was known as ad5 Jun 6 11:18:19 G7 kernel: ada2 at ata3 bus 0 scbus1 target 0 lun 0 Jun 6 11:18:19 G7 kernel: ada2: <WDC WD5000AZLX-00K4KA0 80.00A80> ATA-8 SATA 3.x device Jun 6 11:18:19 G7 kernel: ada2: 600.000MB/s transfers (SATA 3.x, UDMA5, PIO 8192bytes) Jun 6 11:18:19 G7 kernel: ada2: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C) Jun 6 11:18:19 G7 kernel: ada2: Previously was known as ad6 Jun 6 11:18:19 G7 kernel: ada3 at ata3 bus 0 scbus1 target 1 lun 0 Jun 6 11:18:19 G7 kernel: ada3: <Hitachi HDP725050GLA360 GM4OA5CA> ATA-8 SATA 2.x device Jun 6 11:18:19 G7 kernel: ada3: 300.000MB/s transfers (SATA 2.x, UDMA5, PIO 8192bytes) Jun 6 11:18:19 G7 kernel: ada3: 476940MB (976773168 512 byte sectors: 16H 63S/T 16383C) Jun 6 11:18:19 G7 kernel: ada3: Previously was known as ad7
こうなってしまう。WDのHDDが、ada1からada2に変わっている。自動認識した順番だそうな・・・(´・ω・`)
トラブル時などに混乱しないように、物理的ベイと一致させて固定化したい所。
http://wiki.rookie-inc.com/os/nas4free/fixdevicenum
http://www.freebsd.org/doc/ja/books/handbook/device-hints.html
http://wirednoize.net/freebsd/index.php?FreeBSD%208.2%20Release%20AHCI%20to%20CAM
device.hintsに記述して、デバイス番号を固定化するヨロシ
hint.scbus.0.at="ahcich10" hint.ada.0.at="scbus0" hint.scbus.1.at="ahcich11" hint.ada.1.at="scbus1"
hint.scbus.0.at="ahcich12" hint.ada.2.at="scbus0" hint.scbus.1.at="ahcich13" hint.ada.3.at="scbus1"
echo 'hint.scbus.0.at="ahcich0"' >> /boot/device.hints echo 'hint.ada.0.at="scbus0"' >> /boot/device.hints echo 'hint.scbus.1.at="ahcich1"' >> /boot/device.hints echo 'hint.ada.1.at="scbus1"' >> /boot/device.hints echo 'hint.scbus.2.at="ahcich2"' >> /boot/device.hints echo 'hint.ada.2.at="scbus2"' >> /boot/device.hints echo 'hint.scbus.3.at="ahcich3"' >> /boot/device.hints echo 'hint.ada.3.at="scbus3"' >> /boot/device.hints echo 'hint.scbus.4.at="ahcich4"' >> /boot/device.hints echo 'hint.ada.4.at="scbus4"' >> /boot/device.hints echo 'hint.scbus.5.at="ahcich5"' >> /boot/device.hints echo 'hint.ada.5.at="scbus5"' >> /boot/device.hints
Total access 2290:本日 1:昨日 0