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

What's hot

“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
Brocade
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
NAVER D2
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
VirtualTech Japan Inc.
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
Uptime Technologies LLC (JP)
 
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
hdais
 
Monitoring in CloudStack
Monitoring in CloudStackMonitoring in CloudStack
Monitoring in CloudStack
ShapeBlue
 
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
VirtualTech Japan Inc.
 
Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編
fj_staoru_takeuchi
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
さくらインターネット株式会社
 
Ws2012フェールオーバークラスタリングdeep dive 130802
Ws2012フェールオーバークラスタリングdeep dive 130802Ws2012フェールオーバークラスタリングdeep dive 130802
Ws2012フェールオーバークラスタリングdeep dive 130802
wintechq
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)Takeshi HASEGAWA
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会Etsuji Nakai
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
Shohei Okada
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
Kentaro Ebisawa
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
Akihiro Suda
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
VirtualTech Japan Inc.
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
KeioOyama
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
VirtualTech Japan Inc.
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
Takuya ASADA
 

What's hot (20)

“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
“見てわかる” ファイバーチャネルSAN基礎講座(第1弾)~まず理解しよう! 基本の “キ”~
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
 
いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理いまさら聞けないPostgreSQL運用管理
いまさら聞けないPostgreSQL運用管理
 
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
 
Monitoring in CloudStack
Monitoring in CloudStackMonitoring in CloudStack
Monitoring in CloudStack
 
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
 
Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編Btrfsの基礎 part1 機能編
Btrfsの基礎 part1 機能編
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
Ws2012フェールオーバークラスタリングdeep dive 130802
Ws2012フェールオーバークラスタリングdeep dive 130802Ws2012フェールオーバークラスタリングdeep dive 130802
Ws2012フェールオーバークラスタリングdeep dive 130802
 
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
 
#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
 
Rootlessコンテナ
RootlessコンテナRootlessコンテナ
Rootlessコンテナ
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 

Similar to KVM+cgroup

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
Kouhei Maeda
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみたkoedoyoshida
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
Kohei KaiGai
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
l_b__
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
Masahito Zembutsu
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
Akihiro Kitada
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
Satoshi Shimazaki
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
Taisuke Yamada
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
Bhyve code reading
Bhyve code readingBhyve code reading
Bhyve code readingTakuya ASADA
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
Masahito Zembutsu
 

Similar to KVM+cgroup (20)

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
Lvmを縮小してみた
Lvmを縮小してみたLvmを縮小してみた
Lvmを縮小してみた
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
 
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
Open VZ
Open VZOpen VZ
Open VZ
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
Bhyve code reading
Bhyve code readingBhyve code reading
Bhyve code reading
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-clusterKubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 

More from (^-^) togakushi

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

More from (^-^) togakushi (14)

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

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