ディスクアクセスがネックとなっているため、アクセス分散のためにUSBメモリをハードディスク代わりに使えるように設定する。
使うのは激安で買った2GのmicroSDカードを100円ショップのUSBメモリアダプタだ。
合わせて500円も掛かっていない。
早速USBポートに突き刺してサーバーを起動。
コマンドラインから設定を行う。
まずはデバイス名を確認することからはじめるのだ。
# dmesg
Linux version 2.6.18-194.32.1.el5xen …
:
:
:
SCSI device sdb: 3911680 512-byte hdwr sectors (2003 MB)
:
:
:
sdbとして認識しているようだ。
デバイスを使用できるようにfdiskをする
# fdisk /dev/sdb
このディスクのシリンダ数は 35560 に設定されています。
間違いではないのですが、1024 を超えているため、以下の場合
に問題を生じうる事を確認しましょう:
1) ブート時に実行するソフトウェア (例. バージョンが古い LILO)
2) 別の OS のブートやパーティション作成ソフト
(例. DOS FDISK, OS/2 FDISK)
コマンド (m でヘルプ): p
pでとりあえず状態を確認
Disk /dev/sdb: 2002 MB, 2002780160 bytes
11 heads, 10 sectors/track, 35560 cylinders
Units = シリンダ数 of 110 * 512 = 56320 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 2 35561 1955775+ 6 FAT16
コマンド (m でヘルプ): d
microSDは購入時にWindowsですぐに使えるようにFAT16でフォーマットされていた。
dでパーティションを削除する
パーティション番号1を指定
Selected partition 1
コマンド (m でヘルプ): p
pでまた確認
Disk /dev/sdb: 2002 MB, 2002780160 bytes
11 heads, 10 sectors/track, 35560 cylinders
Units = シリンダ数 of 110 * 512 = 56320 bytes
デバイス Boot Start End Blocks Id System
消えました。
nで新しくパーティションを切ります。
コマンド (m でヘルプ): n
pで基本領域を指定
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号1を指定
領域番号 (1-4): 1
全ての領域を使うので開始は1、終了はMaxなので値はデフォルトでOKなので空打ちします。
最初 シリンダ (1-35560, default 1):
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-35560, default 35560):
Using default value 35560
wで書き込みます。
コマンド (m でヘルプ): w
領域テーブルは交換されました!
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
領域が取れたのでファイルシステムを設定します。
形式はext3
# mkfs -t ext3 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
244800 inodes, 488948 blocks
24447 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=503316480
15 block groups
32768 blocks per group, 32768 fragments per group
16320 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
ドライブとして使用できるようにマウントします。
今回は、/usb/1というディレクトリにマウントしてみます。
# mount /dev/sdb1 /usb/1
確認します。
# mount
:
:
/dev/sdb1 on /usb/1 type ext3 (rw)
:
:
ちょっとdfでも確認してみましょう。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
149502108 13995128 127790116 10% /
/dev/sda1 101086 34082 61785 36% /boot
tmpfs 392788 0 392788 0% /dev/shm
/dev/sdb1 1925024 35688 1791548 2% /usb/1
このままでは再起動するとマウントが外れてしまうので、
起動時に自動的にマウントするように設定を変えます。
テキストエディタで、/etc/fstab を編集します。
最後の1行を追記
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
/dev/sdb1 /usb/1 ext3 defaults 0 0
これで自動的にUSBメモリが、/usb/1として読み書きできるようになりました。^^
今回のチューニングでは、ここにapacheのログやアクセス解析のログを出力するように
バーチャルサーバーの設定を書き換えました。
が、
そもそもさほどログ出力が問題にはなっていないので大きな改善にはなりませんででした。
ただしエラーを吐きまくって一気に悪循環の無限ループに入っていくのに対しては一定の効果が…..
あるような気がします。--;;
次回は、USB外付けHDDをLinuxのドライブとして使うように設定します。
【送料無料】Linuxパフォーマンスチューニング
価格:2,940円(税込、送料別)
コメント
とても参考になりました。ばっちりです。