zfsとFreeBSDとギガバイトのMBとhdparm

概要

ガバイトマザーボードのHPAに呪われたzfsのディスクはknoppixとhdparmで救えた

むき身のHDDを箱に入れる作業は簡単なはずだったのに

ZM-HDR1というHDD用の箱にHDDを入れたんだけど、これちょっとマウンタをケースに押し込むときにコツが必要で、ちゃんと押し込めないと当然認識せず、あれーおかしいなぁとか言いながらHDDを挿す場所替えたりとかしたのが敗因。

つい余計な作業をしてしまい

BIOSアップデート&今までSATAカードに刺さってたSATAHDDをオンボードの方に差し替えた
(ちなみにマザーボードGIGABYTE GA-G31M-ES2L rev1.1で元のBIOSはF5。最新のF10にした)
HDD認識しないなーとか言いながらメーカーサイト見てたらBIOSの最新版が目に入って、そういえばこのマザーボードUSBメモリから起動するとHDD認識の順番が変わっておかしいんだよなーとか思いながらBIOSアップデートしてしまったんだよ

そして起こる悲劇

プールが見えなくなったのでとりあえずexportしてimportし直してみようと思ってexportしたけどimport出来ない
ここからおなかが痛くなりはじめる
うちの旦那のアニメコレクションとか怪しい伝説とかアメリカンチョッパーとかウィスカーズとか全滅all\(^o^)/とかどうしたらいいのー

必死でググる

failed to unpack label zfsでググって一番始めに出てきた日本語の情報
d:id:navyfox:20091129
NavyFoxさんの日記が似た状況で必死で内容を読んだ
自分でもzdb -l /deb/ad4とかやって先頭のラベル(LABEL 0と1)が生きているのとラベルが正常なHDDと比較してシリンダ数が足りなくなってるっぽい事も判明
HDDが壊れたのではなくてBIOSが何かやらかしてHDDの容量が小さくなってるんじゃないか、それならデータは生きてるはず!とあきらめずすんだ
NavyFoxさんの日記と状況が同じだったので書いてあるとおり翌日HDDを買って来て作業することに。

お店が開くまでの時間もzfsとかfailed to unpack labelでググりまくったらマザーボードbios替えてジオメトリがおかしくなってるならbios戻したら良いじゃん的な海外フォーラムの記事を見つけて作業をしたけど駄目だった

11時にお店が開くのを待ってお買い物に

とかつぶやきつつお出かけの支度。出かけてる最中にtwitterTL見てたら師匠から@メッセージ来てた!

ガバイトマザーボードBIOSでなにやら管理する用の領域を勝手にHDDの末尾に作るらしという情報を得た!
ここからググるキーワードにHPAが追加されて何が起こってるのかやっとわかってきた

raidzだとHDDの台数が多い

http://hub.opensolaris.org/bin/download/Community+Group+zfs/docs/ondiskformat0822.pdf
NavyFoxさんが調べて記録しておいてくれたのがとても助かったzfsのラベル
ディスク末尾のラベルの位置はディスクが1台なら8192 + (asize/512)だけど、うちみたいに3台でraidzとかやってるなら
8192+(asize/HDD台数/512)
で良いみたい。
買って来たHDDにad6のバックアップをとって実験したらそれで成功した
うちのばあい
8192 + (asize 4500891107328 / disk台数3 / 512) = 0xAEA87600
だったので

# dd if=ad6.img count=0x200 of=ad6label_head
# dd if=ad6label_head count=0x200 skip 0xAEA87600 of=ad6.img

とかやってzdb -l ad6.imgってやったらちゃんとLABEL0〜3まで見えた!

knoppixとhdparmでHPAを無効にする

予算の都合でHDDを何台も買ってられないので、今あるHDDのHPAにとられた部分を取り返さないといけない。
取り戻せなければ今使ってる1.5TBよりも確実に大きいサイズのHDDが3台別に必要になるのでそれは痛い
HPAでいろいろググるlinuxのhdparmで取り戻せるらしい事が判明。linuxの入ったHDD無いからknoppixをCDに焼いた
手近にCDのメディアしかなかったのでknoppixのCD版焼いたらなかにhdparm入ってなかった\(^o^)/

# apt-get update ;apt-get install hdparm

とかやってhdparmを使える様にして

# hdparm -i /dev/sdb

でデバイスと作業したいHDDが合ってるか確認して

# hdparm -N /dev/sdb ←これをやると
/dev/sdb:
 max sectors   = 認識してるサイズ/全体のサイズ, HPA is enabled

とか出るので

# hdparm -Np全体のサイズ /dev/sdb

ってやったらHPA is disabledになってHPAの呪いが解けた!
(HDIO_SET_PIO_MODE failedとか出るけどタイミングが良いとdisableになるなんなのこれ)

そして復旧

HPAの呪いのかかった2台のHDDの呪いを解いて、先ほど計算したLABELを末尾に書いたらおkだーと思ったらLABELを書くまでも無くzpool importで認識できました。HPA領域確保だけして中身はいじって無いっぽいです?

という情報も得たので、とりあえずad6のイメージを吸い出したHDDを生け贄にマザーボードのSATA0の場所にさして起きました。
案の定、起動後にはad6のイメージの入っていた筈のzfs領域が見えなくなってたよ\(^o^)/
(HPAが作られた状態でzfs領域作ってバックアップ用に使うから良いんだけどさー)

もうギガバイトマザーボード買わない><

HPAとかzfsでググってる時に海外フォーラムで同じような事質問してる人がいて*1、フォーラムの人たちも原因不明で、俺らの為にマザーボードの型番教えてくれよって書き込みがあって、型番見たらギガバイトでした
HDDの末尾とはいえユーザに内緒で変更を加えるなんて酷すぎると思います><
とりあえずWindowsを入れない用途にはもうギガバイトのMB買うの辞めようって決意する位悲惨な出来事でした><

*1:上の方にかいたbios書き戻せよって言われてた人だと思う

はてなのツイッターまとめ機能

使ってみたけどいまいちだと思ったのでやめた。
はてなtwitter連動ははてブもいまいち使いづらい
twitterからはてブじゃなくてはてブからtwitterだったら良いのにと思うのだけど、それにははてなからtwitterへの投稿数の問題とかあって無理なんだろうなーという気がする

遠足のしおりの折り方

遠足のしおり等によく使われる、紙1枚に8ページをまとめて印刷して折るとのりやホチキスを使わなくても8ページの豆本になる印刷方法が好きで、これを使って旅行の日程表などを友達に配ったりする事があるのですが、印刷したまま渡すと折り方がわからず何で上下ページが逆になってるの?とか言われたりして残念な気分になることがよくあります。
↑の豆本を勝手に遠足のしおり折りと呼んでます
最近話題のHTML5のハンドブックを作った人がいて*1cssを使ってきれいにページがまとめられているのを見ることができるほか、print用のcssもあってこれが豆本を作るようにページが上下向かい合わさって印刷される様になってるのです。
遠足のしおり折りではなくページを単体で切り取ってホチキス製本された方がいて*2遠足のしおり折り大好きとしてはとても残念な気分になったので作り方を載せておきます。

作り方

  • 枠線で切る

  • 印刷面が外に向くように長い辺方向の真ん中の線で折る

  • 一旦広げて印刷面が外に向くように今度は短い辺方向の真ん中の線で折る

  • 折ったまま短い辺の残りの線を印刷面が内側に向くように折る(2カ所)

  • 一旦広げて長い辺の真ん中にはさみを入れる。4等分された真ん中の2区間分だけ切る

  • 切ったらもう一度長い辺の線を折り目通り折ると真ん中に穴の空いた+型の様な形になる

  • 表紙部分を探してぺたんこにするとできあがり


#追記
ネタにマジレス的な事をしてしまったのかもしれないorz

PS3とFreeBSDでDLNA

新型PS3を早速買ったけど、やるゲームがあまりないので、自宅サーバDLNAサーバを入れて動画やら音楽やらを楽しもうと思ったメモ

mediatombをインストール

いろいろ調べてみるとこれがFreeBSDとかLinuxとかで動くDLNAサーバらしい
昔なら自分でソースをとってきて入れるところだけど、子供が騒がないうちに作業しないとならんので/usr/ports/net/mediatombをmake installすることにした。
/usr/ports/X11の下のライブラリをいろいろ入れる事になったので普段X環境無いと結構時間かかるのかも
特に問題も起こらずに*1インストールできた
今回インストールしたのはmediatomb-0.11.0らしい

MYSQLを使う

mediatombにはsqlitemysqlかどっちかのデータベースが必要。
うちのサーバにはmysqlがすでに入っているのでそれを使うことにした。
で、mediatomb用にデータベースを作ってあげないといけない。
mediatombというユーザをmysqlに作ってmediatombという名前のデータベースを作るらしい
http://mediatomb.cc/pages/documentation#id2535847

で、/usr/local/share/mediatomb/mysql.sqlmysqlコマンドから投入してあげると良い

mysql -u mediatomb -p -D mediatomb < mediatomb/mysql.sql

このファイルはすでにあるテーブルをdropしてから作成し直しとかしないので後からいろいろ実験でデータベースを作り直したい時は

drop table `mt_cds_object`;
DROP TABLE `mt_cds_active_item`;
DROP TABLE `mt_internal_setting`;
DROP TABLE `mt_autoscan`;

とかいう内容のファイルを作っておくとあっという間に初期状態に戻せる

mediatomb設定

いろいろmediatombの事を調べるとmediatomb.confが必要的な事が書いてあったりするけど、古いバージョン用なのかconfig.xmlだけが設定ファイルになっているみたい。
portsからインストールしたら/usr/local/mediatomb/config.xmlにある。
確認したり変更したりする内容はmysqlを有効にする部分と

<mysql enabled="yes">
  <host>localhost</host>
  <username>mediatomb</username>
  <database>mediatomb</database>
  <password>パスワード</password>
</mysql>

あと<!-- For PS3 support change to "yes" -->というコメントが書かれてる部分とか
<!-- Uncomment the line below for PS3 divx support -->というコメントが書かれてる部分をその通りに編集する

あとは/etc/rc.confに設定を書く

mediatomb_enable="YES"
mediatomb_mtuser="mediatomb"
mediatomb_mtgroup="mediatomb"
mediatomb_config="/usr/local/etc/mediatomb/config.xml"
mediatomb_logfile="/var/log/mediatomb.log"
mediatomb_pidfile="/tmp/mediatomb.pid"
mediatomb_port="49152"
mediatomb_interface="vge0"

最後のinterfaceを設定しないとmediatombが一番はじめに見つけたインターフェースのIPアドレスで動く様になるからネットワークインターフェースが2個以上付いていれば設定するし、そうでなければいらない。

動作確認

設定が終わったら/usr/local/etc/rc.d/mediatomb startで動くはず
mediatomb_logfileに設定したファイルを確認してみる

ファイルを登録

ここまで書いて子供が騒ぎ始めたので続きはまた後で。

未解決な事リスト

  • ファイル名がEUCでMP3のタグがSJISUTF-8だと文字化けしたり最悪mediatombが動かなくなったりする
  • flvが見られない(トランスコードの設定があるようだ?)
  • DLNAクライアントから見たときのルートディレクトリを変更したい

*1:途中xlibのバージョンあげろとかconfig画面で何度か止まったけど

プレステ3買いました

新型が出たし、4Gamer.net ― LEGO Indiana Jones: The Original Adventures[PC]Wiiの日本版の発売がやめになってしまって困ってたし*1、トロ大好きだし買ってしまえ。という事で買ってきました。

HDMIの付いてないテレビなのでD端子でつなごうと思ったのですが、D端子の空き無いからWiiはしばらく外しておこうかと思ったらPS2PS3WiiXbox360を1つのD端子につなげるセレクター付きのケーブルを見つけたので一緒に購入。
縦置きスタンドも買って、全部で35000円くらいビックカメラで払いました。

で、早速設置。あらかじめアマゾンで頼んであったレゴインディとまいにちいっしょでとりあえず楽しんでます。

ついでにこの間ワンダースワン探した時にポケステが出てきたので、PS2もテレビにつないでどこでもいっしょとか使えるようにしようかな

*1:Wiiはリージョンがかけてあって海外ゲームが動かない

頭方向へ進む

2ヶ月児の2号の足の力が最近強くなってきて機嫌が悪いときには頭の方向へどんどん進んでいきます。2ヶ月児を普段乗せてる布団は子供布団で小さいのであっという間に布団から頭が出て、さらに機嫌が悪くなって頭方向へ移動してどんどん畳の上へ出て行ってしまうので、最近は泣き始めたらすぐに見に行かないといけないのです。
1号が2歳くらいの頃にやはり寝てると頭方向に移動してしまって、寝室の頭の方はすぐに壁なので壁に頭をぶつけて泣きながら起きるという事が結構あったなぁと言うことを思い出しました。

Googleオリジナルレジャーグッズ欲しい!

はてなブロガーの本まとめて欲しい! (B賞欲しいです)

はてなのキャンペーンに応募。
ブロガーの本キャンペーンはコメント欄にどっちが欲しいか書けってあったけど本文じゃだめなのかなぁ