ディスクが壊れたら HOWTO (gmirror編)

ディスクが壊れた。
また、だ。家の Aspire One のディスクが壊れてから、2週間も経ってないのに。
今度は研究室のサーバで、ad4 と ad6 が同じサイズのディスクで、gmirror でパーティションごとにミラーされている構成。同じサイズのディスクは研究室のあちこちで使ってるので、新品も使いかけも含めて予備もいっぱいあるので、シャットダウンして交換すればよい。
なぜ気づいたかというと、特になにか重たいプロセスが走っているわけでもないのにずっと load average が 1.0 前後で、CPU 使用率も、user が 0% なのに system が 50% になっていたりとか、なんでかなー、と思っていた。で、試しに再起動してみたら、いつまでたっても起動しないので、シリアルコンソールでのぞいてみたら、BIOS が “SATA port A にディスクがつながってないよー” と。認識すらされてないので、おそらく基板ごとディスクが壊れました (取り外すだけ外して、まだ確認してない)。
生きているほうのディスクから起動したところちゃんと起動した。Filesystem も clean である。gmirror で動いてるのだから当然といえば当然なんだけど、すごいな。gmirror status すると、全部 degraded になっている。これも当然。
それで、新しいハードディスクを入れて、ミラーを復活させるまでの作業が以下の通り。ad4 が正常に起動しているディスク、ad6 が新しいディスク、gm0 がミラー。
まず fdisk -p でパーティション (スライス) 情報が出るのを確認。
root# fdisk -p /dev/ad4
# /dev/ad4
g c969021 h16 s63
p 1 0xa5 63 976773105
a 1
これをファイル (/tmp/configにした) に落として、fdisk -f で新しいディスクに書き込めば OK.
root# fdisk -p /dev/ad4 > /tmp/config
root# fdisk -f /tmp/config /dev/ad6
******* Working on device /dev/ad6 *******
fdisk: WARNING line 2: number of cylinders (969021) may be out-of-range
(must be within 1-1024 for normal BIOS operation, unless the entire disk
is dedicated to FreeBSD)
これでちゃんと /dev/ad6s1 ができるはず。次は disklabel で同じことをして、BSD パーティションを作る。まずは確認から。
# disklabel /dev/ad4s1
# /dev/ad4s1:
8 partitions:
# size offset fstype [fsize bsize bps/cpg]
a: 4194304 0 4.2BSD 0 0 0
b: 16777216 4194304 swap
c: 976773105 0 unused 0 0 # “raw” part, don’t edit
d: 16777216 20971520 4.2BSD 0 0 0
e: 8388608 37748736 4.2BSD 0 0 0
f: 268435456 46137344 4.2BSD 0 0 0
g: 662200305 314572800 4.2BSD 0 0 0
disklabel: partition c doesn’t cover the whole unit!
disklabel: An incorrect partition c may cause problems for standard system utilities
同様にファイルに落として、今度は disklabel -R で書きこみ。
root# disklabel /dev/ad4s1 > /tmp/config
disklabel: partition c doesn’t cover the whole unit!
disklabel: An incorrect partition c may cause problems for standard system utilities
root# disklabel -R /dev/ad6s1 /tmp/config
これで、/dev/ad6s1a とかが見えるようになる。
ここまでは順調だったが、新しいディスクを mirror に参加させるところではまった。普通、新しいディスクを mirror のメンバにするには、
root# gmirror insert gm0s1a /dev/ad6s1a
のようにすればよいのだが、こうすると “not all disks connected” となる。つまり、gmirror 的には昔のメンバの一覧と違う状態になっている (degraded) からなのだ。これを解決するには、
root# gmirror forget gm0s1a
とする。そうすると、壊れちゃったほうのディスク上のパーティションのことは忘れ去られるので、gmirror status でみたときの状態は complete に変わる。そこで gmirror insert すれば OK.
というわけで、すべてのパーティションを mirror して、終了。
swap はミラーしてなかったんだけど、メモリが多かったから助かったのかしらん。
あと、片方のディスクが壊れたら何か通知がくるようにしたいな…

ディスクが壊れたらHOWTO

ディスクが壊れた。
Acer の Aspire One (AOA150) というマシンで、2009年の4月に買って、その頃は MacBook Air 持ってなかったので本気の FreeBSD モバイル環境としていろいろ hack してた マシンである。けっこう活躍したが、suspend/resume できない点だけは解決できず、結局 MacBook Air にモバイルの座は譲り渡すことになった。ラップトップを FreeBSD で動かすってのは学生時代からだから、もう10年以上そうしてたわけだけど、最後の FreeBSD/i386 マシンで、おそらく最後の FreeBSD モバイル環境でもある (Mac がダメな方向にいくようなことがあれば、また戻るけどね)。
で、2011年の春に沖縄に引っ越してきてからは自宅サーバとして電源入れっぱなしにしていた。もともと普通のネットブックなので、ええ加減な作りであるし、2年も3年も連続稼働できるわけはないのだけれど、なんとなくちゃんと動いているし、ま、大丈夫だろ、と思ってバックアップもとっていなかった。つまり、典型的なダメな管理者ですね。
それで、ある日、セキュリティ関連のアップデートをしようと思っていろいろコンパイルしてたら、落ちた。そもそもごりごりコンパイルするようなマシンではないので、熱暴走で落ちることはいままでも何回かあったし、ま、そんなものかな、と思って電源を再投入した。
そしたら filesystem が clean でないといって、全然起動しない。さっき固まったからちゃんと shutdown してないわけだし、たいしたことないだろ、と思って、fsck -y すると、何度やっても、
/dev/ad4s1g: UNEXPECTED SOFT UPDATE INCONSISTENCY; RUN fsck MANUALLY.
こんな感じである。こりゃまずいですよ。そう、fsck 何度やっても。幸い、/ とか /usr とか /var は fsck が通ったので、なんとか起動はしているものの、/home の下に web サーバのデータとか置いてあるから、それを救出しなければならない。
そこで、mount (8) を読むと、
-f …. Also forces the R/W mount of an unclean file system (dangerous; use with caution).
と書いてある。こうか。
mount -f /dev/ad4s1g /home
エラー出ちゃった…。でも、readonly では mount できるんじゃないか?って思ってやってみた。
mount -o ro -f /dev/ad4s1g /home
これはうまくいった。あとで調べてみると、どうやら、unclean でも readonly は、ぶっ壊れているところ以外へのアクセスは大丈夫らしい。
それで結局、たまたま家にあった 2GB の USB メモリを newfs して、それを仮の mountpoint に mount して、そこに生きているデータを rsync して、/home に mount しなおして、とりあえずサーバは再稼働。rsync でエラーが何カ所か出たけど、そこは MovableType のテンプレートとかで、再インストールすればよかったので、助かった。
いくつか読めないセクタがあるので、このまま使い続ける訳にもいかないし、AOA150 を分解するのはすごく大変そうだったので、 Acer の Veriton N というマシンを購入してリプレイスした。今度のは Atom D525 で、さすがに前のより速いし、メモリも 4GB 積める。あと、ディスプレイはついてないけど、テレビに HDMI でつなげば済むってのもいいですね。

研究室メールサーバ再構築

研究室に学生が配属されて一年たって、卒論発表も終わったので、若干手遅れ感があるのだけれど、研究室のメール環境を再構築した。
自分が使うための Postfix + Courier-IMAP による環境はもう既にできあがっていたんだけど、Postfix の SMTP Auth の設定がまだだった (研究室の Postfix は受信専用で、自宅のメールサーバを経由して送信してた) りして、学生に使わせるのもなー、という感じだったのを一気にやっつけた感じ。OS はもちろん FreeBSD だ。
やりたかったこととしては、
– SMTP/IMAP ともに STARTTLS を使う
– 認証は両方とも LDAP で一元化したい
というアレ。Courier IMAP は courier-authdaemond を入れれば、ふつうに PAM 経由で LDAP が使える。
Postfix のほうは若干厄介だったのだけれど、これも、cyrus-sasl-saslauthd を入れて、PAM 経由で LDAP を使うのが正解みたい。なので、pam.d/smtp を書いてあげる必要もある。Postfix から sasl2 を使うための設定をするためにはまず、/usr/local/lib/sasl2/smtpd.conf に、
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
みたいに書いて、/usr/local/etc/postfix/main.cf では、
smtpd_sasl_path = smtpd
smtpd_sasl_type = cyrus
smtpd_tls_auth_only = yes
あたりがキモ。特に、最後のがあれば、暗号化されていない状態での認証は行われない。たとえばこんな感じ。暗号化されてないと、
% telnet localhost 587
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 hogehoge.my.domain ESMTP Postfix
EHLO localhost
250-hogehoge.my.domain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
% openssl s_client -connect localhost:587 -starttls smtp
CONNECTED(00000003)
(ざっくり省略)
EHLO localhost
250-hogehoge.my.domain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
250 AUTH PLAIN LOGIN が増えているのがわかる。
RoundCube もいれた。インストーラではログインできるのに、本番の環境ではログインできないのはなんでかなー、と思っていたら、config/main.inc.php に、
// Automatically add this domain to user names for login
// Only for IMAP servers that require full e-mail addresses for login
// Specify an array with ‘host’ => ‘domain’ values to support multiple hosts
// Supported replacement variables:
$rcmail_config[‘username_domain’] = ‘hogehoge.my.domain’;
的なことが書いてあった。うちの IMAP サーバはユーザ名だけでログインするので、これで勝手にドメイン名が付加されちゃったら、そりゃエラーになるわ、というわけで、
$rcmail_config[‘username_domain’] = ”;
として解決。

暮らしにアート in 伊計島

すっかり更新さぼってました。もう半年くらい…
ぼちぼちやっていこうと思います。
IMG_4260.jpg
伊計島の旧伊計小中学校でやってる、「暮らしにアート in 伊計島」と「滞在制作現代アート展 ジュネチック」を見にいってきました。
伊計小中学校は昨年3月に廃校になったのだけれど、とてもすてきなコンクリートの建物でした。
焼き物とか木工とかのいろいろの作家ものは、うちは二人とも好きなのでいろいろ見たりちょこちょこ買ったりしてましたが、非常にすてきな感じで、よかった。
2階でやってるアート展もよかった。滞在型で、一ヶ月作家さんたちがここで制作したのがそのまま展示されていて、これもすてきでした。石垣克子さん の、黒板+チョークの作品がすごかった・・・黒板にチョークであんなのが作れるのか、と思ったよ。
2/11 まで なので、沖縄の方は、ぜひ。

きょうのじてんしゃ

そんなわけで中央構造線サイクリング大会でした。
もう体力残りゼロな感じなのでとっとと寝ることにしますが、去年限りでなくなってしまった大会を見事に有志開催という形で復活させてくださった関係者のみなさま、本当にありがとうございました。去年まで走っていた人やそのご家族がスタッフとして携わってくださっていたり、こんなに愛されるサイクリング大会がほかにあるんだろうか、と思いました。また来年!といえることのすばらしさをしみじみ感じました。
IMG_2592.jpg
IMG_2598.JPG
IMG_2621.jpg
高遠手前では152号で直行じゃないというとんでもないサプライズが用意されていたり(でも景色すごくよかった!)最後まで楽しませていただきました。
高遠からは荷物が重くて、杖突峠で死ぬかと思った… ほんと、峠の登りであんなに何度も足つくなんて、何年ぶりかと。
ではおやすみなさい…
85.17km @ 20.4km/h (4h09m52s) odo 11772.3km

きょうのじてんしゃ

茅野から杖突峠こえて高遠から伊那市へおりて、ボトルがぶっ壊れたので自転車屋さん(ここは前に輪行袋落としたときに買ったところだ)に寄って、駒ヶ根から飯島まで。
杖突峠の展望台カフェではじめてお茶飲んだ。あそこはいいね。また明後日に行く気がする (笑)
IMG_2536
茅野を出たのが3時前だったので飯島に着いたら日没直前であったよ。
いつものカフェでお茶してきた。おばあちゃんが車いす生活になってた… でもちゃんとご飯も食べられてるし、しゃべれるし、よかったね。
あ、あと、田切にも寄ってきた。
IMG_2539
59.10km @ 23.1km/h (2h33m13s) odo 11635.6km

ANA140

早いもので、もはや独身最後のフライト。
23:10 那覇発の全日空最終羽田行き。
直前までラウンジで資料作ってたりして、なんだか出張に行くような感じだけど、カバンにはパソコンだけじゃなくて婚姻届も入っているし、久々にちゃんと撮影機材ももってきたし、やっぱり出張とはいろいろ違うわけで。
明朝、調布市役所で入籍して、土曜の朝に結婚式を挙げる予定です。
いつもの那覇空港に、こんどは二人で帰ってくるというのが、なんだか信じられない。

RECONF Jan.25, 2012

午前中は農工大セッションだな… 関根先生の学生さんがメイン。
[WEBアプリに用いるFPGA用IP:TCP/IP回路]
ICMP と、TCP の MSS とか window scaling とか timestamp を実装。
TCP stack はSPARTAN-3 で 4598 slices か。
CardBus の FPGA Card に載ってるとかかっこいい。
TCP再整理 (到着パケットの並べ替えってこと、だそうだ) をやっているのはうちだけ、とのこと。質問したらバッファはけっこう柔軟に制御している模様。なんかすげー
アプリケーションが FPGA 上の TCP スタックを使っているときに、CPU からも TCP スタックへアクセスすることができる仕組み。
TCP offload は普通 10G とかそういう速度がターゲットだけど、この研究の野望は何かありますか? → 高速性の追求より「大規模な論理回路でなにができるか」ということに興味を持っている、とのこと。
デモ動画を延々とみせながらしゃべる、というのが斬新でよいね。これはちゃんと練習している証拠。
[シフトレジスタを用いた音声合成回路における声道形状の決定]
波形レベルでの音声合成は不自然だったりいろいろ。
発声器官を論理回路で模擬したらもっとうまくいくはず。
声道形状をモデル化し、そのパラメータをレジスタに入れて・・・
シフトレジスタで進行波と後退波を動かす。この際にパルス密度で空気密度を表現することで1ビット幅で済ませている。進行波レジスタと後退波レジスタの途中にあちこち演算器が入っている仕組み。
X 線写真に基づいて作った。
演算は
– パルス分割=進行波と後退波を透過波と反射波に分割
– パルス合成=透過波と反射波の演算
– パルス反転=固定端だったり自由端だったり
いまのところあんまりいい結果になっていない。
– 高周波成分が多い
– 第2フォルマントの影響がない。母音が違うとスペクトルの谷があるのだが…
とのこと。周波数依存でエネルギーが減衰するような仕組みがないからだと考えている。FFT/IFFT でこの処理を追加したところだいぶ改善した。
FFT/IFFT の結果から共鳴とかそういう回路を追加していきたい。つまり、X 線写真だけじゃモデル化には不十分だったということだそうです。
使っているのは XC3S4000.
[子音・母音認識システムにおける音声前処理回路]
波形がフレーム内である基準値を何度通過したかをカウントする (ゼロクロス処理)。母音は定常波形、子音は非定常なので、これで判別できる模様。ピッチ周期は話者によって違うので、メリン変換 (Mellin Transform) というのをつかって正規化する。
このあたりをごりごりやってから Haar-wavelet やってテンプレートマッチング。
前処理を HW でやって、最後はソフトウェアで処理。
ゼロクロスとか、binary tree で合計の計算やるより FIR みたいに直列でやったほうがいいんじゃない? (Virtex のドキュメントとかに書いてあるよね) → 検討してないとのこと (ゲートたくさん使ってもいいや、と思ったので。あとレイテンシ命なので)
[同期シフトデータ転送による2次元アレイ型トラッキングハードウェア]
同期シフト伝送面白いな。
2次元アレイで他のモジュールのデータを参照するときに、全体で同期して同じ方向にデータを転送することで、配線や競合を削減することができる。直接伝送するのとちがって、途中で中継してもらわないといけないオーバーヘッドはある。
これで孤立点除去とかやるの。かっけー。
類似度判定とかは難しそうだなあ。その場合はヒストグラムをやりとりするのか。
ボトルネックになっているのは block module のなかの control processor とのこと。
[階層型画像特徴の学習機能を有する画像認識システム]
木構造型テンプレートを作ることによって顔画像を分類したり。
顔画像全領域でのテンプレートだと大変なので、特徴領域と非特徴領域を自動的に。
SOM か・・・
SOM は4層。それぞれ違う解像度で入れる。だんだん高解像度になる。
[Low area and high speed logarithmic converter for DSP applications]
No shown.
[分割MTMDDs for CFマシンについて]
MTMDDは多値決定グラフ的なもの。
遅くはなるけど節点数をがっつり節約できるので、分割しないやつでは表現できないものを表現できるようになる。
(ちょっと呼ばれて会場の外に出てました。ごめんなさい…)
多分岐命令と output 命令だけで動く。
MCNC89 benchmark で評価しているがもうちょっと実用的な方向にもっていきたい。合成ツールとか。
[優先度付きSMTプロセッサにおけるリアルタイム処理用IPC制御機構]
組み込みでも性能はほしいけど、SMT とか使うとリアルタイム性の保証がむずかしい。
– WCET 解析 (worst case execution time)
– IPC 制御 (instruction per clock を制御する)
Responsive multithreaded processor: 最大8スレッド、優先度つき
ソフトウェアで目標 IPC を設定して、制御周期ごとに調整する。
命令フェッチの制御だけだとリソース不足には対応できないから、中の優先度の制御もしないと。そこはハードウェアで。
優先度はひとつ上のレベルのものから借りることができる。
制御サイクルは 10k clock cycle 。
[ITRON仕様OSのマルチスレッドプロセッサ拡張]
[ 多電源可変パイプラインルータにおける電源ドメインサイズの解析 ]
DVFS は難しいよね。せいぜい隣接するルータを整数倍の周波数にするとか・・・(いや位相が・・・)
同じ周波数でパイプライン段数を変える。2 cycle mode と 3 cycle mode. でも、あんまりしょっちゅう変えるとかえって悪くなる。
NAS Parallel Benchmark.
性能は 2.1%悪化。電力は10%改善。面積は 14% だったかな?
ルータ単位ではなくて、入力チャネルごとに電源電圧をかえるとかをかんがえる。でもあんまり粒度こまかくすると大変じゃないかなー。
電圧下げたら wormhole から virtual cut through とかにする必要があるかもね、みたいなコメントも。
[インピーダンス・リコンフィギュレーションによる超高速信号の信号品質改善の提案]
10GHz だと波長は 1.5cm なので、LSI の中でもシグナルインテグリティでが問題になるぜ。
伝送路をいくつもの線幅の区間に分けて、うまく反射させてつたえる。SPICE にかけて GA で選択淘汰。
実機評価。1GHz でやるのは難しいので scale up 法。250MHz とか 500MHz で評価する。
10GS/sec の 2GHz オシロ。アクティブプローブ。
もう50Ω配線じゃだめなのか。
4GHz くらいまでいけそう。
コネクタではインダクタンスが入るので、そういうのも試してみる。いける。
クロック信号だけじゃなくて、インパルスを入れたときの応答をみることで、ランダム信号でもちゃんと eye が開く。
表皮効果で高周波成分が抜けて波形が丸くなるのを防ぐにはふつう pre-emphasis とか equalizer が必要。STL は反射波を重ね合わせてやるのでなかなかむずかしいが、反射端をつけたしてやることでかなりきれいな波形に。
すげえ・・・
SIP とかの短い伝送路でも使えますか? (山崎先生) → 実験用の基板はスケールアップ実験のために長くなっているので、基本的には短くてもいけるはず。波長の問題もあるけど、ミリ単位でも使えそうな結果が出ている。
動作周波数がアプリケーションで変わるような場合はどうですか? (関根先生) → トランジスタをつけて、キャパシタを on/off することでできる、ということはシミュレーションで試している。
一本の線を設計するのに数時間かかるのが問題だけど、まあ、だいじょうぶか。GA で2000世代くらい。
[トラフィック解析によるオンチップルータのバンド幅制御]
組み込みとかではヘテロ NoC も出てくるよね→通信量の偏りも起きるよね。
FPGA の long line みたいなのを入れるとかいう研究もある。
で、通信量が多いところはビット幅を増やすことにした。
異なるビット幅でも通信できたり VC のあたりをちょっといじったりしてルータを作ったよ。
太いところから細いところにいくのは気をつけないとデータ壊す。
Virtual cut through なのはなぜ? → wormhole だとビット幅がかわるところで詰まっちゃう可能性が高いっす。
static な解析ができるのなら VC の数を変えてどうこう、というの、できるんじゃないかと思いますので頑張ってください的なコメント。
[リコンフィギャラブルプロセッサSTPを用いた省電力ネットワークトポロジの高速近似解法]
トラフィックの集約によりルータを落とせるようにする。問題はネットワーク性能を維持しつつ最小の消費電力になるようなトポロジを見つける方法。
80ノード200リンクで20sec が目標だけど、いまのところ2分くらいかかってる。
STP (というか DRP) なつかしい・・・
トポロジは BRITE でつくった (waxman model).
ノード数が小さいと Intel のほうが早いけど、あんまり大きいとコンテキスト数がたりない。
VLANはりかえるのも大変だから20secあればあんまり早すぎてもしかたがなく、まあ充分、ということなのか。
[マルチメディア処理に向けたリコンフィギュラブルプロセッサの実現と評価]
reconfigurable processor で浮動小数点演算をやりたい。いいね。
16×16 のALU アレイが載っている。
正規化と丸めは、ちょっと大変だけど ALU アレイでやっつけることにした。
ALU ができる演算の種類を増やしたり、スイッチのところをちょっといじって、ビット分割 (sign, exponent, fraction) をやりやすくしてある。これにより、1ブロックあたりのconfiguration bitは43から73に増加。
で、こんどは書き込みが大変なので、複数同時書き込みしたりとか。なかなかいいですね。
FLOPS どんくらいになりそうですかね? (はまださん) → まだあんまりはっきりしていません。
可変論理部にはレジスタとかFFは? (わたなべさん@岡山) → ありますあります
[動的再構成可能なSU(3)スピン回路を用いたロボット制御中枢の設計]
ソフトウェアだけでなくセンサやアクチュエータを制御するハードウェアも更新しないと。
SU(3) というのは群論がベースだそうな。閉じたベクトル空間での回転を表す群として、リー群というのがある。状態機械も閉じた状態空間のなかで状態遷移するから似てる…と。
それでこれを使って状態遷移図が成長するようなのをやりましょうと。
なんかすげえな。
[移動型ロボットに統合する知能処理回路]
全体のいろいろ。音声合成とか顔認識はここにつながってたのか!