其他分享
首页 > 其他分享> > 第三章:创建虚拟机

第三章:创建虚拟机

作者:互联网

一、使用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