KVM仮想化環境構築 - その3
CentOSをインストールしたので、次はネットワークとストレージの設定をします。
ネットワーク設定
せっかくNICが2つあるのでbondingを試してみます。いや寧ろbondingしたくて余分にNIC買いました(゚∀゚)。イメージとしては下の絵のように構成します。eth[0-1]は物理NIC、bond0はbondingインターフェース、br0は仮想ブリッジ、vnet*は仮想マシン用の仮想NICです。この構成にした場合、ゲストOSはホスト側と同一セグメントのネットワークを利用できます。
vnetは仮想マシンと同じタイミングで作成されるものなので今回はeth、bond、brだけ作ります。
![f:id:catWithScarf:20120211000334p:image:w480 f:id:catWithScarf:20120211000334p:image:w480](https://cdn-ak.f.st-hatena.com/images/fotolife/c/catWithScarf/20120211/20120211000334.png)
NetworkManagerはKVMで使うブリッジと相性が合わないのでインストールされている場合は無効にします。
[root@cathouse ~]# chkconfig NetworkManager offeth0の設定ファイル編集。CentOS(RHEL)では6系からMACアドレスを別ファイル(/etc/udev/rules.d/70-persistent-net.rules)で管理するようになったのでHWADDRは書かなくて大丈夫です。
[root@cathouse ~]# chkconfig network on
[root@cathouse ~]# service NetworkManager stop
[root@cathouse ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0eth1の設定ファイル編集。ほぼ同じですね。
DEVICE="eth0"
ONBOOT="yes"
BOOTPROTO="none"
MASTER="bond0"
SLAVE="yes"
[root@cathouse ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1続いてbond0の設定ファイル編集。ここではbondingのモードを6に指定しています。このモードではNICの負荷に応じて送信や受信で使用されるインターフェースを切り替えてくれます。ごついネットワーク環境を持っていない方はモード1、5、6あたりが無難です。詳しく知りたい方はこことか見てみましょう。
DEVICE="eth1"
ONBOOT="yes"
BOOTPROTO="none"
MASTER="bond0"
SLAVE="yes"
[root@cathouse ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0次はbr0の設定ファイル編集です。アドレスを固定で指定しています。この部分は環境に合わせて変えてください。
DEVICE="bond0"
ONBOOT="yes"
BOOTPROTO="none"
BONDING_OPTS="mode=6 miimon=100 updelay=5000"
BRIDGE="br0"
[root@cathouse ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0DHCPでアドレスの自動設定をしたい場合は下のようにします。
DEVICE="br0"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="192.168.11.5"
NETMASK="255.255.255.0"
GATEWAY="192.168.11.1"
NETWORK="192.168.11.0"
BROADCAST="192.168.11.255"
TYPE="Bridge"
DEVICE="br0"ちなみにここでbr0にIPアドレスを与えるのは必須ではありません。IPアドレスを与えなかった場合、ホストへのネットワークアクセスはできなくなりますが、それでもゲストOSにIPアドレスをふったりインターネットにアクセスさせることはできます。
ONBOOT="yes"
BOOTPROTO="dhcp"
TYPE="Bridge"
続いてカーネルモジュール設定
[root@cathouse ~]# vi /etc/modprobe.d/bonding.conf設定ファイルの編集が終わったので、ネットワークサービスを再起動します。
alias bond0 bonding
[root@cathouse ~]# service network restartbondingがうまくいっているか確認。
Shutting down interface br0: [ OK ]
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
Bringing up interface br0: [ OK ]
[root@cathouse ~]# cat /proc/net/bonding/bond0大丈夫そうです。ping打ってみたり片系のネットワークケーブル抜いてみたりして正しく構成されているか確認してみましょう。
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)Bonding Mode: adaptive load balancing
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 5000
Down Delay (ms): 0Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 98:4b:e1:06:c3:cd
Slave queue ID: 0Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:1b:21:c5:f1:15
Slave queue ID: 0
ホストにDNSの参照先を指定していなかったのでresolv.confを編集します。今回はGoogleのDNSサーバを指定してみました。
[root@cathouse ~]# vi /etc/resolv.confネットワークの設定おしまい。
nameserver 8.8.8.8
nameserver 8.8.4.4
ストレージ設定
まずはハードディスクが認識されているか確認。[root@cathouse ~]# parted -l無事に2つとも認識されているようです。続いてパーティションを作成します。
Model: ATA WDC WD20EARS-00M (scsi) ←これと
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gptNumber Start End Size File system Name Flags
Model: ATA WDC WD20EARS-00M (scsi) ←これ
Disk /dev/sdb: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gptNumber Start End Size File system Name Flags
Model: I-O DATA USB Flash Disk (scsi)
Disk /dev/sdc: 8020MB
Sector size (logical/physical): 512B/512B
Partition Table: msdosNumber Start End Size Type File system Flags
1 1049kB 525MB 524MB primary ext4 boot
2 525MB 8020MB 7494MB primary lvm
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg_cathouse-lv_swap: 3746MB
Sector size (logical/physical): 512B/512B
Partition Table: loopNumber Start End Size File system Flags
1 0.00B 3746MB 3746MB linux-swap(v1)
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/vg_cathouse-lv_root: 3746MB
Sector size (logical/physical): 512B/512B
Partition Table: loopNumber Start End Size File system Flags
1 0.00B 3746MB 3746MB ext4
[root@cathouse ~]# parted /dev/sda作成したパーティションをフォーマットします。ファイルシステムはext4。
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart 1 ext4 1 -1 ←ディスク(ほぼ)全部を使ってパーティション作成
(parted) quit
Information: You may need to update /etc/fstab.
2TBもあると中々時間かかりますね。
[root@cathouse ~]# mkfs.ext4 /dev/sda1パーティションのUUIDを確認。
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
122101760 inodes, 488378112 blocks
24418905 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
14905 block groups
32768 blocks per group, 32768 fragments per group
8192 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, 214990848Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@cathouse ~]# blkid /dev/sda1マウント先のディレクトリを作成。
/dev/sda1: UUID="00680288-1a0f-49b2-b2d2-6219b8ab47c7" TYPE="ext4"
[root@cathouse ~]# mkdir /mnt/kvmdatafstabに設定を追記。UUIDのところは先ほどblkidで調べたものをコピペします。
[root@cathouse ~]# echo UUID=00680288-1a0f-49b2-b2d2-6219b8ab47c7 /mnt/kvmdata ext4 defaults 0 0 >> /etc/fstabfstabに書き込んだ設定を反映。
[root@cathouse ~]# mount -a正常にマウントされました。これでストレージの設定は終了です。
[root@cathouse ~]# df -hRedhatはKVMによる仮想化環境ではI/Oスケジューラの設定をdeadlineにすることを推奨しています。ちなみに初期状態はcfq。
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_cathouse-lv_root
3.5G 3.0G 346M 90% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sdc1 485M 63M 398M 14% /boot
/dev/sda1 1.8T 196M 1.7T 1% /mnt/kvmdata
[root@cathouse ~]# cat /sys/block/sda/queue/scheduler変更するにはgrub.confファイルを編集します(下の赤字部分を追記)。
noop anticipatory deadline [cfq]
[root@cathouse ~]# vi /boot/grub/grub.conf再起動することでdeadlineに変更されます。
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_cathouse-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sdc
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-220.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/vg_cathouse-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_cathouse/lv_root rd_NO_MD rd_LVM_LV=vg_cathouse/lv_swap SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 quiet rd_NO_DM elevator=deadline
initrd /initramfs-2.6.32-220.el6.x86_64.img
[root@cathouse ~]# cat /sys/block/sda/queue/scheduler次回はvirt-manager(vSphere Clientみたいなもの)の準備です。
noop anticipatory [deadline] cfq