ラベル virtualization の投稿を表示しています。 すべての投稿を表示
ラベル virtualization の投稿を表示しています。 すべての投稿を表示

2015年6月4日木曜日

KVMの環境構築、利用手順


KVM(Kernel-based Virtual Machine)を使い、Linuxの上でゲストOSを動かすための環境を構築する。
KVMはホストOS型に見えるが、Linux自体をハイパーバイザとする機能を提供する。

(関連)
VMware ESXi CU(CLI)I操作コマンド



【ホスト側での準備作業】

◆ KVMで利用するパッケージのインストール
# yum groupinstall "virtualization" "virtualization-client" "virtualization-platform" "virtualization-tools"

# libvirtd start


◆ KVMのmoduleがロードされてることの確認
# lsmod | grep kvm


◆ ゲスト用のISOを配置
# ls /iso/
Asianux-4-x86_64-dvd.iso
※もちろん、CentOSでもUbuntuでもなんでもよい


◆ KVMで外からVMにアクセスできるようにホスト側のNWの設定 
ブリッジ接続するための設定を行う。
ホストがbondingを組んでいることを想定している。

# vi /etc/sysconfig/network-scripts/ifcfg-br0
(変更点) ※IPアドレスなどはそのまま利用
DEVICE=br0
TYPE=Bridge

# vi /etc/sysconfig/network-scripts/ifcfg-bond0
(以下設定のみにする)
DEVICE=bond0
ONBOOT=yes
BRIDGE=br0

# service network restart

# service libvirtd restart

※一部バージョンでrestartが効かないバグがある
https://access.redhat.com/solutions/119783


◆ ゲストの起動・停止コントロール設定
# vim /etc/sysconfig/libvirt-guests
START_DELAY=30
ON_SHUTDOWN=shutdown
SHUTDOWN_TIMEOUT=60


◆ ゲストのanacondaの設定
# vi /iso/ks.cfg
・NW設定
  IPアドレスは未設定

・disk構成
 part /boot --fstype=ext4 --size=500
 part swap --size=2048
 part / --fstype=ext4 --grow --size=1

・package
 基本サーバ



【ゲストOSの作成(imageから作成する場合)】

◆ KVMの仮想HDDイメージの作成
# cd /var/lib/libvirt/images

# qemu-img create -f qcow2 [IMAGE NAME] [DISK SIZE]G


◆ kickstart install
利用できるオプションを確認できる。
# virt-install --os-variant list

# virt-install \
--connect qemu:///system \
--vcpus=2 \
--name [DOMAIN NAME] \
--ram=4096 \
--hvm \
--location /iso/Asianux-4-x86_64-dvd.iso  \
--os-type=Linux \
--os-variant=axs4 \
--disk=/var/lib/libvirt/images/[IMAGE NAME]],format=qcow2 \
--network bridge=br0 \
--autostart \
--noautoconsole \
--accelerate \
--keymap ja \
--initrd-inject=/iso/ks.cfg \
--extra-args='ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8'


この後、virt-install後セッションが切れるのでコンソール接続する。
対話モードになるため以下のコンソールで入る。
# virsh console [domain name]
※--noautoconsole をinstall時に抜くと不要である


◆ acpidの稼働
virshでshutdownできないためacpidを動かしておく。
# service acpid start

ネットワークの設定などのゲストの設定情報の修正は
この後のもう一つのゲストOSの作成手段後にあわせて実施する。



【ゲストOSの作成2(既にあるimageのコピーから作成する場合)】

◆ imageのコピー
IPアドレスの設定以外は基本的に実施済みである。
imageが以下にあるので、そのimageとVMの設定情報をコピーする形で作成する。

default directory:/var/lib/libvirt/images/
domain name: asianux4(VM1)
             asianux4_vm2(VM2)

# virt-clone --original [ORIGIN DOMAIN NAME] --name [COPY DOMAIN NAME] --file /var/lib/libvirt/images/[COPY IMAGE NAME]


◆ ゲストの設定情報の修正(ゲストを起動して編集する場合)
macアドレスを確認する。
# virsh list --all
# virsh dumpxml [COPY DOMAIN NAME} | grep mac

IPアドレス、MACアドレス情報を書き換える。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0

MACアドレス情報を書き換える。
# vi /etc/udev/rules.d/70-persistent-net.rules

ホスト名を書き換える。
# vi /etc/sysconfig/network

再起動して設定を確認する。
# reboot


◆ ゲストの設定情報の修正(virt-edit等を使用して編集する場合)
virt-editのツールを使うと、ゲストを落とした状態でも設定情報が変更できる。

macアドレスを確認する。
# virsh dumpxml [DOMAIN NAME] | grep mac

IPアドレス、MACアドレス情報を書き換える。
# virt-edit [DOMAIN NAME] /etc/sysconfig/network-scripts/ifcfg-eth0

MACアドレス情報を書き換える。
# virt-edit [DOMAIN NAME] /etc/udev/rules.d/70-persistent-net.rules

ホスト名を書き換える。
# virt-edit [DOMAIN NAME] /etc/sysconfig/network

起動する。
# virsh start [DOMAIN NAME]



最後にKVMを利用する上でよく利用するだろうコマンドをまとめておく。
【KVMでよく使うコマンド】

・ ゲストの一覧
停止中も表示したい場合は--allをつける。
# virsh list

・ ゲスト起動
# virsh start [DOMAIN NAME]

・ consoleでゲストへ接続
途中でターミナルが落ちたりすると接続したままになってしまうので注意。
consoleは1ゲストに対して1consoleしかつなげられない模様。
# virsh console [DOMAIN NAME]

・ ゲストの停止
acpidが起動してないと操作不可
# virsh shutdown [DOMAIN NAME]

・ ゲストの強制停止
# virsh destroy [DOMAIN NAME]

・ DOMAINの[未]定義
# virsh [un]define [DOMAIN NAME]

・ 仮想化サービスライブラリの起動スクリプト
console接続がログインしたまま切れてしまうと、
こちらをrestartしないといけない。
# service libvirtd start



2015年2月24日火曜日

VMware ESXi CU(CLI)I操作コマンド


【目的】
VMwareのハイパーバイザーとゲスト(仮想)OSを運用するために
最低限必要な操作を覚えておく.

ハイパーバイザー側で、SSHとESXi Shellを有効にし、
そこへSSHでログイン後、ESXi Shellを使う.
vSphere Clientはここでは扱わない.



【構成】
仮想マシンVMware ESXiのハイパーバイザー上に
ゲスト(仮想)OSを2台インストールしているものとする.

ハイパーバイザー   : server10
ゲスト1          : server11
ゲスト2          : server12

ハイパーバイザーserver10にSSHログインしシェルからコマンドを
発行できる状態にいることを前提として話を進める.
# ssh server10



【利用可能なコマンドの一覧の出力】
(ゲスト側)
# vim-cmd vmsvc

(ホスト側)
# vim-cmd hostsvc



【ゲストのID[Vmid]確認】
# vim-cmd vmsvc/getallvms
Vmid  Name      File          Guest OS               Version         Annotation
1     server11  [datastore1]  server11/server11.vmx  centos64Guest   vmx-08
2     server12  [datastore1]  server12/server12.vmx  centos64Guest   vmx-08

1カラム目がVmidである.
Annotationは仮想マシンのバージョンである.



【電源操作】
(ゲスト側)
電源の状態確認.
# vim-cmd vmsvc/power.getstate [Vmid]
Powered on

仮想マシンの電源オフ.
# vim-cmd vmsvc/power.off [Vmid]

仮想マシンの電源オン.
# vim-cmd vmsvc/power.on [Vmid] 


(ホスト側)
ホスト自体を停止する場合は、下の手順をとる必要がある.
①ゲストを全てシャットダウン
②ホストをメンテナンスモードに移行
③ホストの停止
起動はこの逆である.


①ゲストを全てシャットダウン
省略.

②ホストをメンテナンスモードに移行
メンテナンスモードの状態確認(Enabledがメンテナンスができる状態である).
# esxcli system maintenanceMode get
Disabled
 
メンテナンスモードへの移行.
# esxcli system maintenanceMode set --enable=true
解除時はtrueをfalseにする(ホストの起動後には戻すこと).
-e true と指示を出してもよい.

③ホストの停止
停止.
# esxcli system shutdown poweroff -r [コメント(必須)]

再起動
# esxcli system shutdown reboot -r [コメント(必須)]



【ハイパ―バイザーのディスク容量確認】
linuxで使うようなコマンドが利用できる.

# df -h
Filesystem   Size   Used Available Use% Mounted on
VMFS-5       1.1T 991.8G    118.2G  89% /vmfs/volumes/datastore1
vfat         4.0G  13.8M      4.0G   0% /vmfs/volumes/5458c23d-93756f1e-2fdc-40a8f02cbb04
vfat       249.7M 176.5M     73.2M  71% /vmfs/volumes/e5a15673-d8ec8065-884c-3744e3282dfe
vfat       249.7M   8.0K    249.7M   0% /vmfs/volumes/666a3e7d-311f17a5-6f72-d483246179ff
vfat       285.8M 192.6M     93.2M  67% /vmfs/volumes/5458c236-49d94e6c-955e-40a8f02cbb04


VMFSにゲスト、スナップショットなどが作成される.
/vmfs/volumes/datastore1/[該当仮想マシン名]/

各vfatの領域がそれぞれのゲストではない.
例えば、/var/tmp/の実ディレクトリはここである.
/vmfs/volumes/5458c23d-93756f1e-2fdc-40a8f02cbb04/var/tmp



【vmの統計情報】
linuxでいうところのtopコマンドのような出力を出すことができる.
各カラムの見方はマニュアルの通りである.
# esxtop -a

ファイルに出力する場合は以下のようにすればよい.
定期的にtopが出力する結果を10回分保存する.
# esxtop -n 10 -b > /var/tmp/output.txt

-b : Batch mode
-n : Number of iterations limit
※topと使い方も同じなので詳細はman topで確認すること.



【ゲストのスナップショット操作】
設定次第だが、ディフォルトでは以下に作成される.
/vmfs/volumes/datastore1/[該当仮想マシン名]/

スナップショットの作成.
# vim-cmd vmsvc/snapshot.create [Vmid] [スナップショット名]

スナップショット名、スナップショットIDの確認.
# vim-cmd vmsvc/snapshot.get [Vmid]

該当スナップショット状態への移動.
# vim-cmd vmsvc/snapshot.revert [Vmid] [スナップショットID]



【一般的な各種設定、また起動方法、設定確認】
(ntpd)
# vi /etc/ntp.conf
# /etc/init.d/ntpd restart

(sshd)
# vi /etc/ssh/sshd_config
# /etc/init.d/sshd restart

(snmp, snmptrap)
# vi /etc/vmware/snmp.xml
# /etc/init.d/snmpd restart
# esxcli system snmp get

(loglotate)
# vi /etc/vmsyslog.conf
# esxcli system syslog config get



【ハードウェアのステータス確認】
# vim-cmd hostsvc/hostsummary | grep -i key



【ハイパ―バイザーのログ確認】
この配下にsyslogなどが保存される.
# ls /scratch/log/syslog.log



【HW(ハードウェア)との連携】
HPサーバを利用している場合
ESXi用のいくつかコマンドが使用可能となる.
# /opt/hp/tools/hponcfg --help
(参考)
HP VMware Utilities User Guide


また、Gen8以降のサーバを使っていれば、 
Agentless Management Service(AMS)が利用可能となる.
ホストOSがないハイパーバイザーを使う状況でも
ハードウェアコアコンポーネントの監視やアラートを管理できるようになる.
(参考)
Agentless Management Service (AMS) のインストール方法
HP Agentless Management の概要



【VMware Toolsの導入】
本記事内では、VmWare vSphere Clientを使わないことを前提としていたが、
ハイパーバイザーのsshサーバが突然ダウンするという事態に見舞われた.
22/tcpが利用不可となっても、443/tcpポートが開いているため、
そこからVmWareを管理できるかと思ったがブラウザ経由で触ることはできなかった.
VmWare vSphere Clientからしか操作はできない.

こういった事態への備えとしてVmWare vSphere Clientも用意しておいたほうがいい.
ただ、そのクライアントがあっても、VMware Toolsがゲスト側になければ
電源の上げ下げすらできない.
VMWareを使うのだればゲストへ事前に導入しておくべきだろう.

# cd /usr/local/src/

# wget http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub
※Red Hat系64bitを想定している

# rpm --import VMWARE-PACKAGING-GPG-RSA-KEY.pub

# vi /etc/yum.repos.d/vmware-tools.repo
[vmware-tools]
name=VMware Tools for CentOS (or OEL) $releasever - $basearch
baseurl=http://packages.vmware.com/tools/esx/5.0u2/rhel6/x86_64
enabled=1
gpgcheck=1
gpgkey=file:///srv/crypto/VMWARE-PACKAGING-GPG-RSA-KEY.pub

(ゲストOSがGUIを利用している場合)
# yum install vmware-tools-esx

(ゲストOSがGUIを利用していない場合)
# yum install vmware-tools-esx-nox

最後に起動する.
# /etc/init.d/vmware-tools-services start



(関連)
KVMの利用手順