KVM(CentOS-7-x86_64-Everything-1708.iso [KDE all])
0.检测
egrep '(svm|vmx)' /proc/cpuinfo
有信息输出则成功,否则在物理主机的BIOS中开启Virtualization(虚拟化)选项,然后在VMware的虚拟机硬件配置标签页的CPU项勾选“虚拟化Intel VT-x/EPT或AMD-V/RVI(V)”项,注意必须关闭VMware中全部正在运行的虚拟机再勾选!
1.安装
yum install qemu-kvm libvirt virt-manager
2.验证
lsmod|grep kvm
3.图形
vim /etc/libvirt/qemu.conf
user="root"
group="root"
vnc_listen="0.0.0.0"
vnc_password="12345"
:wq
systemctl start libvirtd
systemctl enable libvirtd
virt-manager
安装一个用于测试的系统以CentOS-7-x86_64-Everything-1708.iso为例:
Edit-->Preference-->New VM: Graphics type: VNC
Stotrage format: System default(qcow2)
CPU default: Hypervisor default
Edit-->Connection Details-->Storage: foo-v1
|
+--> foo.qcow2(8GiB)
foo-v2
|
+--> CentOS-7-x86_64-Everything-1708.iso
File--> New Virtual Machine:
1. Local install media(ISO image or CDROM)
2. Use ISO image: /var/lib/libvirt/images/foo-v2/CentOS-7-x86_64-Everything-1708.iso
(fixme: # chown root: CentOS-7-x86_64-Everything-1708.iso)
3. Select or create custom storage: /var/lib/libvirt/images/foo-v1/foo.qcow2
4.Type VM name by yourself.
5.Finished
...
All done.
4.命令
virsh help 查看帮助
a.连接到服务器端
$virsh --connect qemu:///system
----------------------------------
$virsh -c qemu:///system
----------------------------------
$virsh
$connect qemu:///system
----------------------------------
#virsh
----------------------------------
b.查看虚拟主机
virsh list 查看启动的虚拟机
virsh list --inactive 查看没有运行的虚拟机
virsh list --all 查看所有的虚拟机
c.命令创建虚拟机并远程装机
mkdir /foo
virsh pool-create-as --name foo --type dir --target /foo
virsh vol-create-as --pool foo --name foo.qcow2 --format qcow2 --capacity 8GiB
mkdir /iso
virsh pool-create-as --name iso --type dir --target /iso
cp /path/to/x.iso /iso
yum install virt-install
yum install virt-viewer
virt-install --name foo --vcpus 2 --ram 1024 --cdrom /iso/x.iso --disk /foo/foo.qcow2 --boot hd,cdrom --graphics vnc,listen=0.0.0.0,port=5918,password=12345 --cpu host
VNC客户端连接装机即可
d.开关机
virsh start VM_NAME
virsh shutdown VM_NAME
virsh reboot VM_NAME
virsh destroy VM_NAME
e.修改虚拟机配置
virsh edit VM_NAME
f.磁盘格式转换并使用它启动虚拟机
virsh shutdown foo
qemu-img convert -f qcow2 -O raw /foo/foo.qcow2 /foo/foo.raw
virsh edit VM_NAME
...
virsh start foo
VNC客户端连接测试
g.快照管理
virsh snapshot-list foo
virsh snapshot-create-as --name foo-hello --domain foo
virsh snapshot-revert --domain foo --snapshotname foo-hello
virsh snapshot-delete --domain foo --snapshotname foo-hello
virsh snapshot-info --domain foo --snapshotname foo-hello
virsh snapshot-current --domain foo
h.迁移
offline:
A:172.16.0.100/24
B:172.16.0.101/24
A --> B
A: virsh dumpxml foo > foo.xml
ls --> foo.xml foo.qcow2
scp -P 22 foo.xml [email protected]:/root
scp -P 22 foo.qcow2 [email protected]:/root
ssh -p 22 [email protected]
mkdir /foo
mv foo.qcow2 /foo
virsh pool-create-as --name foo --type dir --target /foo
virsh create foo.xml(virsh define foo.xml && virsh start foo)
VNC测试
online:
NFS(172.16.0.64/24):
yum -y install rpcbind nfs-utils && systemctl start rpcbind && systemctl start nfs
mkdir /data
vim /etc/exports
/data *(rw,sync,no_root_squash)
exportfs -r
A and B:
exportfs -e 172.16.0.64
mkdir /data
mount -t nfs 172.16.0.64:/data /data
virsh pool-create-as --name foo --type dir /data
A.install centos-7-x86_64
virsh migrate foo qemu+ssh://B_IP/system --live --persistent
VNC在B上测试
[root@localhost ~]# virsh --help
connect 连接(重新连接)到 hypervisor
——————————————————————————————
[root@localhost ~]# virsh help snapshot
Snapshot (help keyword 'snapshot'):
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一组参数生成快照
snapshot-current 获取或者设定当前快照
snapshot-delete 删除域快照
snapshot-dumpxml 为域快照转储 XML
snapshot-edit 编辑快照 XML
snapshot-info 快照信息
snapshot-list 为域列出快照
snapshot-parent 获取快照的上级快照名称
snapshot-revert 将域转换为快照
[root@localhost ~]# virsh snapshot-create-as --help
NAME
snapshot-create-as - 使用一组参数生成快照
SYNOPSIS
snapshot-create-as
DESCRIPTION
使用一组参数生成快照(磁盘和 RAM)
OPTIONS
[--domain]
--name
--description
--print-xml 输出 XML 文档而不是生成 XML
--no-metadata 提取快照但不生成元数据
--halt 生成快照后停止域
--disk-only 捕获磁盘状态而不是 vm 状态
--reuse-external 重新使用任意现有外部文件
--quiesce 静默虚拟机的文件系统
--atomic 需要自动操作
--live 提取实时快照
--memspec
[--diskspec]
[root@localhost ~]# virsh snapshot-list --help
NAME
snapshot-list - 为域列出快照
SYNOPSIS
snapshot-list
DESCRIPTION
快照列表
OPTIONS
[--domain]
--parent 添加一列显示上级快照
--roots 只列出快照不列出其上级
--leaves 列出没有下级的快照
--no-leaves 只列出没有离开的快照(附带下级快照)
--metadata 只列出可防止取消定义的元数据的快照
--no-metadata 只列出 libvirt 未管理元数据的快照
--inactive 不活跃时提取快照时的过滤器
--active 活跃是提取快照时的过滤器(系统检查点)
--disk-only 用于 disk-only 快照的过滤器
--internal 内部快照的过滤器
--external 外部快照的过滤器
--tree 列出树中的快照
--from
--current 将列表限制为当前快照的下级
--descendants 使用 --from 列出所有下级
--name 只列出快照名称
[root@localhost ~]# virsh snapshot-revert --help
NAME
snapshot-revert - 将域转换为快照
SYNOPSIS
snapshot-revert
DESCRIPTION
将域转换为快照
OPTIONS
[--domain]
--snapshotname
--current 转换为当前快照
--running 转换后将状态改为 running
--paused 转换后将状态改为 paused
--force 更努力地尝试有风险的转换
[root@localhost ~]# virsh snapshot-current --help
NAME
snapshot-current - 获取或者设定当前快照
SYNOPSIS
snapshot-current
DESCRIPTION
获取或者设定当前快照
OPTIONS
[--domain]
--name 列出名称儿不是完整 xml
--security-info 包括 XML 转储中与安全性相关的信息
--snapshotname
[root@localhost ~]# virsh snapshot-create --help
NAME
snapshot-create - 使用 XML 生成快照
SYNOPSIS
snapshot-create
DESCRIPTION
使用 XML 生成快照(磁盘和 RAM)
OPTIONS
[--domain]
--xmlfile
--redefine 重新定义现有快照元数据
--current 使用 redefice 设定当前快照
--no-metadata 提取快照但不生成元数据
--halt 生成快照后停止域
--disk-only 捕获磁盘状态而不是 vm 状态
--reuse-external 重新使用任意现有外部文件
--quiesce 静默虚拟机的文件系统
--atomic 需要自动操作
--live 提取实时快照
[root@localhost ~]# virsh snapshot-dumpxml --help
NAME
snapshot-dumpxml - 为域快照转储 XML
SYNOPSIS
snapshot-dumpxml
DESCRIPTION
快照转储 XML
OPTIONS
[--domain]
[--snapshotname]
--security-info 包括 XML 转储中与安全性相关的信息
[root@localhost ~]# virsh snapshot-parent --help
NAME
snapshot-parent - 获取快照的上级快照名称
SYNOPSIS
snapshot-parent
DESCRIPTION
如果有则提取快照上级
OPTIONS
[--domain]
--snapshotname
--current 查找当前快照名称上级
[root@localhost ~]# virsh snapshot-info --help
NAME
snapshot-info - 快照信息
SYNOPSIS
snapshot-info
DESCRIPTION
返回快照的基本信息。
OPTIONS
[--domain]
--snapshotname
--current 当前快照信息
[root@localhost ~]# virsh snapshot-edit --help
NAME
snapshot-edit - 编辑快照 XML
SYNOPSIS
snapshot-edit
DESCRIPTION
为命名快照编辑域快照 XML
OPTIONS
[--domain]
--snapshotname
--current 也将编辑的快照设定为 current
--rename 允许对现有快照创新命名
--clone 允许克隆为新名称