gptzfsboot error 49
家鯖を久々にモニタに繋いで起動してみたら、ブート時に
gptzfsboot error 49 lba 32 gptzfsboot error 49 lba 1
という謎エラーが出てた。なにこれこわい。
直前にHDDのSATAポートを入れ替えたりしてたので「もしかして弾みでHDDをぶっ壊した!?」とビクビクしながらググってみたら、FreeBSDのMLがヒットした。
やり取りによると、49というのはBIOSが返すエラーコードで「No media in drive.」を表すそうな。ZFSブートストラップがリムーバブルドライブを見つけ、かつメディアが入ってない場合に出る警告で、今まで通りシステムがブートするなら無視しておkとの事。
そういえば先日、内蔵のSDカードリーダーをブート候補に加えたので、きっとそのせいだな……。
と言う訳で一件落着。
Portsにnetatalk 3.0.1がキタ━━━(゚∀゚)━━━ !!!!!
FreeBSD Portsのnetatalkが3.0.1になっていたのでインストールした。
前のバージョンはビルドでこけていたが、今回はすんなり入った。
HATさんのところを参考にafp.conf
を書いて、netatalkを起動。Macからログインユーザーのホームディレクトリにアクセスしてみたら、「Something wrong with the volume's CNID DB, using temporary CNID DB instead. Check server messages for details!」ウィンドウがキタ━━━(゚∀゚)━━━ !!!!!
ログを見るとcnid_metad {netatalk_conf.c:1316} (E:Default): getvolbypath(“/usr/home/Decomo”): no volume for path
とのこと。はて、/usr/home/Decomo
は間違いなく存在してるんだけどな…。ならばと、basedir regex = /usr/home
にしてみると、今度は共有一覧にホームディレクトリが出なくなってしまった。passwdのホームディレクトリパスは/home
始まりだから、マッチしなくなったんだろうね……多分。
他の共有ボリュームも同様のエラーが出たので調べてみたら、netatalk 2とはシンボリックリンクの扱いが変わったっぽい?
うちのFreeBSD鯖はMacの流儀に合わせ、/Volumes
以下に必要なボリュームのシンボリックリンクを置き、それらを使うようにしてある。netatalkも例外ではなく、/Volumes/XXXX
を公開する設定にしていたのだが、これらボリュームで軒並み Somethin wrong… CNID DB と、no volume for pathが発生していた。
path
を実体に置き換える事で問題は無く使えるようになったが、俺的運用では微妙に不便というか気持ち悪い。
てか、この仕様だとFreeBSDで[Homes]
を使ったログインユーザー毎のホームディレクトリ共有が無理っぽい気が。
basedir regex = /home
だとgetvolbypath
で失敗するし、かといって/usr/home
にするとpasswdからユーザーのホームディレクトリを引けなくなる。オワタ。設定か何かで回避出来るんだろうか…?
とりあえず、家鯖は自分一人しか使ってないので、通常ボリュームとしてホームディレクトリを共有する設定にした。最終的なafp.confはこんな感じ。
; ; Netatalk 3.x configuration file ; [Global] ; Global server settings vol preset = _DEFAULT log file = /var/log/netatalk.log [_DEFAULT] file perm = 0600 directory perm = 0700 ;[Homes] ;basedir regex = (/home|/usr/home) ;home name = $u [Decomo] path = /usr/home/Decomo [Time Machine] ;path = /Volumes/TimeMachine/ path = /zdata3/NFC/backup/TimeMachine time machine = yes vol size limit = 2097152 [Data] ;path = /Volumes/Data path = /zdata3/NFC/data [Public] path = /usr/home/PUBLIC file perm = 0660 directory perm = 0770
Portsにnetatalk 3がキタ━━━(゚∀゚)━━━ !!!!!
ようやくFreeBSDのPortsにnetatalk 3が来たのでmakeしてみたが、libeventの扱いがおかしいらしく、ビルドが通らなかった。
ググってみたら他にも変な所があるようで、暫くはお預けかな……。
早く.AppleDoubleとオサラバしたいよ〜。
サーバマシン新調
2TB HDDx4のRAID-Zで構成してた家鯖の空きが少なくなってきた。
ProLiant MicroServerでは3.5インチHDDが4台しか積めず、単純にHDDを3TBに置き換えてもそう遠くない未来に限界に達する事は目に見えてるので、普通のケースで鯖マシンを新調した。
新旧鯖比較
スペック
MicroServer | 新サーバ | |
---|---|---|
CPU | Athlon II NEO N36L | Xeon E3-1260L |
M/B | - | ASRock H77 Pro4/MVP |
メモリ | 8GB (TED38192M1333C9DC) | 16GB |
GPU | 内蔵(RADEON HD4200相当) | 内蔵(Intel® HD Graphics 2000) |
消費電力
状態 | MicroServer | 新サーバ |
---|---|---|
アイドル | 51〜52 | 50~53 |
ubench -c | 55〜58 (Ubench CPU: 144707) | 69~72~76 (Ubench CPU: 1342148) |
ubench -m | 57〜61 (Ubench MEM: 100004) | 62〜64〜67 (Ubench MEM: 311924) |
bonnie(起動ドライブ) | 53〜58〜61 | 60〜91(70後半〜80中盤を行き来する事が多い) |
HDDフルアクセス&CPU100% | 60〜64〜70 | 81〜99 |
ZFSのストレージプールにHDDをミスって丸ごと追加しちゃったあああぁぁぁ………
3TBx3から成るRAID-Zプールに、
pool: zdata3 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zdata3 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada4p1 ONLINE 0 0 0 ada2p1 ONLINE 0 0 0 ada0p1 ONLINE 0 0 0 errors: No known data errors
2TBx3を丸ごと追加しちゃった…
$ sudo zpool add zdata3 raidz ada1 ada3 ada5 $ zpool status pool: zdata3 state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zdata3 ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 ada4p1 ONLINE 0 0 0 ada2p1 ONLINE 0 0 0 ada0p1 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 ada1 ONLINE 0 0 0 ada3 ONLINE 0 0 0 ada5 ONLINE 0 0 0 errors: No known data errors
追加自体は意図したものなので別にいいんだが、パーティション切りたかったよママン……(´Д⊂
これまで、折角4KiBセクタを考慮してプールを作ってきたのに……HDDを丸ごと追加した場合はZFSが先頭セクタから全部使ってくれるのかなぁ?それならアライメントはズレないハズだから特に問題はないんだが、もし違ったら………:y=-( ゚д゚)・∵;; ターン
やらかしたのが2TBのHDDだったのが不幸中の幸いか。HDDを交換する際に2TB以上にすれば確実に置き換えられるし、今度こそパーティションも切れるしね。
ZFSは操作がお手軽で良いんだが、こういう不可逆操作までお手軽に出来てしまうのは考えもの。