#author("2019-01-30T08:09:06+00:00","default:sysosa","sysosa")
#author("2019-01-30T08:13:53+00:00","default:sysosa","sysosa")
&color(white,blue){留意};
/dev/kvmの所有者に注意
[[libvirt]]にて、ユーザ qemu をlibvirtdの担当にさせたのなら /dev/kvm のグループパーミッションは qemu にしないとだめみたい
#code(nonumber){{
[root@c ~]# ls -l /dev/kvm
crw-rw---- 1 root qemu 10, 232  1月 31 23:48 /dev/kvm
[root@c ~]#
}}


[[libvirt/仮想マシン作成/windowsPC]]

***qemu-imgでディスクイメージを作成 [#u0e74b8b]
ストレージを直接指定するなら、まず&color(magenta){qemu-img};コマンドで仮想マシンのディスクイメージを作ります
ここでは、場所を /opt/kvm として、作成するイメージは qcow2 形式で 32GBほどとします。
#code(nonumber){{
[root@c ~]# mkdir /opt/kvm

[root@c ~]# qemu-img create -f qcow2  /opt/kvm/HDD.qcow2.img 32G
Formatting '/opt/kvm/HDD.qcow2.img', fmt=qcow2 size=34359738368 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16

[root@c ~]#
[root@c ~]# ls -lh /opt/kvm/HDD.qcow2.img
-rw-r--r-- 1 root root 193K  2月  1 22:21 /opt/kvm/HDD.qcow2.img
[root@c ~]#
}}

一応確認してみます
#code(nonumber){{
[root@c ~]# qemu-img info /opt/kvm/HDD.qcow2.img
image: /opt/kvm/HDD.qcow2.img
file format: qcow2
virtual size: 32G (34359738368 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
[root@c ~]#
}}

それで、CentOS7の仮想マシンを作ってみます。

***virt-installで仮想マシンを作成 [#s36e4e9f]

CentOS7の例
#code(nonumber){{
[root@c ~]# export PATH=/opt/local/bin:$PATH
[root@c ~]# export PYTHONPATH=/opt/local/lib64/python2.7/site-packages
[root@c ~]# export LD_LIBRARY_PATH=/opt/libvirt/lib

[root@c ~]# virt-install --connect qemu:///system  --virt-type kvm  --machine=pc  \
--name c20  --ram 1024  --cpu host  --vcpus=1  --description "テストOS"  --os-type linux  \
--os-variant rhel7  --boot cdrom,hd,menu=on  \
--disk path=/opt/kvm/HDD.qcow2.img,format=qcow2,bus=virtio,cache=writeback  \
--cdrom /export/CentOS-7-x86_64-DVD-1611.iso  --network bridge=br0,model=virtio  \
--graphics vnc,port=5900,listen=0.0.0.0,keymap=ja
}}

と実行すると、続く画面で下記が表記された
#code(nonumber){{
WARNING  グラフィカルコンソールに接続できません: virt-viewer がインストールされていません。'virt-viewer' パッケージをインストールしてください。
WARNING  ゲストのコンソールがないため、デフォルト値 --wait -1 を適用します。

インストールの開始中...
割り当て中 'HDD1.qcow2.img'                      | 8.0 GB  00:00:00
ドメインを作成中...                              |    0 B  00:00:00
仮想マシンのインストールが進行中です。インストールが完了するまで  を待っています。
}}

この段階で vnc で 仮想化サーバの 5900 番に繋げると、下図の様に表示される。
&ref(2017y02m01d_223035988.png,nolink);&ref(2017y02m01d_224857256.png,nolink);
このvnc画面を経由して、仮想マシンにOSをインストールします。


***仮想マシンの制御 [#e6358de5]

作成した仮想マシンを停止、起動させるには、仮想マシンに&color(orangered){acpid};がインストールされていることが必要
#code(nonumber){{
[root@c103 ~]# yum install acpid
[root@c103 ~]# systemctl enable acpid.service
[root@c103 ~]# systemctl start acpid.service
}}

こうすることで、仮想化サーバから virsh コマンドで制御可能に
#code(nonumber){{
[root@c ~]# virsh
virsh # list --all
 Id    名前                         状態
----------------------------------------------------
 5     c20                            実行中

virsh # shutdown  c20
ドメイン c20 はシャットダウン中です

virsh # start c20
ドメイン c20 が起動されました

virsh #
}}
こんな感じで。

***コマンドラインで仮想マシンを作る [#ifa16d91]
参照先
&size(10){[[https://qiita.com/jimaoka/items/d528a7f55e832982c193>+https://qiita.com/jimaoka/items/d528a7f55e832982c193]]};

コマンドラインしか利用できない環境で仮想マシンを作る
#code(nonumber){{
[root@e ~]# virsh net-destroy  default
[root@e ~]# virsh net-autostart default --disable
[root@e ~]# mkdir /kvm && cd $_
[root@e kvm]# qemu-img create -f qcow2  /kvm/ad.qcow2.img   32G

[root@e kvm]# virt-install --connect qemu:///system \
--name ad \
--vcpus 1 \
--memory 1024 \
--cpu host \
--metadata description="ad" \
--location "/kvm/CentOS-7-x86_64-Minimal-1708.iso" \
--os-variant rhel7 \
--boot cdrom,hd,menu=on  \
--disk path=/kvm/ad.qcow2.img,format=qcow2,bus=virtio,cache=writeback \
--network bridge=br0,model=virtio  \
--nographics \
--extra-args='console=tty0 console=ttyS0,115200n8' \
--hvm

}}
実行した画面で起動シーケンスが始まり、下記のような画面になる
&ref(2018y03m20d_221029322.png,nolink);
&color(red){*};&size(10){ただこれだと指値でhddを区分けできないみたい};

インストール完了後、再びコマンドラインで接続するには virsh コマンドから console で繋げる。
#code(nonumber){{
[root@e ~]# virsh
virsh # list
 Id    名前                         状態
----------------------------------------------------
 2     ad                             実行中

virsh # console  ad
ドメイン ad に接続しました
エスケープ文字は ^] です

CentOS Linux 7 (Core)
Kernel 3.10.0-693.el7.x86_64 on an x86_64

ad login:
}}

***qemuからkvm [#kadcf86f]
#code(nonumber){{
<domain type='qemu'>
 ↓
<domain type='kvm'>

<emulator>/usr/libexec/qemu-kvm</emulator>
}}

***kickstartファイルを使って [#p805d2bf]
[[kickstart]]にて自動インストールなisoを別途作って仮想マシンを作っているが、
isoを別途作成せずとも、標準提供なMinimalなisoとkickstartファイルで仮想マシンを作ってみる。

まずは、ディスクイメージを作る
#code(nonumber){{
[root@c ~]# cd /kvm/
[root@c kvm]# qemu-img create -f qcow2 i03.qcow2.img 32G
}}
そしてkickstartファイルを作る。
ここでは簡単に、「Minimal」なOSを作る。ipはdhcp由来で、HDDは/bootに512MB、swapに1GB、残りを/(root)に割り当てている
#code(nonumber){{
[root@c kvm]# vi i03.ks
cdrom
ignoredisk --only-use=vda
lang ja_JP.UTF-8
keyboard --vckeymap=jp --xlayouts='jp'
network  --bootproto=dhcp --device=eth0 --noipv6 --activate
auth --enableshadow --passalgo=sha512
rootpw --plaintext xxxxxxx
 
firstboot --disabled
firewall --disabled
selinux --disabled
eula --agreed
 
services --enabled="chronyd"
timezone Asia/Tokyo --isUtc --ntpservers=c.sybyl.local
bootloader --location=mbr --boot-drive=vda --append="net.ifnames=0"
clearpart --drives=vda --all --initlabel
part /boot --fstype="xfs" --ondisk=vda --size=512
part swap --fstype="swap" --ondisk=vda --size=1024
part / --fstype="xfs" --ondisk=vda --size=4096 --grow
part /boot/efi --fstype="efi" --ondisk=vda --size=512 --fsoptions="umask=0077,shortname=winnt"
 
reboot
 
%packages
@^minimal
@core
chrony
-biosdevname
 
%end
[root@c kvm]#
}}
作ったkickstartファイルを使って
仮想マシンを作る。
ほぼ自動でOSが構築されます
#code(nonumber){{
[root@c kvm]# virt-install --connect qemu:///system  --virt-type kvm  --machine=pc  \
--name i03  --ram 1024  --cpu host  --vcpus=1  --description "kickstart i03"  --os-type linux  \
--os-variant rhel7  --boot cdrom,hd,menu=on  \
--disk path=/kvm/i03.qcow2.img,format=qcow2,bus=virtio,cache=writeback  \
--location /export/CentOS-7-x86_64-Minimal-1708.iso --network bridge=br0,model=virtio  \
--initrd-inject i03.ks \
--nographics \
--extra-args='ks=file:/i03.ks console=tty0 console=ttyS0,115200n8'

[root@c kvm]#
}}
OSインストール完了後に acpid らをインストールすれば完了かな

***virshからconsoleで仮想マシンに接続するには [#uf5f2eb3]
CentOS6では仮想マシンの/etc/grub.confを下記のように修正して再起動する。
#code(nonumber,diff){{
--- /etc/grub.conf.190130       2019-01-30 16:44:59.660544024 +0900
+++ /etc/grub.conf      2019-01-30 16:46:02.923322087 +0900
@@ -11,9 +11,11 @@
 timeout=5
 splashimage=(hd0,0)/grub/splash.xpm.gz
 hiddenmenu
+serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
+terminal --timeout=5 serial console
 title CentOS (2.6.32-696.23.1.el6.x86_64)
        root (hd0,0)
-       kernel /vmlinuz-2.6.32-696.23.1.el6.x86_64 ro root=UUID=027b9ca4-6120-(略) rhgb quiet
+       kernel /vmlinuz-2.6.32-696.23.1.el6.x86_64 ro root=UUID=027b9ca4-6120-(略) rhgb quiet console=ttyS0,11520
        initrd /initramfs-2.6.32-696.23.1.el6.x86_64.img
 title CentOS 6 (2.6.32-696.el6.x86_64)
        root (hd0,0)
}}
一応仮想マシンにserialがあれば、「virsh console <仮想マシン>」で繋がる。

CentOS7では、同じくgrubを修正しますが、「/etc/default/grub」を修正します。
CentOS7では、同じくgrubを修正しますが、まずはテンプレートの「/etc/default/grub」を修正します。
#code(nonumber,diff){{
--- /etc/default/grub.orig      2017-08-29 21:46:57.232489257 +0900
+++ /etc/default/grub   2019-01-30 17:02:24.150360582 +0900
@@ -3,5 +3,5 @@
 GRUB_DEFAULT=saved
 GRUB_DISABLE_SUBMENU=true
 GRUB_TERMINAL_OUTPUT="console"
-GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
+GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet console=tty0 console=ttyS0,115200n8r"
 GRUB_DISABLE_RECOVERY="true"
}}
その後、システムがUEFIでbootするなら
その後、grubを作ります
#code(nonumber){{
(UEFIなら)
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

(BIOSなら)
grub2-mkconfig -o /boot/grub2/grub.cfg
}}
とする。UEFIかBIOSなのかは、「/boot/efi/EFI/BOOT/」があればUEFIと判断すればいいのかも。
とする。
UEFIかBIOSなのかは、「/boot/efi/EFI/BOOT/」があればUEFIと判断すればいいのかも。
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS