第三章:创建虚拟机
作者:互联网
一、使用virt-manager创建虚拟机
virt-manager基本使用
启用virt-manager
虚拟机管理主窗口
硬件细节窗口
配置虚拟机启动选项
附加USB设备给虚拟机
准备工作
USB重定向
虚拟机图形控制台
添加远程连接
显示虚拟机细节
性能监视
实验
环境准备
操作系统安装介质、ISO文件
创建存放镜像的目录
mkdir /iso
使用SCP工具将iso文件上传到KVM服务器
磁盘空间准备
添加新磁盘
#扫描新磁盘
cd /sys/class/scsi_host/
ll
echo "- - -"> /sys/class/scsi_host/host0/scan
echo "- - -"> /sys/class/scsi_host/host1/scan
echo "- - -"> /sys/class/scsi_host/host2/scan
#分区
fdisk /dev/sdb
t
8e
w
#创建LV
pvcreate /dev/sdb1
vgcreate vmvg /dev/sdb1
vgdisplay
lvcreate -l 20479 -n lvvm1 vmvg
#创建文件系统及挂载点
mkfs.ext4 /dev/vmvg/lvvm1
mkdir /vm
echo "/dev/vmvg/lvvm1 /vm ext4 defaults 0 0">>/etc/fstab
mount /vm
操作日志
[root@kvm ~]# cd /sys/class/scsi_host/
[root@kvm scsi_host]# ll
total 0
lrwxrwxrwx. 1 root root 0 May 11 09:44 host0 -> ../../devices/pci0000:00/0000:00:07.1/ata1/host0/scsi_host/host0
lrwxrwxrwx. 1 root root 0 May 11 09:44 host1 -> ../../devices/pci0000:00/0000:00:07.1/ata2/host1/scsi_host/host1
lrwxrwxrwx. 1 root root 0 May 11 09:44 host2 -> ../../devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2
[root@kvm scsi_host]# echo "- - -"> /sys/class/scsi_host/host0/scan
[root@kvm scsi_host]# echo "- - -"> /sys/class/scsi_host/host1/scan
[root@kvm scsi_host]# echo "- - -"> /sys/class/scsi_host/host2/scan
[root@kvm scsi_host]# cd
[root@kvm ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xbcf1cff3.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-167772159, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-167772159, default 167772159):
Using default value 167772159
Partition 1 of type Linux and of size 80 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): p
Disk /dev/sdb: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xbcf1cff3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 167772159 83885056 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@kvm ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@kvm ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 0 free]
PV /dev/sdb1 lvm2 [<80.00 GiB]
Total: 2 [<99.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [<80.00 GiB]
[root@kvm ~]# vgcreate vmvg /dev/sdb1
Volume group "vmvg" successfully created
[root@kvm ~]# vgscan
Reading volume groups from cache.
Found volume group "centos" using metadata type lvm2
Found volume group "vmvg" using metadata type lvm2
[root@kvm ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <19.00 GiB
PE Size 4.00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19.00 GiB
Free PE / Size 0 / 0
VG UUID 1gOKuC-43TX-RF7c-E1oi-3xDB-5mvY-yKarOV
--- Volume group ---
VG Name vmvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <80.00 GiB
PE Size 4.00 MiB
Total PE 20479
Alloc PE / Size 0 / 0
Free PE / Size 20479 / <80.00 GiB
VG UUID lXZN28-wHKO-ZPEG-fKX5-yUMU-Og9g-haup7o
[root@kvm ~]# lvcreate -l 20479 -n lvvm1 vmvg
Logical volume "lvvm1" created.
[root@kvm ~]# vgdisplay vmvg
--- Volume group ---
VG Name vmvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <80.00 GiB
PE Size 4.00 MiB
Total PE 20479
Alloc PE / Size 20479 / <80.00 GiB
Free PE / Size 0 / 0
VG UUID lXZN28-wHKO-ZPEG-fKX5-yUMU-Og9g-haup7o
[root@kvm ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE '/dev/centos/root' [<17.00 GiB] inherit
ACTIVE '/dev/vmvg/lvvm1' [<80.00 GiB] inherit
[root@kvm ~]# mkfs.ext4 /dev/vmvg/lvvm1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
5242880 inodes, 20970496 blocks
1048524 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2168455168
640 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@kvm ~]# mkdir /vm
[root@kvm ~]# echo "/dev/vmvg/lvvm1 /vm ext4 defaults 0 0">>/etc/fstab
[root@kvm ~]# mount /vm
[root@kvm ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=914616k,nr_inodes=228654,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=14489)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186304k,mode=700)
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
/dev/sr0 on /run/media/root/CentOS 7 x86_64 type iso9660 (ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,dmode=0500,mode=0400,uhelper=udisks2)
/dev/mapper/vmvg-lvvm1 on /vm type ext4 (rw,relatime,seclabel,data=ordered)
[root@kvm ~]# ls /iso/
W2K3_VOL_WITH_SP2_CN_CREATE.iso
创建Windows虚拟机
打开Virt Machine Manager
首先打开Xming,在命令行使用virt-manager
来打开
或者startx
进入图形化界面,打开
点击创建新的虚拟机
选择本地安装介质
点击浏览
点击浏览本地
在问件目录中找到之前上传的iso镜像,点击open
下一步
配置内存和CPU
配置磁盘
为虚拟机命名,配置网络
按回车
选择文件系统格式
回车直接进入系统
创建Linux虚拟机
打开Virt Machine Manager
首先打开Xming,在命令行使用virt-manager
来打开
或者startx
进入图形化界面,打开
点击创建新的虚拟机
选择本地安装介质
点击浏览
选择centos镜像
指定存储位置
点击左下角加号,创建新的存储池
对存储池命名
更改Target Path路径
点击Volumes旁的加号来添加新的存储卷
配置名称、类型、大小
二、使用virt-install创建虚拟机
命令参数参考
命令参数参考
命令参数参考
-name name∶设定虚拟机名称;
-M machine∶指定要模拟的主机类型,如Standard PC、ISA-only PC或Intel-Mac等
-m megs∶设定虚拟机的RAM大小
-cpu model∶设定CPU模型,如coreduo、qemu64等
-smp n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]∶设定模拟的SMP架构中CPU的个数等、每个CPU的核心数及CPU的socket数目等;PC机上最多可以模拟255颗CPU
maxcpus用于指定热插入的CPU个数上限
-numa opts∶指定模拟多节点的numa设备
-fda file:
-fdb file∶使用指定文件(file)作为软盘镜像,file为/dev/fd0表示使用物理软驱
-hda file -hdb file -hdc file
-hdd file∶使用指定file作为硬盘镜像
-cdrom file∶使用指定file作为CD-ROM镜像,需要注意的是-cdrom和-hdc不能同时使用;将file 指定为/dev/cdrom可以直接使用物理光驱
-drive option[,option[,option[]]]∶定义一个硬盘设备;可用子选项有很多
file=/path/to/somefile∶硬件映像文件路径
if=interface∶指定硬盘设备所连接的接口类型,即控制器类型,如ide、scsi、sd、mtd、floppy、pflash及virtio等
index=index∶设定同一种控制器类型中不同设备的索引号,即标识号
media=media∶定义介质类型为硬盘(disk)还是光盘(cdrom)
snapshot=snapshot∶指定当前硬盘设备是否支持快照功能∶ on或off
cache=cache∶定义如何使用物理机缓存来访问块数据,其可用值有none、writeback、unsafe 和writethrough四个
format=format∶指定映像文件的格式,具体格式可参见qemu-img命令
-boot [order=drives][,once=drives][,menu=onloff]∶定义启动设备的引导次序,每种设备使用一个字符表示;不同的架构所支持的设备及其表示字符不尽相同,在x86PC架构上,a、b表示软驱、c表示第一块硬盘,d表示第一个光驱设备,n-p表示网络适配器;默认为硬盘设备
-boot order=dc,once=d
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]∶创建一个新的网卡设备并连接至vlan n中;macaddr用于为其指定MAC地址,name用干指定一个在监控时显示的网上设备名称∶emu可以模拟多个类型的网卡设备
-net tap[,van=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]∶通过物理机的TAP网络接口连接至vlan n中,使用script=file指定的脚本(默认为/etc/qemu-ifup)来配置当前网络接口,并使用downscript=file指定的脚本(默认为/etc/qemu-ifdown)来撤消接口配置;使用script=no和downscript=no可分别用来禁止执行脚本
-net user[,option][,option][...]∶在用户模式配置网络栈,其不依赖于管理权限;有效选项有∶
van=n∶连接至vlan n,默认n=0
name=name∶指定接口的显示名称,常用于监控模式中
net=addr[/mask]∶设定GuestOS可见的IP网络,掩码可选,默认为10.0.2.0/8
host=addr∶ 指定GuestOS中看到的物理机的IP地址,默认为指定网络中的第二个,即x.x.x.2
dhcpstart=addr∶ 指定DHCP服务地址池中16个地址的起始IP,默认为第16个至第31个,即x.x.x.I6-x.x.x.31
dns=addr∶指定GuestOS可见的dns服务器地址;默认为GuestOS网络中的第三个地址,即xx.x.3
tftp=dir∶激活内置的tftp服务器,并使用指定的dir作为tftp服务器的默认根目录
bootfile=file∶BOOTP文件名称,用于实现网络引导GuestOS;如∶qemu-hda linux.img-boot n -net user,tftp=/tftpserver/pub,bootfile=/pxelinux.0
通过本地ISO文件来进行安装
qemu-img create -f qcow2 vm1-disk1.qcow2 10G
virt-install \
--name=vm1 \
--disk path=/vm/vm1-disk1.qcow2 \
--vcpus=1 --ram=1024 \
--cdrom=/iso/CentOS-6.10-i386-minimal.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--os-type=linux \
--os-variant=rhel6
操作日志
[root@kvm ~]# cd /vm/
[root@kvm vm]# ll
total 16
drwx------. 2 root root 16384 May 11 13:50 lost+found
[root@kvm vm]# qemu-img create -f qcow2 vm1-disk1.qcow2 10G
Formatting 'vm1-disk1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@kvm vm]# ll
total 212
drwx------. 2 root root 16384 May 11 13:50 lost+found
-rw-r--r--. 1 root root 197120 May 11 19:46 vm1-disk1.qcow2
[root@kvm vm]# virt-install \
> --name=vm1 \
> --disk path=/vm/vm1-disk1.qcow2 \
> --vcpus=1 --ram=1024 \
> --cdrom=/iso/CentOS-6.10-i386-minimal.iso \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 \
> --os-type=linux \
> --os-variant=rhel6
Starting install...
Domain creation completed.
Restarting guest.
考察新创建的虚拟机
[root@kvm ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # list --all
Id Name State
----------------------------------------------------
2 vm1 running
virsh # dominfo vm1
Id: 2
Name: vm1
UUID: c021a8a5-4578-4a6f-b09f-d3eb92f74cd1
OS Type: hvm
State: running
CPU(s): 1
CPU time: 14.6s
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: selinux
Security DOI: 0
Security label: system_u:system_r:svirt_t:s0:c566,c881 (enforcing)
virsh # edit vm1
Kickstart安装
Kickstart是一种无人值守的安装方式
如果在安装过程中出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了
网络安装
我们也可以指定安装介质文件位置网络上
--location=http://
如果Web服务器是Windows,有可能出现错误
PXE安装
三、半虚拟化驱动virtio
使用半虚拟化驱动virtio的目的
为了提高内存、硬盘、网络的性能,需要支持半虚拟化
性能比较
KVM VirtIO paravirtualized drivers: why they matter
半虚拟化设备统一接口
通过统一的接口virti以支持的多种硬件设备
不同的虚拟设备和不同的虚拟机可以有不同的前端驱动
不同的硬件设备可以有不同的后端驱动
两者之间的交互遵循virtio的标准
获得virtio驱动程序
红帽RHEL 4.8之后自动加载和安装virtio驱动
Windows操作系统需要额外安装virtio的驱动
方法1∶从RHN上下载
如果您有RHN订阅,可以从以下位置下载virtio-win包∶
https://access.redhat.com/downloads/
方法2∶从社区获得
http://www.linux-kvm.org/page/Downloads
实验1∶在已经安装好的Windows虚拟机上安装virtio驱动
通过向导创建的VM,默认磁盘为IDE接口、网卡为rtl8139,即全虚拟化驱动。
一定要按以下步骤来进行操作,否则会出现蓝屏错误
关闭虚拟机。编辑虚拟机的配置,添加一个很小的virtio硬盘、一块virtio网卡
虚拟光驱加载上传的的ISO文件
启动虚拟机。登录后,Windows会发现新的硬件
安装时使用手动搜索驱动,不同的操作系统路径如下
最后,安装其他驱动程序。如Balloon、串口等
实验2∶安装Windows操作系统时安装virtio驱动程序
Windows 2008及之后操作系统,在安装时指定驱动程序的位置
四、QEMU Guest Agent和SPICE Agent
QEMU guest agent安装与配置
如果VM中安装了QEMU guest agent,Host就可以使用libivrt向VM 发送命令,例如"冻结"、"释放"文件系统,虚拟CPU的热添加及移除等。
RHEL/CentOS 7中有相应的安装包。qemu-guest-agent-xxx.rpm
Windows需要手工安装
通过libvirt来使用QEMU guest agent
安装了QEMU guest agent后,对libvirt命令有如下的增强
virsh shutdown --mode=agent 比--mode=acpi更加安全地关闭操作系统
virsh snapshot-create -quiesce 在创建快照之前面,将缓存的内容刷入到磁盘
virsh domfsfreeze 静默文件系统
virsh dimfsthaw 恢复静默文件系统
virsh domfstrim 让虚拟机trim文件系统
virsh domtime 获得虚拟机的时间
virsh setvcpus 配置虚拟机的vCPU
virsh domifaddr --source agent 查询虚拟机的IP地址
virsh domfsinfo 显示虚拟机的文件系统列表
virsh set-user-password 设置虚拟机用户的密码
SPICE agent安装与配置
通过在VM操作系统中安装SPICE client,SPICE agent使virt-manager等图形应用程序更加流畅。例如∶
在virt-manager中调整窗口尺寸,SPICE agent自动调整X会话的分辨率
在Host与Guest之间复制与粘贴
防止鼠标拖尾等
下载∶
http://www.spice-space.org/download/
标签:relatime,rw,第三章,创建,虚拟机,sys,cgroup,root,type 来源: https://www.cnblogs.com/simplerude/p/16257758.html