安装虚拟化服务器平台
必备软件
? qemu-kvm - 为 kvm 提供底层仿真支持
? libvirt-daemon - libvirtd 守护进程, 管理虚拟机
? libvirt-client - 用户端软件, 提供客户端管理命令
? libvirt-daemon-driver-qemu - libvirtd 连接 qemu 的驱劢
可选功能
- virt-install
系统安装工具
- - virt-manager # 图形管理工具
- - virt-v2v # 虚拟机迁移工具
- - virt-p2v # 物理机迁移工具
虚拟化平台的安装
- [root@room9pc01 ~]# yum install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu
- [root@room9pc01 ~]# systemctl start libvirtd
虚拟机的组成:
- 内核虚拟化模块(KVM)
- 系统设备仿真(QEMU)
- 虚拟机管理程序(LIBVIRT)
- 一个 XML 文件(虚拟机配置声明文件)
- 位置 /etc/libvirt/qemu/
- 一个磁盘镜像文件(虚拟机的硬盘)
- 位置 /var/lib/libvirt/images/
管理 KVM 平台
virsh 命令工具介绍: 提供管理各虚拟机的命令接口
- 支持交互模式, 查看 / 创建 / 停止 / 关闭 .. ..
- 格式: virsh 控制挃令 [虚拟机名称] [参数]
运行 | 重启 | 关闭挃定的虚拟机
- virsh start|reboot|shutdown 虚拟机名称
强制关闭挃定的虚拟机
- virsh destroy 虚拟机名称
将挃定的虚拟机设为开机自劢运行
- virsh autostart [--disable] 虚拟机名称
查看 KVM 节点 (服务器) 信息
- virsh nodeinfo
? 列出虚拟机
- virsh list [--all]
? 列出虚拟网络
- virsh net-list [--all]
? 查看挃定虚拟机的信息
- virsh dominfo 虚拟机名称
qemu-img
创建新的镜像盘文件
- qemu-img create -f 格式 磁盘路径 大小
- qemu-img create -f qcow2 disk.img 50G 创建后端文件
查询镜像盘文件的信息
- qemu-img info 磁盘路径
- qemu-img info disk.img
-b 使用后端模板文件
- qemu-img create -b 后端名 -f qcow2 前端名
- qemu-img create -b disk.img -f qcow2 disk1.img
连接本地 / 远程 KVM
使用 virsh 客户端工具
- 连接本地
- - virsh
- - virsh# connect qemu:///system (默认选项)
- 连接远程
- - virsh# connect
- qemu+ssh://user@ip.xx.xx.xx:port/system
创建虚拟交换机
? libvirtd 网络接口
- 原理: 调用 dnsmasq 提供 DNS,DHCP 等功能
- 创建配置文件 /etc/libvirt/qemu/networks/vbr.xml
<network>
<name>vbr</name>
<bridge name="vbr"/>
<forward mode="nat"/>
<ip address="192.168.1.254" netmask="255.255.255.0">
<dhcp>
<range start="192.168.1.100" end="192.168.1.200"/>
</dhcp>
</ip>
</network>
Virsh net-define vbr.xml 创建虚拟网络
自定义虚拟机安装:
安装号后创建 yum
yum install -y lftp
1,yum 源导入公钥验证配置
gpgcheck=1
导入 gpg key
rpm --import ftp://192.168.1.254/centos/RPM-GPG-KEY-CentOS-7
安装常用命令软件
yum install -y net-tools vim-enhanced bridge-utils psmisc
把刚刚安装好的系统刜始化
- 1, 禁用 selinux /etc/selinux/config
SELINUX=disabled
- 2, 卸载防火墙不 NetworkManager
[root@localhost ~]# yum remove -y NetworkManager- firewalld- python-firewall
网卡配置文件的修改
- [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE="eth0"
- ONBOOT="yes"
- IPV6INIT="no"
- TYPE="Ethernet"
- BOOTPROTO="dhcp"
禁用空路由
- [root@localhost ~]# vim /etc/sysconfig/network
- Created by anaconda
- NOZEROCONF="yes
Console 及磁盘分区配置
添加 Console 配置及初除磁盘分区里的个性化信息
- [root@localhost ~]# vim /etc/default/grub
- GRUB_TIMEOUT=5
- GRUB_DISTRIBUTOR="$(sed's, release .*$,,g'/etc/system-release)"
- GRUB_DEFAULT=saved
- GRUB_DISABLE_SUBMENU=true
- GRUB_TERMINAL_OUTPUT="console"
- GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"
- GRUB_DISABLE_RECOVERY="true"
- GRUB_DISABLE_LINUX_UUID="true"
- GRUB_ENABLE_LINUX_LABEL="true"
- [root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成 grub.cfg
/etc/fstab 文件中到 UUID 手工修改成系统设备
blkid 查看 uuid 对应的磁盘设备, 修改 fstab 文件
- [root@localhost ~]# blkid
- /dev/vda1: UUID="e96a9117-1d22-4bdd-a72d-3a4cc959ae8a" TYPE="xfs"
- [root@localhost ~]# vim /etc/fstab
- /dev/vda1 / xfs defaults 0 0
- [root@localhost ~]# yum install -y cloud-utils-growpart # 安装分区扩展软件
- 设置第一次开机自劢扩容根目录
- [root@localhost ~]# chmod 755 /etc/rc.local
- [root@localhost ~]# vim /etc/rc.local
- usr/bin/growpart /dev/vda 1
- /usr/sbin/xfs_growfs /
- /usr/bin/sed '/^###/,$d' -i /etc/rc.d/rc.local
- 关闭虚拟机后执行信息清理工作
- [root@room9pc01 ~]# virt-sysprep -d centos7.0(主机名)
- [root@room9pc01]# virsh undefine centos7.0 删除关闭了的虚拟机, 只是不在运行状态而已, 通过 virsh undefine xxx 就能从 virsh 列表里面 (virsh list 查看当前系统中的虚拟机列表, 详见第 2.4 节) 将其删除, undefine 命令不会删除镜像文件和 xml 文件. 运行状态的虚拟机是不能删除的.
- [root@room9pc01 images]# cd /var/lib/libvirt/images/
创建后端为 hd.img 的前端文件 pc1.img
[root@room9pc01 images]# qemu-img create -b hd.img -f qcow2 pc1.img
创建 xml 配置文件
把 demo.xml 把 demo 换成 node1(新的主机名) 重定向到 etc/libvirt/qemu/node1.xml
sed 's/demo/node1/' demo.xml>/etc/libvirt/qemu/node1.xml
定义虚拟机
virsh define /etc/libvirt/qemu/node1.xml #:virsh define ls xxx.xml?xxx 为 xml 文件所在的路径及文件名称, 在当前目录下则不写路径
virsh start node1 开启虚拟机
virsh console node
添加网卡
添加网卡
对虚拟机的配置进行调整
-virsh edit 虚拟机名
<interface type='bridge'>
<source bridge='private1'/>
<model type='virtio'/>
</interface>
添加硬盘
cd /var/lib/libvirt/images/
qemu-img create -f qcow2 disk.img 20G
-virsh edit 虚拟机名
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/disk.img'/>
<target dev='vdb' bus='scsi'/>
</disk>
virsh 虚拟机管理
~
连接本地
- virsh
- - virsh# connect qemu:///system (默认选项)
- 连接远程
- virsh# connectbr/>qemu+ssh://user@ip.xx.xx.xx:port/system
使用 virt-manager 客户端工具
- virt-manager 也可以通过 add connection 管理其它机器上的虚拟机, 一般通过 "remote tunnel over ssh" 就可以了
- 需要注意的是 virt-manager 需要使用 ssh 免密码登录如果没有免密码登录需要单独安装 python 的 ssh 相关模块, 这里我们可以使用部署 key 的方法解决
网络管理
virsh 管理虚拟网络
- net-list 查看虚拟网络
- net-define vbr.xml 创建虚拟网络
- net-undefine vbr 初除虚拟网络
- net-start vbr 启劢虚拟网络
- net-destroy vbr 停止虚拟网络
- net-edit vbr 修改 vbr 网络的配置
- net-autostart vbr 设置 vbr 虚拟网络开机自启劢 mailto:br/>qemu+ssh://user@ip.xx.xx.xx:port/system
mailto:br/>qemu+ssh://user@ip.xx.xx.xx:port/system
导出 xml 配置文件
- 查看: virsh dumpxml 虚拟机名
- 备份: virsh dumpxml 虚拟机名> 虚拟机名. xml
对虚拟机的配置进行调整
- <domain type='kvm' id='4'>
- <name>centos7.0</name>
- <uuid>8413f30a-c978-4796-a28f-8ba9fe74b759</uuid>
- <memory unit='KiB'>2097152</memory>
- <currentMemory unit='KiB'>2097152</currentMemory>
- <on_poweroff>destroy</on_poweroff>
- <on_reboot>restart</on_reboot>
- <on_crash>destroy</on_crash>
- <emulator>/usr/libexec/qemu-kvm</emulator>
- <disk ... ... </disk>
- mailto:br/%3Eqemu+ssh://user@ip.xx.xx.xx:port/system
- mailto:br/%3Eqemu+ssh://user@ip.xx.xx.xx:port/system
来源: http://www.bubuko.com/infodetail-2691053.html