!!!2004年02月の駄文 !2004年2月25日……給料日だからじゃないけど 嫁さんと夕食に川崎Dice 6Fの「回転飲茶 天天常常回転坊」に行ってきました。 平たく言うと「飲茶とか中華料理の小皿が回転寿司みたいにぐるぐる回ってる」って事ですが、ちょっとアイデア倒れな気が……。 寿司は冷たくてもいいかもしれないけど、油っこい中華料理は冷めてるとおいしくないです(--; それに、「温めたいお皿がありましたらお申し付けください」って書いてあって、「回っていない料理のご注文は注文用紙に書いて係りまで」ってあった。 で、回ってるけど既に冷めてそうなので新たに紙に書いて注文したらその回ってて冷めてるヤツを係りのお姉さんが取って出してくれました(T_T) それじゃあ意味無いって……。 厨房は皆中国人で中国語が飛び交ってるし、内容わからないけど何か言い争いしているみたいに聞こえてちょっと居心地悪かったです。 フロアーで日本人の店員は「フロアー長」のおじさんだけだったっす。 肝心の味はそんなに悪くはないと思うけど、ナニブン冷めているので評価できないです。 嫁さんは「今度はもう少し混んでいる時に来よう」って言ってたけど、混んでいたら混んでいたで店がまわらなそうな予感。 店が混んでいて必死になって頑張るのは日本人ぐらいだし。あ、中華街で混んでいる時に店に行くと場合によるとウエイターのお姉さんに逆切れされます。 何かこっちが来店してはいけなかったかのような印象を受けたことがあるです。 なんかなあ……。 まあ、あんまり悪い評価ばっかり書いて敵を増やしても面白くないのでこの辺で。 (ああ、やっぱり「中国人嫌い」のレッテルを貼られそうな今日この頃。) ---- !2004年2月22日……法事&ゲームボーイアドバンスSP 嫁さんのおばあさんの23回忌に行ってくる。住職がすんごいドモリで前につんのめりそうになるのをこらえる。 後ろに回ってネジを巻きたくなる。 帰りに明日の作業で使う工具を買って、衝動買いでゲームボーイアドバンスSPを買う。 ソフトはファミコン復刻版のスーパーマリオブラザーズとボンバーマン。久しぶりにやると信じられないほどヘタクソになっている。 しばらく遊べそうだ。 しかしあの小さな筐体にファミコンと同等の機能が入っちゃってるのね。 技術の進歩はすごい。 ファミコン復刻版ソフトのパッケージは当時のものを復刻してあって凄く懐かしかった。 あ、ちなみに2月17日のニュースはウソなのであしからず。 でもこれで花粉症が良くなった人が……いるわけないか。 ---- !2004年2月17日……花粉症は心の病! ニュースサイトの定期巡回をしていたら面白い記事が。 アメリカの有名科学雑誌「ネイチャー」の日本語訳(Web自動翻訳使用(笑))によると……、 ---引用--- イギリス遺伝子生理学者のロバート・バーンズ博士の2月13日発表の論文によると、 昨今先進諸国で流行し社会的な問題となっている諸花粉による花粉症は、 実は心理的な「幻想病」の疑いが強いとの事だ。 博士は花粉に対して粘膜が過敏に反応する体質を持つ遺伝子(第2039RY遺伝子)と それを発現させる遺伝子(第44298AA遺伝子:通称ワーソン氏遺伝子)が遺伝される確率を研究。 理論的には人種、地域によって多少の格差はあるものの、概ね約32%前後の発症となると結論付けた。 これは遺伝学的にも既に解明されている事実である。 しかし最新の政府統計によるとイギリスでの花粉症の患者は全人口の46%。 成人男女に限定するとなんと62%が花粉症の症状を訴えている。 これは明らかに理論値からの誤差の域を超えた発症率である。 さらに調査を進めると、WHO(世界保健機構)による先進14カ国の花粉症発症率がいずれも50%を上回るが、 逆に他の国連加盟国は全体を合わせても発症率は25%にも達しない。 博士は最初 「地域の植生が、産業革命後の人工的な植林の生態系での樹種が花粉症を発症しやすくする原因なのでは」 と推測したが、人口的な植樹林の世界的分布(=針葉樹林帯)や排ガス環境汚染の深刻な地域と これら発症多発地帯との関連は統計的にも矛盾することが多く、 決定的な原因とはなり得ないとの結論に達した。 博士はイギリスのポーリタン地方のローカルラジオ局、ケーブルテレビ局の協力を得、 2003年の春に以下のような実験を4度行なった。 (1)まず、天気予報で1週間の間「ポーリタン地方の花粉症発症率は90%に達している」 と繰り返し偽情報を流す。 (2)その後、「発症率90%は間違いで、逆に発症率は15%にも満たない」と さらに1週間偽情報を流した。 実験の期間中、イギリス保健局(GBS)の同地方の「花粉症による受診率統計」は以下のようになった。 (すんません、グラフが貼れない日記なので、ネイチャーの原文のグラフを参照してください。 ……なんか混み合ってうまく見れないこともあるのですが……。) 〜〜中略〜〜 「このグラフの中で最も特筆するべき点は、16〜30歳までの年齢層と、 15歳以下及び61歳以上の年齢層で傾向がはっきりと分かれるということで、 これは先のテレビ・ラジオの年齢別の視聴者率と顕著に相関を見せている。 特に21〜30歳の年齢層で期間(1)の発病者数が21%→88%と劇的な増加率を見せていることからも明らかだ。 そして期間(2)に移った後に期間(1)程顕著ではないものの、患者数が急激に減少しているということだ。 これは花粉症に対する特効薬がない現状では医学的に説明できない異常な現象で あると言わざるを得ない。」 「現代社会では「病気」ですら社会学的で言うところの「地位(ヒエラルヒー)」の 一部を形成しており、人は知らず知らずのうちに「流行」として体が抵抗する以上に 受け入れてしまっている。」 「期間(1)の花粉症多発の情報を訂正した後も数字が以前の水準に戻らないことや、 メディアに関心の薄い年代が「流行」の後を追って次なる波を形成している。」 〜〜略〜〜 つまり博士は、メディアで花粉症の情報を繰り返し流すことによって本来花粉症遺伝子 を持たないであろう人間まで高確率で発病しているということを主張を展開しており、 学会に大きな衝撃を与えている。 特に今まで花粉症遺伝説・花粉症環境説を唱えてきた研究関係者にはかなりの動揺の 色が見受けられる。 国連公認NGO「環境と健康の医師団(WWDT)」の主任研究員で同時に 「花粉症環境汚染原因説」で昨年学会に旋風を巻き起こしたドイツのダンク・ハフマン博士は 以下のようにコメントしている。 「私も花粉症の論理的な発症率と現実の発症率の矛盾に関して大きな疑問が残ったままであったが、 今回のバーンズ博士の論文は他の流行性疾患の統計学的矛盾の解明に繋がる可能性も高い。 非常に興味深い。」 バーンズ博士は今後さらにこの理論の裏づけとデータの収集のために今回とは逆の パターンの実験を計画しているらしいとの事。 しかしイギリス人権団体や生活向上団体からは「メディアを利用した人体実験だ」 との批判もあがっており、今後議論を呼ぶことは間違いない。 いずれにせよ、ひょっとしたらあなたのその「花粉症」は実はあなた自身が流行に 合わせて自ら纏った「ファッション」なのかもしれない。 ---引用ここまで--- おお、さすがイギリス、さらっと人体実験をしてしまうあたりぶっ飛んだ人が多い。 しかし私も常々「花粉が空気の中を飛んでいる」なんていう実感が得られず、花粉症なんてあるんだろうか?なんて思っていたりするのでバーンズ博士を熱烈に支持してみたくなってしまう。 あなたのその花粉症、実は「一般大衆への迎合」だったりしませんか?(笑) ---- !2004年2月15日……rsyncリベンジ 昨日、一昨日とうまく行かなかったrsyncによるサーバー間バックアップについて。 と、いうか、結局sshがうまく行っていないだけだったのかも……。 参照:sshでパスワードなしにログインするには ちなみに、nsのファイルをhakoにバックアップ(というか、ミラーリング)することにする。 ジョブを開始するキッカーはns側とする。 1)バックアップする側(hako)で ・/etc/sshd_configをいじってrootでのloginを許可する。(これがないと始まらない……。危ない気もするけど。) ・ssh-keygenをroot権限で実行し、/root/.ssh/以下に秘密鍵と公開鍵を作成。 ・公開鍵(id_rsa.pub)をこのホストの/root/.ssh/authorized_keyに追加。 ←ちょっと重要 ・秘密鍵(id_rsa)をフロッピーなどにコピー(横着な私はPuTTY上でcatしてクリップボードにコピー(殴)) 2)バックアップされる側(ns)で ・コピーしておいたhakoのrootの秘密鍵(id_rsa)をnsの/root/.ssh/id_rsa_hako_rootにコピー(私のようにズボラした人は、eeでエディター開いて右クリックでペースト(殴)) ・id_rsa_hako_rootをchmod 600。 ・root権限でeval `ssh-agent`を実行。(あ、「`」は[Shift+7]の「’」じゃなくて、[Shift+@]の「`」です。書いてあるのに引っかかった。) ・続いてssh-add /root/.ssh/id_rsa_hako_rootを実行。ssh-keygenしたときのパスフレーズを入力。「キーは追加されました」みたいな意味のメッセージが出れば成功。 で、いよいよrsyncの実行。 rsync自体は両方のマシンともportsからインストール。問題ナッシング。 3)rsync実行!! ・ns側で/usr/local/bin/rsync -auvvzRH --delete --rsh="ssh" バックアップ元ディレクトリ バックアップ先ディレクトリ を実行。 (例えば、/usr/local/bin/rsync -auvvzRH --delete --rsh="ssh -p 23" /etc/namedb hako:/backup バックアップ元の「ns:」は省略している。ローカルだから。) あ、"ssh 〜"の後に付けるのは普通にsshコマンドのオプションです。 画面が汚れるのが嫌いな人は「-auvvzRH」の「v」を減らすといいかも。 ssh-agentとssh-addしてあったおかげでパスワードレスでrsyncが動きます。 ちなみに、この動きだとrsyncdの意味無いと思うのですが……。「/usr/local/etc/rc.d/rsyncd.sh」を抜いておいても大丈夫かも。 っていうか、セキュリティーの法則に則れば抜いておいたほうが良い。 rsyncは2回目以降は差分コピーされるのでcrontabに仕込んでおいて毎日実行されるようにしておきました。 これでめでたくns→hakoのサーバ間バックアップができました。 ああ、サーバ工事の前のバックアップが楽になった。 ---- !2004年2月14日……このサーバをどうしてくれようか? 今このWebのメインサーバにしているwww.himajin2001.comだが、FreeBSD 4.9 stableで動いている。 以前からも4.x内でバージョンアップしながら使っていたが、「そろそろ5.xかなぁ〜」なんて気分でUpdateしてみようかと思っているのだが、職業病チックな宗教的な理由によりどうしても止めたくないんだ!!!!!!! 最近ちょっと病的になりつつあるが、Diskコケ2回をくらってもまだオペミス以外でサービス停止にしたことがないのがなんとなく誇りだったりするので、「himajin2001.com無停止伝説」を維持する為何とかしたいなという妄想は尽きない。 案1:休止中の代理サーバを立てる 個人的な実験用にもう1台公開しているサーバがあるので、そちらにコンテンツを全てコピーし、メールのスプーリングも全てそっちに振り向けてメインサーバをその間に作り直す。 その間にメインサーバを一から5.2でクリーンインストールする。 これならメインサーバの構築にある程度時間をかけられる。 でも、メインサーバ以上に予備サーバはハードウェア的に心もとない。 なんせ、ほとんどのパーツがもらい物なので……。(自腹切ったのはFDDドライブとケーブルだけ。約2000円。) これはかなり有効かなぁと思いつつ、今まで2年以上試行錯誤しながら改変を続けた各種設定をもう一度やり直すのって何か大変そう……。っていうか、覚えていないという可能性が高い。 案2:無理矢理バージョンアップ make world使って4.9→5.2にアップグレード。 で、そのままだとファイルシステムがufs1のままなので、追加したディスクに全てのファイルシステムをバックアップして、newfsしなおす。 でもこれってmake world失敗すると悲惨だし、ダウンタイムが長そうなんだよなあ。 そんなこんなでかなり悩み中。 このページが見れなくなったら「あ、死んでるな」と思ってしばらくしてからまた来て見て下さい。 ---- !2004年2月12日……思い込み発覚&vinumによるrootファイルシステムのミラー化 今まで「USB2.0対応だ」と思って使っていたUSBハブが実はUSB1.1までしか対応していなかった。 がーん。 「高速対応」とかパッケージにデカデカと書いてあったから買ったんだと思っていたんだけど、実はUSB1.1対応の事だったのね……。 今度USB2.0対応版を買ってくるっす。しょぼーん。 ---- そんなアホ話は置いて置いて……。 自分の備忘帳代わりに、この前成功したVMWare上でのFreeBSD5.2のrootファイルシステムvinum化について。 手順は実は簡単。 万一ぶっ壊したときのリスクが大きい事を我慢すればインストール後いつでもvinum化できるのもうれしい。 '''手順1:FreeBSD5.2のInstall''' 普通にインストールして宜しい。 っていっても一つだけ注意点があって、 '''起動ディスクの先頭にはファイルシステムのデータがないようにする。(わざと先頭を未割り当て領域にするか、swap領域にしておく。)''' ということです。 具体的には、vinumで265シリンダー(ブロック)のvinum用制御データ領域がvinumパーティーションの先頭に勝手に確保されます。ここにファイルシステムのデータがあるとファイルシステムかvinumのデータのどちらかが破壊されます。 (私の場合はshutdown時にumountされることからvinumが破壊されました。) 具体的には、 今回、元のディスク領域(ホストOS)があんまり空きがなかったので、Disk1と2にそれぞれ約1.2GBの領域を確保しました。 仮想マシン上ではDisk1をIDEのバス0のプライマリに、Disk2をIDEバス1のプライマリにしました。 インストール直後のディスクの状態は、、 aaaa# disklabel ad0s1 # /dev/ad0s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 2099121 417792 4.2BSD 2048 16384 28552 b: 417776 16 swap c: 2516913 0 unused 0 0 # "raw" part, don't edit aaaa# aaaa# aaaa# mount /dev/ad0s1a on / (ufs, local, soft-updates) devfs on /dev (devfs, local) aaaa# って感じです。無理矢理図示するとこうなります。 +------------------+ 0 (シリンダ) | (16シリンダ) | MBR(?) +------------------+ 16 | b: swap領域 | | (417776シリンダ) | +------------------+ 417792 | a: root領域 | | (2099121シリンダ)| 2516913 +------------------+ ここのミソはswapの領域の開始位置が16シリンダ(ブロック)後ろにずらされている事です。 SCSIディスクだと「ブートローダー(MBR)が入る為」とか言われるのですが、IDEディスクだとディスクそのものに63シリンダの領域が確保される為本当はいらないのかもしれません。 でもこの16シリンダを確保しないでやった結果は未検証なので、16シリンダもケチりたい人はどうぞチャレンジしてみてください。でも8KBです。 あ、あと、人によっては(というかvinumなんざ使おうとする人々は)ファイルシステムをroot一発!なんて真似はしないでしょうから、d:、e:、f:、g:、h:…と細かくディスク分割するかもしれませんが、その場合は適宜読み替えてください。 しかし関係するのはディスクの先頭のスライスだけです。 この後のステップでも出てきますが、この例だとb:スライスの先頭265シリンダはvinumの領域として使われてしまいます。 swapのサイズをギリギリで見積もっている人などは、FreeBSDのインストール段階で+265シリンダしておいたほうが幸せかも。 (そもそも、普通にFreeBSDをsysinstallからインストールすると先頭に16シリンダのオフセット作ってくれません。その場合は先頭スライスをさらに+16シリンダしておき、次のステップで修正してください。) '''手順2:FreeBSD上の準備''' この段階では2つめのディスク(Disk2)はまだ手付かずですが、これを後々の作業のためのバックアップに使いましょう。 「同じようにスライスを切る」「MBRをコピーする」ということも兼ねています。 */boot/loader.confの書き換え 起動直後にvinumが読み込まれるようにブートパラメータをセットします。 /boot/loader.confに以下の2行を追加します。 vinum_load="YES" vinum.autostart="YES" これだけでは害がないので安心してください。 Genericカーネルでも大丈夫です。 */boot/loader.confの書き換え 私も何度かハマったのですが、この時点で「ディスクの先頭に対するディスクアクセスを予防しておく必要」があります。 具体的にはfstabのswapの項目を#でコメントアウトしておきます。 大丈夫、このあとしばらくはswap使うような大々的にメモリー食うことはしませんから。 どうしても気になる人はmdconfigでルートファイルシステム内にでも仮想ディスク作ってrc.confに「swapfile=/xxxx/xxx」でも書いておきましょう。 これをしないとvinum領域を作った後にswapが発生しただけでvinum設定情報をぶっ壊して原因不明のvinum設定消失に悩むことになります。 (私はこれに3回ぐらいハマりました。) *Disk1を丸々Disk2へコピーします。 先程のdisklabelの結果を元に、ddを使ってDisk1をそっくりそのままDisk2へコピーします。 実機で2つのDiskの容量が異なる場合は考えて工夫してください。 まず、リブートして、bootloaderでコマンドプロンプトに落として「boot -s」でシングルユーザモードにします。 #mount -ro / →ルートファイルシステムをRead onlyでマウントする。(多分もうマウントされてるけど) #dd if=/dev/ad0 of=/dev/ad2 bs=512 count=2516913 →ディスク丸コピー発動!!(各自で工夫してください) '''手順3:disklabel書き換え''' とっても重要です。 よ〜〜〜〜〜く理解してからやりましょう!!!!でないと何度もddやsysinstallのお世話になります。 このステップの目的は2つ。 *vinumのパーティーションを作る *vinum用の265シリンダを確保する。 この2つです。 まず「vinumのパーティーションを作る」ですが、これは単純にここでいうc:スライスの先頭16シリンダを抜いたものです。 既存のスライスの他に新たにシリンダを作り、fstypeを「vinum」とします。 これはvinumにvinumが使って良いスライスを認識させるのに必要です。 この例では「h:」を使いました。 既存のa:、b:、c:とh:は実際の領域は重なりますが、大丈夫です。 (逆に言うと、この重なりを利用しています。) 次に、vinum用の265シリンダを確保します。 実は、vinumのディスク領域の先頭から266シリンダ目以降は普通の4.2BSDスライスと構造が全く同じです。 逆を言えば普通の4.2BSDスライスを後ろに265シリンダずらせれば4.2BSD領域の中身(=ファイルシステム)がそのままvinumで流用可能です。 しかし、領域全体を265シリンダ後ろにずらすのは大変なので、代わりにvinum領域を265シリンダ前に取り、その265シリンダをユーザが使える領域から諦めます。 私もこれを理解するのにかなり悩みました。 FreeBSDハンドブックの英語版にも書いてあり、かつ私の参考にしたFreeBSD覚え書きでも書いてあったのですが、同じ事を指している事すらわかりませんでした。(それぞれ違う方法かと思った^^A;) 先程のように無理矢理図解するとこうなります。 [変更前] [変更後] +------------------+ 0 (シリンダ) +------------------+ | (16シリンダ) | MBR(?) | (16シリンダ) | +------------------+ 16 +------------------+ 16 ---+ | | |vinum用265シリンダ| | | | +------------------+ 281 | | b: swap領域 | | b: swap領域 | | h: vinumスライス | (417776シリンダ) | | (417511シリンダ) | | (2516897シリンダ) +------------------+ 417792 +------------------+ 417792 | | a: root領域 | | a: root領域 | | | (2099121シリンダ)| 2516913 | (2099121シリンダ)| 2516913 | +------------------+ +------------------+ ---+ ここで、「あれ?swap領域は別のスライスにしなくていいの?」という人、半分正解。 vinumではswap領域をサポートしていないので本来はvinum領域の外にswap領域を取らないとならないのだが、それをやると実はハマる。 なぜならswapといえどもvinumの中にないとvinumによる冗長化の恩恵を受けられない。 つまり、せっかくディスクの物理故障に対してファイルシステムを冗長化したのにswap領域のディスクがアクセスできないばっかりにシステムはpanic downする。(意味無いじゃん。) と、でもvinumでサポートされたいないswap領域をどうするのか? 後でswap領域をファイルシステム内にmdconfigで作ってやり、swaponしてあげればいいのだ。 で、結局、上記の図で赤字になっている部分を変更する。 ""(※注:wikiに移動した際に色情報が抜けました。赤色に成っている部分は上手の「vinum用265シリンダ」「261」「h: vinumスライス」の部分です。) 変更した後のdisklabelの出力結果を下に表示します。 aaaa# disklabel ad0s1 # /dev/ad2s1: 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 2099121 417792 4.2BSD 0 0 0 b: 417511 281 swap c: 2516913 0 unused 0 0 # "raw" part, don't edit h: 2516897 16 vinum aaaa# '''手順4:fstab書き換え''' シングルユーザモードのまま、fstabを書き換えます。 #mount -rw / →/etcを含む/を書き込み許可でマウント #ee /etc/fstab →別にviでも何でもいいけど、eeってシングルユーザモードでも文句言わないから結構好き。 で、例えば以下のようにしてあげます。 aaaa# cat fstab # Device Mountpoint FStype Options Dump Pass# #/dev/ad0s1b none swap sw 0 0 #/dev/vinum/v_swap none swap sw 0 0 #/dev/ad0s1a / ufs rw 1 1 /dev/vinum/v_root / ufs rw 1 1 /dev/vinum/v_swap /swap ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 aaaa# あ、vinum上のvolume名はこの後で設定するものにあわせてください。 「決めてないよー!」という人は、最悪/dev/ad0s1aのコメントアウトだけでもOK。 (その代わり起動したときに「ルートファイルシステムはど〜こ?」と聞かれるだけです。) '''手順5:vinum設定''' #vinum からvinumのユーザインタラクティブモードに入ります。 vinumの操作に慣れている人、及びきっちり仕事をしたい人は設定をファイルに書いて、 #vinum create ファイル名 で読み込ませましょう。 (私は手探りで手入力しました。(殴)) あ、vinumのインタラクティブモードのcreateコマンドは/tmpが書き込み許可でないと失敗します。 念のため。 で、私はこんな風にしました。 (詳しいvinumの操作は他のサイトを参照してください。) # 物理ドライブ drive d0 device /dev/ad0s1h →先程作成したh:を指定 # 旧b:スライス volume v_swap plex name v_swap.p0 org concat vol v_swap sd name v_swap.p0.s0 drive d0 plex v_swap.p0 len 417511s driveoffset 265s # 旧a:スライス volume v_root plex name v_root.p0 org concat vol v_root sd name v_root.p0.s0 drive d0 plex v_root.p0 len 2099121s driveoffset 417776s 結局先程の続きですが、先頭のb:を縮小して使う為(=ひいてはその後ろのa:をそのまま使う為)に先頭のv_swap.p0.s0をdriveoffset 265s(d0の先頭から265シリンダ後ろから)指定して作成します。 で、その後ろから旧a:のv_rootを作り始めます。 ヘタクソで恐縮ですが、先程の図を参照して、よーく考えてdriveoffsetとlenを決めてください。 driveoffsetは文字通りad0s1先頭からのオフセットですので、h:の最初からのオフセットではないので混乱しないように。 v_swapのlen + driveoffset - 1が旧b:のsizeになればとりあえず正解です。 尚、vinumでそのまま指定をすると全ての単位はbyteになってしまいますので、シリンダー単位を示す「s」を忘れないように。 このステップでvinumの設定を少しでも間違えたと思ったらvinum stopを実行し、先程丸コピーしたad2から逆に丸コピーしてもう一度やり直しましょう。 vinumの中で、 list とコマンドを打ってやり、 1 drives: D d0 State: up /dev/ad0s1h A: 0/1228 MB (0%) 2 volumes: V v_swap State: up Plexes: 1 Size: 203 MB V v_root State: up Plexes: 1 Size: 1024 MB 2 plexes: P v_swap.p0 C State: up Subdisks: 1 Size: 203 MB P v_root.p0 C State: up Subdisks: 1 Size: 1024 MB 2 subdisks: S v_swap.p0.s0 State: up D: d0 Size: 203 MB S v_root.p0.s0 State: up D: d0 Size: 1024 MB でvolumeが「State: up」であればOKです。 「faultly」とかなっている場合はcreateでどこか書き間違えた可能性があります。 vinumの設定が何事もなく通ったらファイルシステムの整合性をチェックしてみましょう。 vinumを抜けてから。 # sync; sync; sync; # mount -r / → /をunmountする # fsck -n /dev/vinum/v_root     : で、多分多少文句を言ってくるでしょうが、「filesystem type unknown」とか言われてfsckが少しも進まずにfailしなければまず大丈夫でしょう。 失敗の場合はad2から丸ごとad0に書き戻してやり直し。 '''手順6:リブート!!''' どきどき。 うまく行っていればここで初めてvinumからrootファイルシステムを読んで来て立ち上がってきてくれるはずです。 見分けるには、立ち上がってきた後にdmesgの最後のほうに、 Mounting root from ufs:/dev/vinum/v_root とあるはずです。 *rootファイルシステムの場所を尋ねてくる場合 fstabの指定が間違っているか、loader.confの2行追加を間違えているか、v_rootのvinum設定が間違っているかです。 *bootloaderの時点で止まってしまう場合 ad0のMBRをぶっ壊しています。(正確には/bootがどこにあるのか理解していない状態です。a:が保全されていない場合に起こります) bootloaderのコマンドプロンプトでad2を指定し、シングルユーザモードからad2をad0へ丸ごと書き戻してもう一回先程の手順を繰り返してみてください。 念のため、fsck -n /dev/vinum/v_rootとかしてファイルシステムが壊れていないことを確認しましょう。 '''手順7:swap領域の作成''' 誠手抜きな方法のようにも思えますが、私は以下のようにしました。 v_swapをnewfsする # newfs /dev/vinum/v_swap v_swapのマウントポイントを作る # mkdir /swap /swapにvnodeの為のファイルを作る dfで/swapの空きブロック数を調べて、dd if=/dev/zero of=/swap/swap.vndし、 /etc/rc.confに「swapfile="/swap/swap.vnd"」を追加。 あと、fstabに/swapをマウントする為の行を追加。 リブート こうすればfstabから直接マウントされるswapはないですが、addtional swapfileとしてvinumで保護された仮想ディスクファイルが設定されます。 mdconfigとかswaponとかはrc.d起動スクリプトが勝手にやってくれます。 '''手順8:ミラーの作成''' 今のままではvinumは保護されていない状態で動いていますので、このディスクにペアとなるディスクを追加してやります。 これはマルチユーザーモードで動いている状態でもできます。 まずad2にad0と同じようにdisklabelを切ってあげます。 先のステップの解説を参照するか、手抜きをしたいのであればdisklabel ad0s1の結果をコピっておいて、disklabel -e ad2s1に貼り付けるという技もありです。 次にvinumのインタラクティブモードかもしくは設定ファイルを書き、それぞれのvinum volumeにplexとsubdiskを追加してやります。 drive d1 device /dev/ad2s1h plex name v_swap.p1 org concat vol v_swap plex name v_root.p1 org concat vol v_root sd name v_swap.p1.s0 drive d1 plex v_swap.p1 len 417511s driveoffset 265s plexoffset 0s sd name v_root.p1.s0 drive d1 plex v_root.p1 len 2099121s driveoffset 417776s plexoffset 0s 基本的に先にvinumを設定した内容と同じですね。 気をつけるのはplexの名前ぐらいでしょう。 これらの設定が通った後は追加されたplexはdown状態で帰ってきますので、 # vinum start v_root.p1 とか打って起こしてあげましょう。 カリカリとディスクが動き出して先に作ってあったv_rootやv_swapと同期をはじめます。 同期の進行具合はvinum listにパーセント表示されます。 完全に終わったら、vinum printconfigの内容などをどこかに取っておくといいでしょう。 これで完了です。 ヤレヤレ。 --- !2004年2月10日……FreeBSD上でのvinumを使ってのルートパーティーションのミラー化 やっと成功しました。VMWare上で。 実機なら確実に10回以上壊していましたな。 参考にしたのは、FreeBSD覚え書き と、FreeBSDハンドブック(英語版) 理解するのに異常に時間がかかった。 それと、vinumは設定を間違えると結構簡単にぶっ壊れるので dump | restoreのお世話になりまくり。 (しかもVMWareだから.vmdファイルのコピーしまくり。) 確かによく読めば理解できる。うーむ。 ああ、確かにいきなり実機でやらなくてよかった。(冷汗 まとめは自分の中の整理を含めて後日UPします。 --- !2004年2月5日……あほかい CNNこぼれ話より http://www.cnn.co.jp/fringe/CNN200402020006.html オタクもここまでくると単なるアホですな。 思春期のわが子に刺し殺されないことを祈るばかりだ。 次男が生まれたらV3.0か?それともV2.1か? ---- !2004年2月4日……病み上がり40% はっきり言ってまだ体調は最悪です。死なないだけマシかも。 それにも懲りずにいつもの通り週間(習慣?)少年マガジンを買って満員電車で読みながら会社に行く。 多少仕事は溜まっていたが問題ないレベル。 空き時間を利用してFreeBSDでの「ルートパーティーションvinum化」のドキュメントを漁る。 日本語でも成功している人がちらほらいるので、VMWare上でうまく行ったら実機でも試してみよう。 でも「options CPU_DISABLE_CMPXCHG」問題のおかげで動作がムチャクチャのろい。 kernelをコンパイルしなおすのにいったいどれだけ時間がかかるのか非常に謎だ。 とりあえず[サスペンド]→[レジューム]作戦でなんとか乗り切る予定。 肝心のroot vinum化なんだけど、FreeBSDハンドブック(英語版)と日本人のblogの方法が何か違うような気がするのは私の気のせい?? 日本人のほうはvinumがスライスの先頭に281ブロック占有するって決め打ちしてdisklabel直接書き換えているんだけど、Handbookはそんなことしていないんだよね。 うーむ。ちゃんと和訳するか。 そんなこんなでFreeBSD Handbookの英語版と日本語版を見比べたが、日本語版はかなり遅れてる。 やっぱり翻訳作業者が足りないんだろうなあ。 ---- !2004年2月2日……超かぜっぴき? こーゆーこというと会社では「鳥インフルエンザ?」とか言われてしまう。 まあ、鳥は鳥でもアホウドリだったりして。 8時間以上もマシンルームの空っ風にさらされた挙句始発前の寒空の下に1時間あまり放置されました。 タクシー会社のばかぁ〜〜〜〜〜〜。 鼻が止まらないので手抜き風味です。 〜〜〜面白かったサイト〜〜〜 チロルチョコ公式(?)ページ http://www.tirol-choco.com/ 個人的に、CMが気になる。画像じゃなくて動画にしてくれないかなあ。