Upload
-togakushi
View
3.151
Download
0
Embed Size (px)
Citation preview
Linux KVM+
Control Groups+
OMAKE2013/01/31 #ssmjp @togakushi
2
もくじ
● KVMってなぁに?● cgroupってなぁに?● 本日のデモ● おまけ
3
Linux KVM
● Linux Kernel-based Virtual Machine– Linuxの仮想化基盤– エミュレーションのほとんどはQEMUで提供– 1ゲスト =1プロセスで動作
4
Linux KVM
● Linux Kernel-based Virtual Machine– Linuxの仮想化基盤– エミュレーションのほとんどはQEMUで提供– 1ゲスト =1プロセスで動作
5
Control Groups(cgroup)
● Linuxのリソースを管理 (制限とレポート )する仕組み– メモリや CPUなどのリソース毎の Subsystemに分けて管理
– 管理する単位 (グループ )でプロセスを登録 (タスク )
– /procと同様に仮想ファイルシステムを使用● echo/cat/mkdir/rmdirで設定可能
6
Subsystems(一部 )● Blkio
– 物理ドライブ やブロックデバイスへの入出力を制限● Cpuset
– CPUのリソースを制限● Freezer
– タスクの一時停止/再開● Memory
– メモリのリソースを制限● net_cls
– パケットにタグを付ける ( トラフィックコントローラ ( tc) がパケットを識別できるようにする )
7
libcgroup● cgroupに対するアクセス手段 (タスク作成・設定読み取り・設定書き込み )を提供するライブラリ群
– CentOS● libcgroup: Tools and libraries to control and monitor control groups
– ubuntu● cgroup-lite - Light-weight package to set up cgroups at system boot● cgroup-bin - Tools to control and monitor control groups● libcgroup1 - Library to control and monitor control groups
8
提供されるコマンド群 (抜粋 )
● lssubsys– 利用できるサブシステムの表示
● lscgroup– タスクグループ名の一覧
● cgget– パラメータの取得
● cgset– パラメータの設定
9
提供されるコマンド群 (抜粋 )
● cgcreate– タスクグループの作成
● cgdelete– タスクグループの削除
● cgexec– タスクグループに割り当ててコマンド実行
● cgclassify– すでに実行しているコマンドをタスクグループに追加
10
cgconfig.conf
● libcgroupの設定ファイル– サブシステムのマウントポイント– 作成するタスクグループ– タスクに設定するパラメータ
11
cgrules.conf
● 実行されたコマンド (プロセス )を自動でタスクグループに割り当てるルールを記述– ユーザやグループ– プロセス名
12
libvirt+libcgroup
● KVM→1VM=1プロセス● cgroup→プロセスで管理
2つとも入っていたら
自動的にタスクグループ作る!
13
libvirtのタスクグループ
● /sys/fs/cgroup/<subsystem>/libvirt/qemu– ディストリビューションによってマウントポイントは違う
● ...(省略 ).../libvirt/qemu/<VM名 >– VMを起動させたら自動的に VM名のサブグループが作成され、 VMのプロセスが登録される
– 固定された名前が割り当てられるので、予めcgconfig.confで設定しておける
14
本日のデモ
15
blkioでVMの書き込み制限
● 転送速度の制限– blkio.throttle.write_bps_device
– blkio.throttle.read_bps_device
● IOPSの制限– blkio.throttle.write_iops_device
– blkio.throttle.read_iops_device
16
cgconfig.confに書く場合
● VM01が sdaを使用している● 読み込み /書き込みを 10MB/sに制限
group libvirt/qemu/VM01 { blkio { blkio.throttle.read_bps_device = "8:0 10000000"; blkio.throttle.write_bps_device = "8:0 10000000"; }}
17
freezerでVMの一時停止
● freezer.state– THAWED:動いてる– FREEZING:止まっている– Virshからは動いている様にみえる
● 料金未払いのユーザの VMを止めるとか● LVMスナップショットを作ってみるとか
18
LVMスナップショット
● 止めてスナップショット作ってすぐ動かす
# cgset -r freezer.state=FROZEN libvirt/qemu/${VM_NAME}# lvcreate -s -L 1G -n ${SNAP_IMG} ${TARGET_IMG}# cgset -r freezer.state=THAWED libvirt/qemu/${VM_NAME}
19
OMAKE
20
ディスクイメージのマウント
● パーティション情報が含まれている raw– loopback→kpartx
– qemu-nbd
● raw以外のディスクイメージ (qcow2とか )– guestfish
– qemu-nbd
21
qemu-nbd
● nbdにマッピング
● そのままマウント可能
% sudo qemu-nbd -c /dev/nbd0 <Disk-img>% ls -l /dev/nbd0*brw-rw---- 1 root disk 43, 0 Jan 31 08:17 /dev/nbd0brw-rw---- 1 root disk 43, 1 Jan 31 08:17 /dev/nbd0p1brw-rw---- 1 root disk 43, 2 Jan 31 08:17 /dev/nbd0p2
% sudo mount /dev/nbd0p1 /mnt…% sudo qemu-nbd -d /dev/nbd0
22
LVM領域のマウント
● デバイスにマッピング (nbd / loop)– マッピング完了時点で VGが見えるようになる– 見えなければ vgscan
– VGの名前がカブてったら vgchangeで変える● Lvscanで LVが確認できる
– Inactiveになっていたら vgchangeで activeに– マウントできるようになる
23
参考資料
● リソース管理ガイド– https://access.redhat.com/knowledge/docs/ja-JP/R
ed_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/