SlideShare a Scribd company logo
Linux KVM
       +
Control Groups
       +
    OMAKE
         2013/01/31 #ssmjp @togakushi
もくじ
●   KVM ってなぁに?
●   cgroup ってなぁに?
●   本日のデモ
●   おまけ




                     2
Linux KVM
●   Linux Kernel-based Virtual Machine
    –   Linux の仮想化基盤
    –   エミュレーションのほとんどは QEMU で提供
    –   1 ゲスト =1 プロセスで動作




                                         3
Linux KVM
●   Linux Kernel-based Virtual Machine
    –   Linux の仮想化基盤
    –   エミュレーションのほとんどは QEMU で提供
    –   1 ゲスト =1 プロセスで動作




                                         4
Control Groups(cgroup)
●   Linux のリソースを管理 ( 制限とレポート ) す
    る仕組み
    –   メモリや CPU などのリソース毎の Subsystem に
        分けて管理
    –   管理する単位 ( グループ ) でプロセスを登録 ( タス
        ク)
    –   /proc と同様に仮想ファイルシステムを使用
        ●   echo/cat/mkdir/rmdir で設定可能



                                         5
Subsystems( 一部 )
●   Blkio
    –   物理ドライブ やブロックデバイスへの入出力を制限
●   Cpuset
    –   CPU のリソースを制限
●   Freezer
    –   タスクの一時停止/再開
●   Memory
    –   メモリのリソースを制限
●   net_cls
    –   パケットにタグを付ける ( トラフィックコントローラ ( tc) がパケットを
        識別できるようにする )


                                                  6
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




                                                                                   7
提供されるコマンド群 ( 抜粋 )
●   lssubsys
    –   利用できるサブシステムの表示
●   lscgroup
    –   タスクグループ名の一覧
●   cgget
    –   パラメータの取得
●   cgset
    –   パラメータの設定


                            8
提供されるコマンド群 ( 抜粋 )
●   cgcreate
    –   タスクグループの作成
●   cgdelete
    –   タスクグループの削除
●   cgexec
    –   タスクグループに割り当ててコマンド実行
●   cgclassify
    –   すでに実行しているコマンドをタスクグループに追加


                                   9
cgconfig.conf
●   libcgroup の設定ファイル
    –   サブシステムのマウントポイント
    –   作成するタスクグループ
    –   タスクに設定するパラメータ




                            10
cgrules.conf
●   実行されたコマンド ( プロセス ) を自動でタス
    クグループに割り当てるルールを記述
    –   ユーザやグループ
    –   プロセス名




                                11
libvirt+libcgroup
●   KVM→1VM=1 プロセス
●   cgroup→ プロセスで管理


      2つとも入っていたら
    自動的にタスクグループ作る!


                             12
libvirt のタスクグループ
●   /sys/fs/cgroup/<subsystem>/libvirt/qemu
    –   ディストリビューションによってマウントポイン
        トは違う
●   ...( 省略 ).../libvirt/qemu/<VM 名 >
    –   VM を起動させたら自動的に VM 名のサブグルー
        プが作成され、 VM のプロセスが登録される
    –   固定された名前が割り当てられるので、予め
        cgconfig.conf で設定しておける


                                              13
本日のデモ




        14
blkio で VM の書き込み制限
●   転送速度の制限
    –   blkio.throttle.write_bps_device
    –   blkio.throttle.read_bps_device
●   IOPS の制限
    –   blkio.throttle.write_iops_device
    –   blkio.throttle.read_iops_device




                                           15
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";
      }
    }



                                                            16
freezer で VM の一時停止
●   freezer.state
    –   THAWED :動いてる
    –   FREEZING :止まっている
    –   Virsh からは動いている様にみえる

●   料金未払いのユーザの VM を止めるとか
●   LVM スナップショットを作ってみるとか


                              17
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}




                                                              18
OMAKE




        19
ディスクイメージのマウント
●   パーティション情報が含まれている raw
    –   loopback→kpartx
    –   qemu-nbd
●   raw 以外のディスクイメージ (qcow2 とか )
    –   guestfish
    –   qemu-nbd




                                  20
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/nbd0
brw-rw---- 1 root disk 43, 1 Jan 31 08:17 /dev/nbd0p1
brw-rw---- 1 root disk 43, 2 Jan 31 08:17 /dev/nbd0p2

●   そのままマウント可能
% sudo mount /dev/nbd0p1 /mnt
…
% sudo qemu-nbd -d /dev/nbd0
                                                        21
LVM 領域のマウント
●   デバイスにマッピング (nbd / loop)
    –   マッピング完了時点で VG が見えるようになる
    –   見えなければ vgscan
    –   VG の名前がカブてったら vgchange で変える
●   Lvscan で LV が確認できる
    –   Inactive になっていたら vgchange で active に
    –   マウントできるようになる


                                               22
参考資料
●   リソース管理ガイド
    –   https://access.redhat.com/knowledge/docs/ja-JP/R
        ed_Hat_Enterprise_Linux/6/html/Resource_Manag
        ement_Guide/




                                                           23

More Related Content

PDF
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
 
PDF
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
PPTX
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
PDF
Linux Profiling at Netflix
Brendan Gregg
 
PDF
EBPF and Linux Networking
PLUMgrid
 
PDF
OpenStack with SR-IOV
Hideki Saito
 
PDF
Linux Locking Mechanisms
Kernel TLV
 
PDF
USENIX ATC 2017: Visualizing Performance with Flame Graphs
Brendan Gregg
 
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
 
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
Linux Profiling at Netflix
Brendan Gregg
 
EBPF and Linux Networking
PLUMgrid
 
OpenStack with SR-IOV
Hideki Saito
 
Linux Locking Mechanisms
Kernel TLV
 
USENIX ATC 2017: Visualizing Performance with Flame Graphs
Brendan Gregg
 

What's hot (20)

PDF
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
Yasunori Goto
 
PPTX
地理分散DBについて
Kumazaki Hiroki
 
PPTX
Container Networking Deep Dive
Hirofumi Ichihara
 
PDF
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
PDF
MySQLバックアップの基本
yoyamasaki
 
PDF
シンプルでシステマチックな Linux 性能分析方法
Yohei Azekatsu
 
PDF
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
ScaleGrid.io
 
PDF
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Adrian Huang
 
PDF
Group Replication in MySQL 8.0 ( A Walk Through )
Mydbops
 
PDF
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
PDF
PostgreSQL DBのバックアップを一元化しよう
Yukiya Hayashi
 
PDF
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
PDF
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Takashi Takizawa
 
PDF
Ixgbe internals
SUSE Labs Taipei
 
PDF
Innodb Deep Talk #2 でお話したスライド
Yasufumi Kinoshita
 
PDF
Ethernetの受信処理
Takuya ASADA
 
PDF
CXL_説明_公開用.pdf
Yasunori Goto
 
PDF
LISA2019 Linux Systems Performance
Brendan Gregg
 
PDF
InfiniBand on Debian
Taisuke Yamada
 
PDF
Security Monitoring with eBPF
Alex Maestretti
 
The Forefront of the Development for NVDIMM on Linux Kernel (Linux Plumbers c...
Yasunori Goto
 
地理分散DBについて
Kumazaki Hiroki
 
Container Networking Deep Dive
Hirofumi Ichihara
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
NTT DATA Technology & Innovation
 
MySQLバックアップの基本
yoyamasaki
 
シンプルでシステマチックな Linux 性能分析方法
Yohei Azekatsu
 
What’s the Best PostgreSQL High Availability Framework? PAF vs. repmgr vs. Pa...
ScaleGrid.io
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Adrian Huang
 
Group Replication in MySQL 8.0 ( A Walk Through )
Mydbops
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
VirtualTech Japan Inc.
 
PostgreSQL DBのバックアップを一元化しよう
Yukiya Hayashi
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
NTT DATA Technology & Innovation
 
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Takashi Takizawa
 
Ixgbe internals
SUSE Labs Taipei
 
Innodb Deep Talk #2 でお話したスライド
Yasufumi Kinoshita
 
Ethernetの受信処理
Takuya ASADA
 
CXL_説明_公開用.pdf
Yasunori Goto
 
LISA2019 Linux Systems Performance
Brendan Gregg
 
InfiniBand on Debian
Taisuke Yamada
 
Security Monitoring with eBPF
Alex Maestretti
 
Ad

Similar to KVM+cgroup (20)

ODP
Bhyve code reading
Takuya ASADA
 
PPTX
Functions
do_aki
 
PDF
Lxc cf201207-presen
Kouhei Maeda
 
PDF
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
 
PDF
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
tshiroyama
 
PDF
BHyVeってなんや
Takuya ASADA
 
PDF
Osc2009 Do Xen Hara
Kazuhisa Hara
 
PDF
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
 
PDF
Kyoto.pm 20120818-hogem
hogem
 
ODP
Bhyve Internals
Takuya ASADA
 
PDF
Xen Nic
Kazuhisa Hara
 
PDF
スタート低レイヤー #0
Kiwamu Okabe
 
PPTX
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
Preferred Networks
 
PDF
Lxc で始めるケチケチ仮想化生活?!
Etsuji Nakai
 
PDF
Personal Cloud Automation
Etsuji Nakai
 
PDF
initramfsについて
Kazuhiro Nishiyama
 
PDF
qpstudy05 lignhing talk - virtio
Takeshi HASEGAWA
 
PDF
qemuのriscv64にDebianを入れてみた
Kazuhiro Nishiyama
 
PDF
Xenとzfsで作る家庭内VDIサーバ
zgock
 
PDF
NGS速習コース:UNIXの基礎の理解/Linux導入
Takeru Nakazato
 
Bhyve code reading
Takuya ASADA
 
Functions
do_aki
 
Lxc cf201207-presen
Kouhei Maeda
 
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
 
Backdoor!! vmware-tools と 統合サービスに見るハイパーバイザの呼び出し方
tshiroyama
 
BHyVeってなんや
Takuya ASADA
 
Osc2009 Do Xen Hara
Kazuhisa Hara
 
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
 
Kyoto.pm 20120818-hogem
hogem
 
Bhyve Internals
Takuya ASADA
 
Xen Nic
Kazuhisa Hara
 
スタート低レイヤー #0
Kiwamu Okabe
 
PFIセミナーH271022 ~コマンドを叩いて遊ぶ コンテナ仮想、その裏側~
Preferred Networks
 
Lxc で始めるケチケチ仮想化生活?!
Etsuji Nakai
 
Personal Cloud Automation
Etsuji Nakai
 
initramfsについて
Kazuhiro Nishiyama
 
qpstudy05 lignhing talk - virtio
Takeshi HASEGAWA
 
qemuのriscv64にDebianを入れてみた
Kazuhiro Nishiyama
 
Xenとzfsで作る家庭内VDIサーバ
zgock
 
NGS速習コース:UNIXの基礎の理解/Linux導入
Takeru Nakazato
 
Ad

More from (^-^) togakushi (16)

PPTX
成績管理の話 (続き)
(^-^) togakushi
 
PDF
ささみ麻雀部の紹介
(^-^) togakushi
 
PDF
ファイナル・ファンタジー2のデータを解析してみる
(^-^) togakushi
 
PDF
手順書の話 Ver.0.3.0
(^-^) togakushi
 
PDF
仕事の捉え方の話 #ssmjp
(^-^) togakushi
 
ODP
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
(^-^) togakushi
 
PDF
Janog33.5
(^-^) togakushi
 
ODP
現場で役に立たないsudoの使い方
(^-^) togakushi
 
ODP
sshdのお話
(^-^) togakushi
 
ODP
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
 
PDF
SSH力をつかおう
(^-^) togakushi
 
PDF
jenkinsで遊ぶ
(^-^) togakushi
 
PDF
Pakena #9
(^-^) togakushi
 
PDF
SSH力をつけよう
(^-^) togakushi
 
PDF
Sfstudy #2
(^-^) togakushi
 
PPT
ひとりsphinx
(^-^) togakushi
 
成績管理の話 (続き)
(^-^) togakushi
 
ささみ麻雀部の紹介
(^-^) togakushi
 
ファイナル・ファンタジー2のデータを解析してみる
(^-^) togakushi
 
手順書の話 Ver.0.3.0
(^-^) togakushi
 
仕事の捉え方の話 #ssmjp
(^-^) togakushi
 
OpenSSH User EnumerationTime-Based Attack と Python-paramiko
(^-^) togakushi
 
Janog33.5
(^-^) togakushi
 
現場で役に立たないsudoの使い方
(^-^) togakushi
 
sshdのお話
(^-^) togakushi
 
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
 
SSH力をつかおう
(^-^) togakushi
 
jenkinsで遊ぶ
(^-^) togakushi
 
Pakena #9
(^-^) togakushi
 
SSH力をつけよう
(^-^) togakushi
 
Sfstudy #2
(^-^) togakushi
 
ひとりsphinx
(^-^) togakushi
 

KVM+cgroup

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