y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

仮想ディスクの最適化って?

仮想サーバのパフォーマンスで、ネットワークやディスクアクセスが問題になりそうなことが分かってきた。(CPUやメモリは、バーチャルでもリアルでもあまり影響しないらしい。)
このうち、ネットワークは、仮想サーバごと、別のイーサネットカードに割り当てればスループットは改善されそう。
じゃぁ、ディスクはどうなんだというと、一応複数のHDDデバイスを扱えるのならば、40GBのディスク1本に対してアクセスするよりも、10GBのHDDを4本用意した方が有利なんじゃないかと。
しかも、IDEよりもSCSIドライバを使ってアクセスした方が有利なんじゃないかと。
また、可変ディスクよりも容量固定ディスクの方が速いんじゃないかと。
仮想化による性能劣化
第2回 実測! 物理マシンと仮想マシンの性能差は?

もしくは、当初はひとつのディスクで運用しても良いが、後々別ディスクに移動する方法をあらかじめマスターしておきたい。

■結果
後で追加したSCSIディスクを認識させ、/varとして使うことに成功。
この勢いで/home、/usrなどもSCSIに移せば、システムディスクはIDEで、その他ユーザデータがSCSIという環境になる。(のかな?それでいいのかな?自分は満足か?)
さて、実運用でパフォーマンス的に有利なのはどっちなのか?
※これって、WindowsでシステムをCドライブ、データベースやユーザデータをDドライブに入れる感覚とも似てるな。

■手順
VirtualServerで動作するLinuxで仮想SCSIディスクを増設する
・バーチャルマシンの構成で、SCSIアダプタを追加する。
SCSIアダプタID:7

・バーチャルディスクの追加
容量固定のバーチャルハードディスク
scsidisk1.vhd →/var用に10GB
scsidisk2.vhd →/usr用に10GB
scsidisk3.vhd →/home用に10GB
scsidisk4.vhd →/opt用に10GB


※容量固定の方がパフォーマンスが良さそう(裏付けなし)

・バーチャルマシンへのハードディスクの追加
バーチャルハードディスク2:SCSI 0 ID 0 に接続
バーチャルハードディスク3:SCSI 0 ID 1 に接続
バーチャルハードディスク4:SCSI 0 ID 2 に接続
バーチャルハードディスク5:SCSI 0 ID 3 に接続

ここから先はバーチャルマシンにログインして、端末で操作。

SCSIを有効にする

# chkconfig --list vmadd-scsi
vmadd-scsi 0:off 1:off 2:off 3:on 4:off 5:on 6:off

# chkconfig vmadd-scsi off

# chkconfig --list vmadd-scsi
vmadd-scsi 0:off 1:off 2:off 3:off 4:off 5:off 6:off

・リブート

・起動時メッセージの確認
dmesgコマンドで、SCSIディスクが認識されていることを確認。

・シングルユーザモードで起動
LILO boot:linux single

※シングルユーザモードでは、ネットワークは使えない

GRUBでシングルモードに移行する場合
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/488bootsingle.html

ブート開始直後に”E”を押し、ブート選択画面を表示させる
起動したいOSのイメージを選択しEキー
kernal〜の行を選択しEキー
編集画面に映るので、行末にスペースとsingleを入力してEnterキーを押す
bボタンを押してブート開始


・ブートシーケンスでSCSIが認識されていることを確認

・領域を作成する
fdisk /dev/sda
n ←新規作成
p ←基本領域(1-4)
1 ←領域番号(1-4)
1 ←最初のシリンダ
4096 ←終点シリンダ(デフォルトは終点Enter)

w ←結果の書き込み(反映)

・フォーマット
mke2fs -c /dev/sda1

※-cオプションは、クラスタのチェック

ここで -jオプションを付けるとext3になる。
http://www.atmarkit.co.jp/flinux/rensai/fs04/fs04b.html
# mke2fs -j /dev/hdXX
# mkfs.ext3 /dev/hdXX


・ここまでの確認
fdisk -l
[root@localhost ~]# fdisk -l

Disk /dev/hda: 17.1 GB, 17179803648 bytes
255 heads, 63 sectors/track, 2088 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

バイス Boot Start End Blocks Id System
/dev/hda1 * 1 2088 16771828+ 83 Linux

Disk /dev/sda: 4294 MB, 4294967296 bytes
64 heads, 32 sectors/track, 4096 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes

バイス Boot Start End Blocks Id System
/dev/sda1 1 4096 4194288 83 Linux


・マウントポイント作成
# mkdir /mnt/newvar
# mount -t ext2 /dev/sda1 /mnt/newvar

※ここで気を利かせて”ext3”などと書くとNG
(フォーマット時に-jオプションが指定されていればOK)

ディレクトリのコピー
#cd /var
#tar cvf - . | tar xvf - -C /mnt/newvar

・/etc/fstabの修正
/dev/sda1 /var ext2 defaults 1 2


※ここも気を利かせて”ext3”などと書くとNG。
(フォーマット時に-jオプションが指定されていればOK)
※一番後ろの数字は、ブート時のチェック順で、”/”のみ1、それ以外は2だってさ


・旧ディレクトリの削除
#rm -rf /var


・もしext2で作成されたファイルシステムext3に変更するなら
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/758ext2toext3.html
http://www.atmarkit.co.jp/flinux/rensai/fs04/fs04b.html

※”/”を変更する場合は、ブートイメージの再作成が必要(らしい)

■参考サイト

@IT総合トップ > テクノロジー > Linux Square > Linux Tips Index > HDDを増設するには
@IT総合トップ > テクノロジー > Linux Square > Linux Tips Index > シングルユーザーモードで起動するには
/varの別ディスクへの移動について
@IT総合トップ > テクノロジー > Linux Square > Linux Tips Index > ext2のファイルシステムをext3に変換するには
RedHat7.2ハードディスク増設