日々

link permalink

作業していたら、すごいだるくなってきたので寝た。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

たぶん風邪ひいたのだと思いますが、起き上がると非常にだるいので、一日中寝ていました。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

たぶん風邪直りました。まだ若干ですが喉が痛いです。

4/29 に書いたバックアップをやろうと思って、研究室から USB 接続のポータブル HDD を拝借して動作確認をしました。ところが全く動きません。さらに HDD からカチッカチッと音がしています。
壊したか?…と思ったら実は電力不足でした。2.5 インチ HDD(ポータブル HDD の中身ね)を駆動するには USB のバスパワーではギリギリらしく、この手の製品は「環境によって動かない」ことが多々あります。我が家のマシンのようにバスパワーの出力が足りないと、アクセスランプだけ点くとか半端な動作をしてしまうわけですね。

ちなみにお気づきの方も居られるでしょうが、バックアップ用途にポータブル HDD は使いません。通常は 3.5 インチ HDD(電源を別に取るタイプ)を使います。「バスパワー関係無いじゃん?」という指摘はごもっともです。

田口邸の飲み会に行きました。じょーや徳若氏と久しぶりに会った気がします。いつのまにか徳若氏は S15 シルビアに乗り換えていました。徳若氏は燃費が悪くなったよってぼやいてましたが、そりゃヴィヴィオビストロ(軽自動車)と比べたらどんな車でも駄目だろう。じょーは警察学校が楽しそうでもあり、しんどそうな感じでもありました。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

USB 接続の外付け HDD を買ってきました。IO-DATA 製です。ちなみにソフトウェア RAID に挑戦してみたいので、しばらく使ってみて問題なさそうならもう一台購入する予定です。
早速分解してみると、中身は HGST(日立 IBM)の Deskstar でした。最近は Seagate が好きですが、別にどの会社が駄目って事はありません。あ、でもサムスンの HDD だったらちょっと入れ替えを検討したくなるかも…。
ちなみにこのドライブは HDD 以外はきっと同じ部品の使いまわしで、HDD だけ簡単に入れ替えられるのではないかと予想しております。

hdparm -t で測ってみると、USB HDD は 26.8MB/s とちょっと遅いです。同じマシンで使っている UATA100 のディスクは 60MB/s 出ていました。USB が遅いのは前々から予想していたので仕方ないかな。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

大下さんと晩御飯を食べにさとまで自転車で行きました。軽いサイクリング代わりになりました。
大下さんの自転車が壊れかけでボロボロなのが気になって仕方ないです。折りたたみ自転車やアルミフレームの軽い自転車なんかも、安くて良いものが売ってるんだから、無理して修理しながら乗らないで買い換えれば良いのにねー。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

久しぶりに作業に参加しました。久しぶりに日の光に当たったから疲れました…。

帰りに研究室によって USB から電源供給するケーブルを持ってきましたので、先日(2006年 5月 3日)動かなかったポータブル HDD の動作を確認できました。これで USB に二つのディスクが接続された環境が得られました。早速実験です。

さて RAID を組むに当たって、二つ同時にアクセスが発生することが考えられます。そこで USB 接続のディスクに対する同時アクセスは速度面で得なのか?を確かめました。まず単独で各デバイスの速度を計測します。UATA100 接続のディスク hda1 を比較対象として載せました。

# hdparm -t /dev/hda1
/dev/hda1:
 Timing buffered disk reads:  186 MB in  3.02 seconds =  61.51 MB/sec

# hdparm -t /dev/sda1
/dev/sda1:
 Timing buffered disk reads:   92 MB in  3.01 seconds =  30.59 MB/sec

# hdparm -t /dev/sdb1
/dev/sdb1:
 Timing buffered disk reads:   70 MB in  3.00 seconds =  23.32 MB/sec

二つのディスクのアクセス速度を加算しても、バスの帯域上限(480Mbps = 60MB/s)に達しないので、遅くならないだろうと思ったら意外にも 10MB/s 以上遅い結果が得られました。

# hdparm -t /dev/sda1
/dev/sda1:
 Timing buffered disk reads:   66 MB in  3.07 seconds =  21.47 MB/sec

# hdparm -t /dev/sdb1
/dev/sdb1:
 Timing buffered disk reads:   52 MB in  3.04 seconds =  17.08 MB/sec

原因として USB というのはそもそも、同時に複数デバイスを読みに行くパターンを苦手とするのか、それとも単に hdparm の結果が不正確なだけなのか、のどちらかが考えられます。hdparm の影響を確かめるには Direct I/O でファイルを書き出す程度の簡単なベンチマークプログラムを書いてみればわかるのかな?
ソフトウェア RAID が速度にどの程度影響するのかも気になるため、ストライピング構成を使ってより実環境に近い値を測ろうと思います。まあこの程度の構成ならば影響ないと信じたい…。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

現在ページのデザインを変更中です。おかしくなってる場所があるかもしれないです。日記の 1日分を枠で囲うだけで blog っぽくなる気がしませんか?
トップページで日記の枠が右のメニューにめり込んでいるのは仕様です。

ソフトウェア RAID0 を組み、簡単なベンチマークプログラムを走らせてみました。mkraid は古いのか Debian のパッケージになかったので代わりに mdadm を使いました。

# mdadm --create /dev/md0 -l0 -n2 /dev/sdb1 /dev/sda1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
    size=277948352K  mtime=Sun May  7 18:02:45 2006
mdadm: /dev/sdb1 appears to be part of a raid array:
    level=0 devices=2 ctime=Sun May  7 17:56:47 2006
mdadm: /dev/sda1 appears to be part of a raid array:
    level=0 devices=2 ctime=Sun May  7 17:56:47 2006
Continue creating array? y
mdadm: array /dev/md0 started.

作成に成功すると /proc/mdstat に以下のような情報が追加されます。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4]
md0 : active raid0 sda1[1] sdb1[0]
      277948352 blocks 64k chunks

unused devices: <none>

通常のパーティションと同様にファイルシステムを作成します。この例では ext3 ですが、好みのファイルシステムがあればそれを使ってください。

# mke2fs /dev/md0
(省略)
# tune2fs -c0 -i0 -j /dev/md0
(省略)
# mount /dev/md0 /mnt/usb_raid

1バイトずつストライピングしていては遅いばかりで性能が上がらないので、chunk という値に指定したサイズを単位としてストライピングされます。今回は chunk をいじっていないのでデフォルトの 64KB になっているはずです。
そして今回用いた簡易ベンチマークは Direct I/O を用いてファイルにランダム値を書き込みます。このとき一度に write で書き込む量を変化させてベンチマークを行いました。おそらく chunk の整数倍の方が性能が上がると予想しますが、さてどうなるでしょうか。

buffer[KB]  speed[MB/s]
32          23.569085
64          29.780680
96          33.003887
128         37.963501
160         36.080456
192         35.805102
224         36.681815
256         37.470814

結果を見ると 128KB 以上のバッファサイズであれば大した差はないようです。さすがにこの程度は考慮済みなのでしょう。
RAID0 の速度は、昨日(5/6)hdparm で同時に測った値(sda=21.5[MB/s] sdb=17.0[MB/s])の和とほぼ等しいです。つまり hdparm の誤差で遅く見えたのではなく、USB は同時アクセスが苦手だと考えられます。

ちなみにディスクアレイを停止させる場合は、以下のようにします。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4]
md0 : active raid0 sda1[1] sdb1[0]
      277948352 blocks 64k chunks

unused devices: <none>

# mdadm --misc -S /dev/md0

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4]
unused devices: <none>

確認のために /proc/mdstat の出力をさせました。md0 が消滅していることがわかると思います。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ルートディレクトリのあるパーティションがクラッシュしました…。fsck すると lost+found に全てのファイルがぶち込まれ復旧できず。これはどうしようもないってことで昨日一日使って Debian を再インストールいたしましたよ。
Debian を触り始めた頃に付けていた必死設定メモが残っており非常に参考になりましたが、最近は面倒でメモっておらず、以前とかなり違う環境になりました。皆さん、メモは大事ですよ!

以前と変更したところというと、kinput2 + Canna から uim + Anthy の組み合わせに変更した点と、起動がヘビーな Gnome2 & metacity をやめて、IceWM だけにしたこと。VNC でしか利用しませんが、IceWM なら一瞬で vncserver が起動し終わります。ちょっと感動しました。

IceWM の設定をしているときに GTK 周りのフォント設定もやったんですが、ややこしくて設定しきれませんでした。slypheed(GTK 1.0 系 .gtkrc に設定)や gftp(GTK 2.0 系 .gtkrc-2.0 で設定)のフォントは変更できても、Mozilla や Firefox が言うことを聞きません。
原因がさっぱりなので、~/.mozilla/default/(7文字のランダム文字列).slt/chrome/userChrome.css に(なければ作る)設定を書いてごまかしました。

userChrome.css でメニュー等のフォントを指定
* {
 font-family: alias-fixed-iso8859-1 !important;
 font-size: 12px !important;
}

そういえば手持ちの Windows XP からコピーしてきた MS ゴシックを使うのって OK なのだろうか。
きっと駄目なんだろうなー。

画面表示に使うことだけ考えるとビットマップフォントが多様に収録されている MS ゴシックが優秀すぎるため、フリーのフォントは太刀打ちできません。
さらに言えば世の中に商用フォントは数あれど、画面表示用を重視したフォントは売られていないのですよ。OS 標準のビットマップフォントで十分だし、フォント屋のお客さんである DTP デザイナー達は画面表示用フォントなんて買わないからね。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

近藤君と志村君が香辛飯屋の挑戦カレーに挑みましたが、残念ながら負けました。前見たやつと違って、野菜が入っているところがうっとおしいようです。
会計時に「割引券は一枚につき一品の値引き」と言われました。えぇ、そんなの知らないよ。チラシが一枚しかなくて本来なら 2個目の挑戦カレーが値引きされないはずが、哀れに思ったのか店員さんが適当にごまかし安くしてくれました。
チラシはカラーコピーして構わないので、今度誰かやるなら頼む数だけチラシを揃えましょう。

車から加給音のような変な音がします。無論、ターボなんぞないので、エンジンのどこかが詰まって鳴っているのかもしれない。また壊れたのか…!

YouTube のムービー URL を生成するスクリプトを書いてみました。
検索ワード(URL の word= 以降の所)を変えると検索結果も変わります。ただし、URL を生成するためにムービーを表示するページを一々読み込んでは解析して…と、やっているため結果が出るのが非常に遅いです。検索結果が多いと、数分かかるかも。イライラしてリロード連打しないでね。
時間が経つとユニーク ID が失効して、ダウンロードできなくなります。そのときはリロードして新しい URL を生成してください。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ドコモの二次面接に向かいました。会場がなんとキャピトル東急という驚愕の高級ホテル。ホテルを目の前にして「これが二次面接の会場とはご立派だなあ」と感心しつつ控え室に居た人と話していたら……ハイ、ナニ、なんだって?
こ れ が 最 終 面 接 ?
おいいいいいい、そんなの聞いてねえよ!

思えば、人事の人「次の面接に進んでいただきたくご連絡を」としか言っていませんでした。それを早合点してじゃあもう一回あるんだと思ったのが悪かったです。うう、でも最終なら最終って言って欲しかったよ。
最終でもどんどん落とすと噂のドコモなのに、相当しどろもどろになってしまい、今日の面接は自分が面接官でも絶対落とすわーって思いましたね。向こうも呆れている感じでしたね。さよならドコモ。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

走ると白煙が上がるらしい塚田氏の車、とうとう修理することにしたそうです。今日、塚田氏が修理屋さんに預けに行くというので榮樂氏とともについて行きました。代車は RAV4 でした。毎回違う車が出てきてつくづく面白いお店だと思います。
乗ってみて感じたのは RAV4 の加速がかなりイイ!ということです。我が家の FTO と同格の 2000cc なのにこうも違うのは、以下の違いがあるからです。

  • FTO は最高速重視で(馬力高:200馬力)の高回転エンジン(低回転:トルク小、高回転:トルク大)
  • RAV4 は加速重視(馬力低:155馬力)の低回転エンジン(低回転:トルク大、高回転:トルク小)

これは馬力(仕事率)=トルク(力)×回転数(速度)という関係を考えるとわかりやすくなります。

式を見ると、高回転エンジンなら馬力が上がることがわかるかと思います。さらに同じトルクなら、低回転域で出すより高回転域で出した方がより最大馬力が稼げるわけです。
スポーツカーと呼ばれる車ならば、上記の最大馬力を稼ぐ設計をするはずです。

一方、街乗りに使う車はブン回すと燃費が悪い、うるさいなど悪影響が多いため高回転域は不要です。そのため低い回転数で良い「加速」を得る必要があります。そのための工夫点はエンジン設計者にしかわかりませんが、とにかく高回転域を犠牲にしてでも、低回転域でのトルクを稼ぐ設計にします。
セダン、ミニバン、SUV など便利な車は、トルク重視の設計をするはずです。

これを逆転させてしまうと、初めだけ速いけど伸びが悪くて遅いスポーツカーや、思い切り回してナンボのモタモタセダンなどになってしまいます。これはきっと物好き以外には売れないでしょう。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

榮樂氏の代わりとして臨時 TA に行きました。Coins はリプレースの影響で未だに超不安定らしいですよ。Mac なんかにするから…なんてね。普段はたった一時間で 2〜3台止まって当たり前だとか。今日は技官さんが今朝リブートしたからきっと大丈夫だよ、なんて言っていたおかげか特に問題ありませんでした。
自分は 2学期に TA の予定ですが、はっきり言ってこんなシステム上でやりたくないぞ。

塚原氏と晩御飯食べに行きました。土浦の李厨房には学生割引がありますが、K's の奥にある李厨房はどうだったろう?今度行った時に聞いてみようか。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

大下さんとジョイ本へ買い物に行きました。教育実習に使う教材を作るためだそうで、製本テープや、画用紙だとかを買っていました。真面目にがんばってるなあ。

RAID5 を構築する準備をしようと思い、USB 接続のハードディスクを 2台と、1つのバスに 3台つなぐのはちょっと心細いから、USB 2.0 のカードも買いました。
家に戻って「早速増設じゃー」とケースを開けたら、空きスロットが PCI バスじゃなくて AGP バスだった…。せっかく買ったのに使えないよorz
空きスロット= PCI バス?という思い込みで確認し忘れました。安い拡張カードだったのが命拾いですね。次回作サーバへの準備ということにしておきましょう。

中身は I/O 製が HGST の 160GB で Buffalo 製が WD の 160GB でした。そんなことより、Buffalo の電源に台湾製のしょぼいコンデンサが刺さってます。HDD の近くで結構熱くなるし、まさか連続運用半年でアボーンなんて設計じゃないよね…?

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

外付け USB HDD で Software RAID を構築する全ての方へ。
※私自身よくわかってないので、間違いなどあるかもしれません。ご指摘は大歓迎です。

Linux では USB Mass Storage(USB HDD や USB フラッシュメモリ)を SCSI エミュレーションによりあたかも SCSI デバイス(sda, sdb, ...)であるかのように扱います。ところがどの SCSI デバイスに割り当てられるかが不明瞭で、ただ差し直しただけで対応が入れ替わったりします。/dev/sda がどのデバイスと関連付けられるかは、やってみるまでわからず、これではとても RAID を構築できそうにありません。

USB デバイスを固定する(?)方法として udev があります。scsi バス上にある(エミュレーションなのでそう見える)「○○社」製のデバイスなら、usbhda に割り当てる、などの設定が可能です。区別に使える情報は udevinfo というプログラムで得ることができます(udev 使うなら /sys 以下の情報(sysfs)が必要かも)。

udevinfo の使用例
# aptitude install udev

# udevinfo -a -p /sys/block/hda
(... 略 ...)
follow the class device's "device"
  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.1/ide0/0.0':
    BUS="ide"
    ID="0.0"
    DRIVER="ide-disk"
    SYSFS{drivename}="hda"
    SYSFS{media}="disk"
    SYSFS{modalias}="ide:m-disk"

たとえば ○○社製の hogehoge という名前の HDD が一台だけある、という環境でしたら、以下のように書くことができます。/etc/udev/rules.d/ 以下に .rules で終わる名前のファイルを適当に作ります。例では local.rules としています。
モデル名は大抵スペースが入っているので、udevinfo で確認することをお勧めします。

udev のルールの例
BUS="scsi", SYSFS{model}="hogehoge   ",  NAME="sda%n", SYMLINK="usbhda%n"

NAME ならデバイスファイルが、SYMLINK ならデバイスファイルではなくシンボリックリンクが作られます。%k という文字列を指定すると、カーネルが作成したデバイス名(sda とかですね)に置換されます。詳しくは udev のドキュメントを見てください。

ところがこれで解決しない場合があります。私のように同じメーカーの同じ製品を 2台使っている場合です。USB の機器にはシリアル番号を提供するものもあり(私の所持する IO-DATA 製の外付けディスクなどがそう)ますが、SCSI エミュレーションのデバイスが提供してくる情報からは得られず、全く区別がつきません。

そこで Linux 2.6 で最近登場した ub を使います。カーネルをリコンパイルして ub を有効にします。そのさい usb-storage ドライバと SCSI エミュレーションによる方法は勝手に無効化されます。たぶん…。
私の環境ではカーネル構築だけ Debian 流にやってません、ご容赦ください。

ub を有効にする(Linux 2.6.16)
# cd /usr/src/linux
# make menuconfig
(Device Drivers -> Block devices -> Low Performance USB Block driver)
(.config なら CONFIG_BLK_DEV_UB = y にする)

再起動すると /dev の下に uba とか ubb というブロックデバイスができていると思います。このデバイスに対して udevinfo すると ID という項目があると思います。これはおそらく USB バス上の物理的なポートの位置ではないかと思います。

ub の情報
# udevinfo -a -p /sys/block/uba
(... 略 ...)
follow the class device's "device"
  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1:1.0':
    BUS="usb"
    ID="1-1:1.0"
    DRIVER="ub"
    SYSFS{bAlternateSetting}=" 0"
(... 略 ...)

差し替えたり、抜いてみたりして観察してみた限り、ID は私の環境では同じポートに接続する限り不変な値のようです。この性質を利用して区別します。
先ほどの local.rules に対して、以下のように書きました。

ID で区別する udev ルールの例
BUS="usb", ID="1-1:1.0", NAME="usb1-1_hd%n"
BUS="usb", ID="1-2:1.0", NAME="usb1-2_hd%n"
BUS="usb", ID="1-3:1.0", NAME="usb1-3_hd%n"
BUS="usb", ID="1-4:1.0", NAME="usb1-4_hd%n"
BUS="usb", ID="1-5:1.0", NAME="usb1-5_hd%n"
BUS="usb", ID="1-6:1.0", NAME="usb1-6_hd%n"

これで mount /dev/usb1-1_hd1 /mnt/usb1-1-1 などとすると、ポート1 に接続されているデバイスの先頭パーティションをマウントできます。
肝心のポート1 がどれなのかは、実際に機器を接続して udevinfo をして調べます。私には ID を調べるうまい方法がわかりませんでした。ごめんなさい。

外付け USB HDD で Software RAID を構築する全ての方へ。
※しつこいですが私自身よくわかってないので、間違いなどあるかもしれません。ご指摘は大歓迎です。

Software RAID については、先日(2006年 5月 7日参照)紹介したので mdadm の使い方、cat /proc/mdstat の意味など基本的なことはそちらを見ていただくとしましょう。
さて、当方の環境ですが /home を担っていた hda7 と USB HDD 3台で RAID 0+1 を構築し、/home にマウントしようと思います。容量は 160GB(RAID1)+160GB(RAID1) のストライピング(RAID0) で 320GB となります。信頼性と容量が今までの倍になるわけです。そのぶん HDD が 4倍ですが…。

まずは RAID1 を 2つ作成します。RAID1 をいきなり作ってしまうと、ディスクの同期処理が始まり何もできなくなるので、いったん縮退モードで作成してデータのコピーを済ませ、その後ディスクを追加します。

RAID1 アレイを二つ作成
# mdadm --create /dev/md0 -l1 -n2 missing /dev/usb1-1_hd

# mdadm --create /dev/md1 -l1 -n2 missing /dev/usb1-3_hd

次に 2つの RAID1 をまとめる RAID0 アレイを作成します。この構成は RAID1+0 と呼ぶのかもしれませんが、ここでは一貫して RAID0+1 と呼びます。
RAID を作成するときデバイスファイルがないと言われたら、-a を付けてください。

RAID0+1 アレイを作成
# mdadm --create /dev/md3 -a -l0 -n2 /dev/md0 /dev/md1

間違って md2 ではなく md3 にしてしまいましたがそのままいきます…。/proc/mdstat を見て作成されたかどうか確認します。確認したら md3 を reiserfs でフォーマットします。

アレイの確認とフォーマット
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [raid4] [raid6]
md3 : active raid0 md0[0] md1[1]
      317127104 blocks 64k chunks

md1 : active raid1 ubc[1]
      156290816 blocks [2/1] [_U]

md0 : active raid1 uba[1]
      160836416 blocks [2/1] [_U]

unused devices: <none>

# mkreiserfs /dev/md3
(... 略 ...)

ブート時に自動的に構成されるように /etc/mdadm/ にある mdadm.conf に RAID 構成の設定を保存します。

アレイの設定を保存する
# cd /etc/mdadm
# echo DEVICE /dev/usb* /dev/md* > mdadm.conf
# mdadm --detail --scan >> mdadm.conf

# cat mdadm.conf
DEVICE /dev/usb1-1_hd /dev/usb1-2_hd /dev/usb1-3_hd /dev/md0 /dev/md1 /dev/md3
ARRAY /dev/md3 level=raid0 num-devices=2 UUID=bxxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx2
   devices=/dev/md0,/dev/md1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=0xxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx9
   devices=/dev/usb1-3_hd
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=9xxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx7
   devices=/dev/usb1-1_hd

cat した結果を見ると md3, md1, md0 の順番でスキャンされています。このままで良いはずなのですが、私の環境では md3 の設定を一番後ろに書かないと、起動時にコケてしまいます。md3 が md0 と md1 に依存しているからかなあ?よくわかりません。
データをコピーして、再起動したらディスクを追加します。同期処理にしばらくかかるので放置しておきましょう。

アレイにディスクを追加する
# mdadm --manage /dev/md0 -a /dev/usb1-2_hd

# mdadm --manage /dev/md1 -a /dev/hda7

mdadm.conf の設定を更新するのもお忘れなく。あとは fstab を修正して再起動してみて、動作を確認したら終わりです。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

昨日作成した RAID0+1 の書き込み性能を測定しました。
やはり 3台もつないでミラーリングするとかなり遅いです。

USB HDD 3台による RAID0+1 の性能
$ ./bench ./a 102400000 262144
loop: 391
time: 4.812052[sec]
speed: 21.279903[MB/s]

速度の見積もりは USB バス帯域を 480Mbps の 7割とし、データがストライピングで完全に三等分になったとして、
336/3*2 = 224Mbps = 28MB/s です。
見積もりと実測値がかなり離れているので他にオーバヘッドがあるのかもしれませんが、不正確を承知でもう 2台追加した場合を計算すると、
336/5*3 = 201.6Mbps = 25.2MB/s です。
このようにバスに余裕がない状態でミラーリングすると、ディスクを増やしただけ書き込み速度が下がります。

ちなみに RAID0 のみならディスクを増やしても速度が落ちる心配はありません。バスの飽和まで速度が上がるはずです。まあ、あまり増やしても分散書き込みの処理のオーバヘッドが増えるだけですけどね…。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

5/9 のスクリプトをシェルスクリプトにして、検索結果リストのムービーを保存できるようにしました。その際再生ページのタイトルをファイル名に使います。ファイル名が ID だとまるで意味がわからなくなるので。
落とした .flv ファイルのプレーヤは Media Player Classic と ffdshow のコンビが良いです。拡大縮小も、シークも自由自在です。たまに再生開始時に数秒固まりますけど、落ちたりはしないようです。

Xenepic online(運営は HanGame)というゲームを始めてみたのですが、Ragnarok Online のパクリというか…。まあそのおかげで取っ付きやすいですけどね。ただ起動しただけではだめで、IE でいちいち HanGame にログインしないと遊べないようになっています。非常に面倒くさいです。

どうやって普通の起動と区別しているのか、下のプログラムを Xenepic と入れ替えて引数を調べたら、変な数値と Hangame ID を指定して起動していました。ちなみにその引数を渡すだけで普通にログインできます。作りがいい加減ですね…。
数値はパスワードのハッシュかと思ったのですが、パスワードを変えても不変でした。日付とか時間か?

引数表示

#include <stdio.h>
int main(int argc, char *argv[])
{
  for (int i = 0; i < argc && argv[i] != NULL; i++) {
    printf("%d: %s\n", i, argv[i]);
  }
  getchar();
}
[編集者: すずき]
[更新: 2006年 11月 27日 23:18]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

研究室のゼミの後に、明日のシス情セミナーの発表練習を行いました。ドコモへ出張したとき、発表会で使った資料をかなり流用したので、それなりにまとまっております。勢いでそのネタを研究会に発表することになりました。う、頑張らねば。

研究室にあるマシン(IDE HDD 2台)で RAID 0 を構成して測ったら、なんと書き込み 64MB/s 〜 72MB/s という脅威の性能を発揮しております。
我が家のサーバの場合は USB 接続だから遅いのと、妙に CPU を食うのが気になるけど、廉価 RAID だしこんなもんかな?次回作では複数の USB カードを使うことや、外付け SATA 接続などが良さそうですね。

Xenepic は昨日の発見した引数のままで今日もログイン可能なようです。HanGame アカウントのパスワードに関係の無い数値なので、この数字が漏れたら一巻の終わりじゃね??うへーうへーうへー…。

榮樂氏に「bench ってナニ?」って突っ込まれたので、補足。bench は write 速度を測るプログラムです。Linux 2.6 専用と書いてあるのは、2.4系の Direct I/O(O_DIRECT)のアライメント制限を考えて書いていないからです。
一応、手元の Linux 2.4 で試したら ext2 は OK なのに ext3 でコケるからおかしいと思ったら、どこかの ML でカーネルのバグなんじゃね?という記述が見受けられました。

ホントかいなと思ってカーネルのコード見たら、fs/ext3/inode.c では struct address_space_operations の direct_IO メンバに値を入れないため、O_DIRECT を指定して読み書きしようとした時点で失敗し EINVAL が返ります。
バグというより、元々 ext3 は O_DIRECT 使っちゃ駄目みたい…。なぜかはわかりませんけど。

bench のソースコードを下に貼っておきました。ヘッダや、エラー処理は省略しております。

書き込み速度計測 bench.cpp for Linux 2.6

int main(int argc, char *argv[])
{
  int fd;
  size_t size, bufsize, wsize, pos;
  unsigned char *lpalignbuf;
  struct timeval tv_start, tv_end, tv_past;
  char *lpc;
  size_t i;

  if (argc < 4) {
    printf("usage: \nbench filename size bufsize\n");
    return 0;
  }
  
  //サイズを得る
  size = strtol(argv[2], &lpc, 10);
  bufsize = strtol(argv[3], &lpc, 10);

  //Direct I/O モードでファイルを開く
  fd = open(argv[1], O_RDWR | O_DIRECT);
  lseek(fd, 0, SEEK_CUR);

  //アラインメントをそろえたバッファを生成、乱数で埋める
  posix_memalign((void **)&lpalignbuf, 512, bufsize);
  for (i = 0; i < bufsize; i++)
    lpalignbuf[i] = rand() % 256;
  
  //測定を開始する
  gettimeofday(&tv_start, NULL);
  //乱数を書き込む
  for (pos = 0; pos < size; ) {
    //書き込むサイズ
    if (size - pos < bufsize)
      wsize = size - pos;
    else
      wsize = bufsize;

    //書き込む
    write(fd, lpalignbuf, wsize);
    pos += wsize;
  }
  free(lpalignbuf);
  close(fd);

  //測定を終了する
  gettimeofday(&tv_end, NULL);
  tv_past.tv_sec = tv_end.tv_sec - tv_start.tv_sec;
  tv_past.tv_usec = tv_end.tv_usec - tv_start.tv_usec;
  while (tv_past.tv_usec < 0) {
    tv_past.tv_usec += 1000000;
    tv_past.tv_sec -= 1;
  }

  //結果表示する
  printf("time: %13d.%6d[sec]\n"
         "speed: %f[MB/s]\n", 
         tv_past.tv_sec, tv_past.tv_usec, 
         (double)size * 1000000 / (tv_past.tv_sec * 1000000 + 
         tv_past.tv_usec) / 1000000);

  return 0;
}
[編集者: すずき]
[更新: 2009年 1月 24日 16:20]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

セミナーで発表しました。結構あっさり終わってしまって、つくづくドコモへの出張で頑張っておいて良かったと思いました。
研究室内のネットワークをどうするかなど話し合いましたがあまりまとまりませんでした。以下、覚えている限りの議事録です。

アドレスについて
  • クラス A プライベートアドレス
    学内無線 LAN の tsunami が配っているアドレスとぶつかる。
  • クラス B プライベートアドレス
    よりベターな解決策かもしれない。欠点はなじみが無くて覚えづらいことか?
ブリッジするレイヤ
  • レイヤ 2
    ブリッジやポート VLAN などで、同一サブネットにすると DHCP サーバが一つしか置けず、そうなると必然的に研究室内のネットワークからインターネットへ向かう出口が一つになる。
    帯域を共有するのは大した問題ではない。コネクションを張りまくる(P2P アプリケーションなど)と、ルータの NAT テーブルが溢れ、不安定になる問題が現在より頻発する。
  • レイヤ 3
    ルータ - ルータ間の VLAN を行う、今までと同じ。インターネットへの出口は複数になる。サブネットが変わるのでブロードキャストが届かない。
    たとえば SMB はブロードキャストでマシンを検出するので、違う階のマシンには届かずマシンが見えなくなる。困るのが SMB だけなら WINS サーバを置くという手もある。
[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

雨だったので車で研究学園まで行って、電車に乗り、ドコモミーティングへ向かいました。帰りはせっかく区間快速を待って乗ったのに、寝過ごしてつくば駅まで行っちゃって、向かいに居た区間快速で戻る羽目に。ああ、時間無駄にしたわー…。
TX は秋葉原で区間快速を待つより目の前の快速に乗ってつくば駅に行き、区間快速で 1駅戻る方がスムーズかもしれません。でも完全にキセル行為なので、やらないほうが身のためかな。

帰りに研究室に寄ったら、川崎君が、Wine 上で Gyao を見るんだと言って頑張っていました。果たして成功したのでしょうか?

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

常総市にあるきぬの湯に行きました。一回も行ったことないのに現地集合は厳しいっす。でも見たことあるような建物だったような気もします。これが既視感?

走っているときに青看板を見ていると、相次ぐ合併のせいか見慣れない地名が増えたなあと思いました。そういえば新しい市はなぜに平仮名?愚民は漢字も読めないとでも言いたいのか。以下、ひらがなの街の例。

  • つくば市(1987年、桜村、谷田部町、豊里町、大穂町、1988年、筑波町、2002年、茎崎町)
  • ひたちなか市(1994年、那珂湊市、勝田市)
  • かすみがうら市(2005年、新治村、霞ヶ浦町、千代田町)(5/23 訂正: 新治村、霞ヶ浦町ではなく新治郡霞ヶ浦町でした)
  • つくばみらい市(2006年、伊奈町、谷和原村)

データは都道府県市区町村からのものです。
筑波市、常陸那珂市、霞ヶ浦市、と書くことに何の問題が?ああ、つくばみらい市はどう書いても終わってるので、大人しく伊奈市に変更すべきだと思います。

夜はダーツの予定でしたが、取りやめて結城邸で飲み会をしました。ストリングチーズを齧って食ったら、そんなの邪道だって。ど、どう食べたって良いじゃないですか。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

フリーフォントの中で IPA ゴシックは、抜群の品質なのですが、ビットマップフォント部分(9 と 12 ポイント以外入ってない?)に弱点があって、どうも画面表示には適していないように思います。
ああ、アンチエイリアスなんていうボロボロの文字をボケさせて誤魔化す(Mac とか Mac とか Mac)品質放棄技術はやめてください。ディスプレイのような低解像度だとうっとおしいです。

現在 Linux 上でMS ゴシックを使っていますが、それに代わる画面表示用フォントは無いものかと探してみました。ビットマップフォントの有無ってなかなか書いていないので、唯一情報が得られ、値段も手頃だった NEC の FontAvenue と Canon の FontGallery を購入しました。

ところが使ってみると、一部で異常に字が小さくなったり、ポイント数の大きい字が崩れるなど、あまり芳しくありません。オープンソースには全く縁の無いはずの MS ゴシックがもっとも綺麗に表示されるあたりが皮肉ですね。
開発者たちはフリーフォントなんて使ってなくて MS ゴシックでデバッグしているとしか思えません。そんな邪推もしたくなるような結果です。

やはり MS ゴシックを超えるものは無いのかなあ…。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

Visual Studio 2005 を買いました。Academic Edition なのですが、今のところ学生証を送れとか言われません。アクティベーションもなかったように思いますが、何日か経ったら言われるのかなあ?

榮樂氏より、新治村はかすみがうら市ではなく、土浦市との指摘がありました。ご指摘にあわせ 2006年 5月 20日の日記は訂正しました。ありがとうございます。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

OSSS にミラーリングするようになって、5日ほど経ちました。
きちんと更新されているところを見ると /etc/cron.d に登録したミラーリング用のスクリプトも上手く動いているようです。といってもただ rsync を行うだけですけどね。

簡単に説明すると、~user/public_html というディレクトリがあることと、それが読めることをテストしてから、rsync にてコピーという作業をしています。command の部分は実際には一行です。一行にするときは行末の を取ってください。
フラグの意味は -r ディレクトリを再帰的に処理、-l シンボリックリンクをコピー、-p パーミッションを保存、-t 時間を保存、です。--delete はコピー元に無いファイルは、コピー先からも消す、というフラグです。これを書かないとゴミが溜まりますね。

cron によるミラーリング
/etc/cron.d/rsync_html
50 5    * * *   username        command

command の部分(実際は 1行) ----------
if [ -d /home/username/public_html ] && [ -r /home/username/public_html ]; 
then
env LANG=C /usr/bin/rsync -rlpt --delete \
    /home/username/public_html/index.html \
    /home/username/public_html/diary \
    username@hoge.example.com:public_html; 
fi

そういえばここは Google 先生にだけ無視されている変なページでした。Google Bot だけ蹴るなど、一切していないのにね?ま、それも OSSS 側からそのうち捕捉されて終わると思います。一週間くらいでクローリングされると見ておりますが、それでも Google に無視されたら、もう神ですね。

[編集者: すずき]
[更新: 2006年 11月 27日 23:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

このページのページビュー履歴を取るようになってからわかったことがあります。
一日 20前後のページビューですが、実質約 15で残りは日記の編集中にリロードした自分によるものでした。自分のページを一切見ない日(5/20)13ヒットだったことからもうかがえます。

履歴機能でこんなことがわかるとはねー。自分でかなり回してるのがわかってしまって何か必死みたいに見えますね…。

Xenepic Online という MMORPG(大規模オンライン RPG)を始めてみました。説明などは HanGame から辿れます。
月額方式ではなく、アイテムによる課金方式です。つまり特殊なショップアイテムを買わないかぎりずっとタダです。その分、課金アイテムを買わないとしんどくなるようにできているんでしょうけどね。

ちょこっとやってみたところ、敵が強い割に経験値をくれず、レベルがあがりません。現在レベル 15 のへぼへぼです…。

かなりマイナーなのでだれもやってなさそうだなあ。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

セミナーは塚田氏の発表でした。質問時間シーンとしていて、私が質問したくとも、塚田氏は共著者なのでそうもいかず。で、何を思ったか司会役の人、質問がないって言って発表を終わらせてしまいました。質問がなければ司会者が質問するのが筋なのに…。

CSEC という学会に発表することになっていたのですが、申し込みをミスってできていませんでした。今日色々な方にご迷惑をかけつつリカバリしていただきました。お世話になった方たちのためにも CSEC 頑張るよ!

お昼に食堂で tsunami に繋いだら 10.x.x.x/16 のようなサブネットでした。これなら研究室でもクラス A プライベートアドレスを使えるかもね?

榮樂氏の日記を見て、winbind をインストールし /etc/nsswitch.conf を書き換えたのに、ping hogehoge に応答なし…。wbinfo -N hogehoge とやるとアドレスが得られるので winbindd は正常、telnet hogehoge とやると名前解決できました。どうやら ping だけだめなようです。
榮樂氏曰く「使ってる ping が違うかも?」だそうで。 netkit-ping と iputils-ping の 2つがあるので、だめなときは入れ替えてみると吉かな。

我が家で実験してみたところ、Norton 先生が悪さしているようでアドレス解決ができません。まあ我が家のマシンは固定 IP だし、使えなくても別にいいんです…。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

阿部さんいわく、プレゼンテーションを録画することになったけど、ビデオカメラのエンコーダは画質が良くないから PC に取り込んでしまうことにしたみたいです。そんなわけでキャプチャデバイスを買いに行きました。ケーズとパソコン工房を回った結果 Canopus の赤いやつ(たしか MTVX2006USB)になりました。

PC 関連の店はケーズデンキとパソコン工房しかないので微妙です。田舎に期待してはいかんのかな…。昔は選択肢としてヤマダ電機もありました。しかし血迷ってカー用品やブランド物を置き始めて、今や電器屋とは呼べなくなりました。そのうちドン・キホーテのようにアホとヤンキーの溜まり場になって、一帯の雰囲気を悪くしそうで心配です。

三学の駐車場に停めていたら車がアリだらけになりました。車体に接触していた木の枝から渡ってきたようです。ループを走ってみたけれど全然落ちなかったので、カスミの駐車場(家の駐車場は暗い)に停めて、手で払いました。不審者もいいとこです。室内に進入されていなかったのが不幸中の幸いでした。

結城さんとフィンラガンに行きました。テーブルが超混んでたためカウンターで飲みました。初めのギネスビール以外は、ウイスキーオンリーでした。頼んだのは、鹿の絵の Glenfiddich 12年、ピートの強いスコッチ ARDBEG、バーボン Old St.Nick 12年、アイリッシュ JAMESON、カナディアン Canadian Club だったか。マスターいわく「ストレートが一番うまい」ってことで全部ストレートで頼んだ。
思い返すとマスターに素人くさい質問ばっかりしていたなあ。ほんとに素人だから仕方ないんだけどさ…。
あと、マスターはリアルエール(無殺菌、炭酸無添加のビール)はこの辺だとウチしか置いてないよって言ってました。実は貴重な店だったのね、今度機会があったら頼んでみようかな。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

昨日の所業のせいか頭がいてえ…。でも二日酔いなのに特に気持ち悪いなどもなく、動くのが億劫かな、という程度で済んだのが不思議です。飲み方が良かったとか?

lame の mp3 コーデックをインストールしてみました。サウンドレコーダで mp3 が作れます、使い方によっては便利…かもね?ffdshow インストールしているならそれで良いじゃん、って後で気づいたのは秘密です。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

大下さんとジョイ本に買い物しに行きました。生活用品だけを買う予定だったのですが、文房具コーナーで素敵なステープラー MAX HD-10DFL(写真左)を発見し、思わず購入しました。留めるとき軽く、針先をフラットにできる上に、普通紙 26枚という貫通力が魅力です。

我が家のステープラーたち

ラクに留める機能が売りのコクヨ SL-M71N(写真中央)はハズレ品だったのか、かなりジャムります。MAX HD-10N(写真右)はごく普通のステープラーで、使い勝手は良いものの、貫通力がイマイチで 10枚越えのレポートに難儀します。
1000円もした今回のステープラーこそ、当たり品であることを祈るばかりです。

会社に健康診断書を送るため、封書を作りました。内容は「合格くれてありがとう、この前出せなかった書類を送るね☆」これだけです。もちろん手紙でこんな文体にしたら頭狂ってると思われます。
大学生になって初めてまともに封筒や便箋というものと向き合ったように思います。日本の学生(特有なのかは存じませんけど)は手紙の書き方も習わずに、社会人として放り出されます。ちょっと困りものですよ…。
現在の指導要領には手紙の書き方が入っているそうで、良い事だと思います。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

昨日書いた封書を郵便局に出してきました。向こうに受け取ってないとかバックれられても困るので、配達記録にしました。届いたかどうかはネットで確認できるんだってさー、便利だね。
年金の学生特例の申し込みをした後、通帳の繰越をしに行きました。1時間もかからずに所用が済んだわけですが、所用を片付ける気になるまでが長くて…。実に 4時間以上ごろごろしていましたね。

研究室の皆さんと香辛飯屋に行き、カレーを食べました。カレーと言えば…我が家にある 18個のレトルトカレーをどうしてくれよう。
北脇さん、田口氏、結城さんときりんでプチ打ち上げをしました。北脇さんが必死にシュールストレミング(※)を買いたい、そして開けたい、と語っていました。中身を被ろうものなら服や頭を交換したくなりそうな代物を…誰が開けるのかなー?

※シュールストレミング: スウェーデン産、ニシンの塩漬けの缶詰のこと。SURSTROMMING。進んだ発酵により比類ない悪臭がするほか、発酵ガスの作用により爆発する危険性があり、空輸が禁止されている。缶を空けると、激しく中身が吹き出すという特徴がある。

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

昨日の配達記録の話の続き。日本郵政公社のページから、昨日出した封書を追跡してみると、下図のように表示されました。さすが速達、一日で向こうに届きましたよ。

配達記録の追跡

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ゼミの後、川崎君に自分の研究を説明していたら、リファレンスモニタ上で configure が失敗するという話に。横に居た榮樂神により、wait の status がちゃんと設定されていないせいだと判明しました。でもなんでだろう?

研究室ではさっぱり思いつかなかったのに、家に帰って 5分で気づいた。自分にがっかりだ…。
第二引数 status には、状態変化を起こした子プロセスの状態を代入すべきなのに、親プロセス(waitpid() を呼んだプロセス)の状態(もちろん 0)を代入していたせいでした。ケアレスミスです、いっぺん吊ってきます。

configure や mozilla が動くようになった記念に、ベンチマークを取りました。まずは素の状態で ./configure します。

素の configure
~/usr/src/hello-2.1.1$ make distclean
(略)
~/usr/src/hello-2.1.1$ time ./configure
checking for a BSD-compatible install... /usr/bin/install -c
(略)
config.status: executing default commands

real    0m8.700s
user    0m4.488s
sys     0m2.832s

Linux の fork() って速すぎじゃね?本当に fork してんのか?

次に、拙作のしょぼいリファレンスモニタ上で ./configure をします。

リファレンスモニタ上の configure
~/usr/src/hello-2.1.1$ make distclean
(略)
~/usr/src/hello-2.1.1$ time ./configure
checking for a BSD-compatible install... /usr/bin/install -c
(略)
config.status: executing default commands

real    0m21.455s
user    0m5.148s
sys     0m4.224s

ぐあ、何これ。お、遅っ…orz

[編集者: すずき]
[更新: 2006年 11月 19日 16:16]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報