留意
/dev/kvmの所有者に注意
libvirtにて、ユーザ qemu をlibvirtdの担当にさせたのなら /dev/kvm のグループパーミッションは qemu にしないとだめみたい

[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でディスクイメージを作成

ストレージを直接指定するなら、まずqemu-imgコマンドで仮想マシンのディスクイメージを作ります
ここでは、場所を /opt/kvm として、作成するイメージは qcow2 形式で 32GBほどとします。

[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 ~]#

一応確認してみます

[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で仮想マシンを作成

CentOS7の例

[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

と実行すると、続く画面で下記が表記された

WARNING  グラフィカルコンソールに接続できません: virt-viewer がインストールされていません。'virt-viewer' パッケージをインストールしてください。
WARNING  ゲストのコンソールがないため、デフォルト値 --wait -1 を適用します。
 
インストールの開始中...
割り当て中 'HDD1.qcow2.img'                      | 8.0 GB  00:00:00
ドメインを作成中...                              |    0 B  00:00:00
仮想マシンのインストールが進行中です。インストールが完了するまで  を待っています。

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

仮想マシンの制御

作成した仮想マシンを停止、起動させるには、仮想マシンにacpidがインストールされていることが必要

[root@c103 ~]# yum install acpid
[root@c103 ~]# systemctl enable acpid.service
[root@c103 ~]# systemctl start acpid.service

こうすることで、仮想化サーバから virsh コマンドで制御可能に

[root@c ~]# virsh
virsh # list --all
 Id    名前                         状態
----------------------------------------------------
 5     c20                            実行中
 
virsh # shutdown  c20
ドメイン c20 はシャットダウン中です
 
virsh # start c20
ドメイン c20 が起動されました
 
virsh #

こんな感じで。

コマンドラインで仮想マシンを作る

参照先
https://qiita.com/jimaoka/items/d528a7f55e832982c193

コマンドラインしか利用できない環境で仮想マシンを作る

[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

実行した画面で起動シーケンスが始まり、下記のような画面になる
2018y03m20d_221029322.png
*ただこれだと指値でhddを区分けできないみたい

インストール完了後、再びコマンドラインで接続するには virsh コマンドから console で繋げる。

[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

<domain type='qemu'>
 ↓
<domain type='kvm'>
 
<emulator>/usr/libexec/qemu-kvm</emulator>

kickstartファイルを使って

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

まずは、ディスクイメージを作る

[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)に割り当てている

[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が構築されます

[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で仮想マシンに接続するには

CentOS6では仮想マシンの/etc/grub.confを下記のように修正して再起動する。

--- /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」を修正します。

--- /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"

その後、grubを作ります

(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と判断すればいいのかも。

最新の60件
2024-10-11 2024-10-10 2024-10-09 2024-10-08 2024-10-06 2024-10-05 2024-10-04 2024-10-03 2024-10-02 2024-10-01 2024-09-30 2024-09-29 2024-09-28 2024-09-27 2024-09-22 2024-09-20 2024-09-17 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-02 2024-09-01 2024-08-31 2024-08-28 2024-08-18 2024-08-17 2024-08-16 2024-08-15 2024-08-14 2024-08-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-01-30 (水) 17:13:53