リンク: [ホーム] [自己紹介] [リンク集] [アルバム] [ソフトウェア] [発表文献] [その他]

まさおのChangeLogメモ / 2006-12-18

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2006-12-18 Mon

* 若手クロストーク

先週末の木曜日・金曜日に、所属先で若手クロストークなる、合宿形式の
セミナーに参加してきた。とりあえず、統数研、遺伝研、極地研、情報研
の若手がひととおり揃ったので、分野違いながらも、それなりに刺激になっ
た。

適当に3分で自己紹介&研究紹介しろと言われたので、その原稿は
[2006-12-13] に置いておいた(いまやっているプロジェクトの話だけだ
けど…)。

ポスター・アブストラクトも発表資料のページに載せた。

ま、発表というよりは、夜の部での交流の方が重要なのではありましたが…。

* ディスク増設

手元で使っているLinuxデスクトップマシンのディスク領域が、初期購入
時の40GBでは逼迫してきてしまっていたので、Seagate ST3750640A(750GB)
を2つ購入して、増設した。

とりあえず増設後の設定方法は前回のメモを参考にした:
→ Arno購入直後のディスク設定: [2004-11-25]

増設直後のブートメッセージ:

hda: SAMSUNG SP0411N, ATA DISK drive
hdb: SAMSUNG SP0411N, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hdc: ATAPI-CD ROM-DRIVE-48MAX, ATAPI CD/DVD-ROM drive
hdd: ST3750640A, ATA DISK drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 1024KiB
hda: 78242976 sectors (40060 MB) w/2048KiB Cache, CHS=4870/255/63, UDMA(100)
 hda: hda1 hda2
hdb: max request size: 1024KiB
hdb: 78242976 sectors (40060 MB) w/2048KiB Cache, CHS=4870/255/63, UDMA(100)
 hdb: unknown partition table
hdd: max request size: 1024KiB
hdd: 1465149168 sectors (750156 MB) w/16384KiB Cache, CHS=65535/255/63, UDMA(100)
 hdd: unknown partition table

ここから、増設したのが /dev/hdd として認識されているのが分かる。

とりあえずパーティションを切ってフォーマットする。

% sudo fdisk /dev/hdd
デバイスは正常な DOS 領域テーブルも、Sun, SGI や OSF ディスクラベルも
含んでいません
新たに DOS ディスクラベルを作成します。あなたが書き込みを決定するまで、変更は
メモリ内だけに残します。その後はもちろん以前の内容は修復不可能になります。

このディスクのシリンダ数は 91201 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
   (例. DOS FDISK, OS/2 FDISK)
警告: 領域テーブル 4 の不正なフラグ 0x0000 は w(書き込み)によって
正常になります

コマンド (m でヘルプ): m
コマンドの動作
   a ブート可能フラグをつける
   b bsd ディスクラベルを編集する
   c dos 互換フラグをつける
   d 領域を削除する
   l 既知の領域タイプをリスト表示する
   m このメニューを表示する
   n 新たに領域を作成する
   o 新たに空の DOS 領域テーブルを作成する
   p 領域テーブルを表示する
   q 変更を保存せずに終了する
   s 空の Sun ディスクラベルを作成する
   t 領域のシステム ID を変更する
   u 表示/項目ユニットを変更する
   v 領域テーブルを照合する
   w テーブルをディスクに書き込み、終了する
   x 特別な機能 (エキスパート専用)

コマンド (m でヘルプ): p

Disk /dev/hdd: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

 デバイス ブート 始点 終点 ブロック ID システム

コマンド (m でヘルプ): n
コマンドアクション
   e 拡張
   p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-91201, 初期値 1):
初期値 1 を使います
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-91201, 初期値 91201):
初期値 91201 を使います

コマンド (m でヘルプ): p

Disk /dev/hdd: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

 デバイス ブート 始点 終点 ブロック ID システム
/dev/hdd1 1 91201 732572001 83 Linux

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

として、ディスクパーティションの設定を行う。
次に、ファイルシステムの作成を行う。

% sudo mkfs -t ext3 /dev/hdb
mke2fs 1.34 (25-Jul-2003)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
91586560 inodes, 183143646 blocks
9157182 blocks (5.00%) reserved for the super user
First data block=0
5590 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000

Writing inode tables: 0/5590 ... done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

とりあえず、これで使えるようになった。
とりあえず逼迫している /home をこれに置き換える。

% sudo telinit s
# mount /dev/hdd /mnt/hdd1
# cd /home
# tar cf - . | ( cd /mnt/hdd1; tar xf - )
# vi /etc/fstab
--- /etc/fstab.20061218 2006-12-18 16:18:45.000000000 +0900
+++ /etc/fstab 2006-12-18 16:25:11.496326304 +0900
@@ -6,7 +6,7 @@
 sysfs /sys sysfs defaults 0 0
 /dev/hda1 swap swap defaults 0 0
 /dev/hdb /project ext3 defaults,acl 1 2
+/dev/hdd /home ext3 defaults,acl 1 2

とりあえず、これで再起動して完了。

* 擬似検索システム高速化

(原因)NKF.nkf が遅い...

str = NKF.nkf( "-em0Z1", str ).gsub(/\s+/, " ")

str = NKF.nkf( "-m0 -ef#{max_size}", str ).split(/\n/)[0] + "..."

str = "..." + $1 + NKF.nkf( "-m0 -ef#{max_size - 20}", str[first_match .. -1]).split(/\n/)[0] + "..."

すこし調べてみたところ、大きな3MBを越すような大きなファイルを対象
にスニッペットを作ろうとすると、秒単位でnkfにかかってしまう模様。
とりあえず Google などと同様に、先頭 102400 Byte だけを読み込むよ
うに修正。