搭建KVM服务器
虚拟机模板制作
软件包安装及yum配置
• 把刚刚安装好的系统初始化 (由于此处的虚拟机会用于搭建openstack服务,防止软件冲突所以要卸载一些软件)
1、禁用 selinux /etc/selinux/config
SELINUX=disabled
2、卸载防火墙与NetworkManager 先关服务后卸载
]#systemctl stop firewalld
]#systemctl stop NetworkManager
yum remove -y NetworkManager-* firewalld-* python-firewall
如果卸载后发现ip可以重新配置网卡配置文件,并重启network 服务来解决:
[root@room9pc01 ~]# virsh
欢迎使用 virsh,虚拟化的交互式终端。
输入:'help' 来获得命令的帮助信息
'quit' 退出
virsh # console alia
连接到域 alia
换码符为 ^]
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=dhcp
TYPE=Ethernet
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.3.157 netmask 255.255.255.0 broadcast 192.168.3.255
inet6 fe80::5054:ff:fe3e:8eb7 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:3e:8e:b7 txqueuelen 1000 (Ethernet)
RX packets 334 bytes 26399 (25.7 KiB)
RX errors 0 dropped 8 overruns 0 frame 0
TX packets 73 bytes 6351 (6.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3、配置 yum 源
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos7"
enabled=1
gpgcheck=0
软件包安装及yum配置
安装软件
yum install -y lftp
– 1、将yum 源配置文件中导入公钥验证配置
gpgcheck=1
– 2、导入 gpg key
rpm --import ftp://192.168.1.254/centos7/RPM-GPG-KEY-CentOS-7
– 3、常用系统命令安装 (安装自己常用的命令软件)
yum install -y net-tools vim-enhanced bridge-utils psmisc
网卡及配置文件设置
• 初除网络配置里的个性化信息
– /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes“
IPV6INIT="no"
TYPE="Ethernet"
BOOTPROTO=“dhcp“
– 禁用空路由
– /etc/sysconfig/network
NOZEROCONF="yes"
Console及磁盘分区配置
• 添加 Console 配置及删除磁盘分区里的个性化信息
– /etc/default/grub
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0
console=ttyS0,115200n8"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true“
– 重新生成 grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
– /etc/fstab 文件中到 UUID 手工修改成系统设备 (将UUID改为设备路径)
– blkid 查看 uuid 对应的磁盘设备,修改 fstab 文件去除个性化信息
[root@localhost ~]# blkid
/dev/vda1: UUID="cb6377c4-3d3d-44e0-a02f-24e561e32df5" TYPE="xfs"
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 17 13:52:58 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/vda1 / xfs defaults 0 0
• 安装分区扩展软件
yum install -y cloud-utils-growpart
分区扩容(临时验证):
[root@localhost ~]# /usr/bin/growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=62912479,end=62914527
[root@localhost ~]# /usr/sbin/xfs_growfs /
meta-data=/dev/vda1 isize=512 agcount=4, agsize=655296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=2621184, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621184 to 7864059
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 30G 0 disk
└─vda1 253:1 0 30G 0 part /
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 30G 1.2G 29G 4% /
devtmpfs 966M 0 966M 0% /dev
tmpfs 976M 0 976M 0% /dev/shm
tmpfs 976M 17M 960M 2% /run
tmpfs 976M 0 976M 0% /sys/fs/cgroup
tmpfs 196M 0 196M 0% /run/user/0
– 设置第一次开机自动扩容根目录
chmod 755 /etc/rc.local
– 在 rc.local 里加入如下配置(永久配置)
###
/usr/bin/growpart /dev/vda 1
/usr/sbin/xfs_growfs /
/usr/bin/sed '/^###/,$d' -i /etc/rc.d/rc.local
– 关闭虚拟机后执行信息清理工作
virt-sysprep -d 虚拟机名称:node
虚拟设备管理
XML详解
• XML 配置文件
– 保存 node 虚拟机配置文件
[root@room9pc01 qemu]#virsh dumpxml node >demo.xml
– 清除模板配置
virsh undefine node
– xml 模板
– <!-- 是注释的开始
–
--> 是注释的结尾
– xml 标签必须成对出现
– <keyword> ... ... </keyword>
XML详解
• 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>
– id=4 个性化设置 ,去掉
– uuid 去掉
– memory unit 虚拟机最大使用内存,可以手动调整
– currentmemory 创建虚拟机使用内存
• XML 配置文件
– cpu 设置,可以调整
<vcpu placement='static'>2</vcpu>
– 资源设置,可以删除
<resource> ... ... </resource>
– 系统配置及引导设备,不需要修改
<os>
<boot dev='hd'/>
</os>
– 电源相关配置无需修改
<features> ... ... </features>
• XML 配置文件
– cpu配置,可以修改成使用真机cpu
<cpu ... ... />
<cpu mode='host-passthrough'></cpu>
– 时钟相关配置,可以删除
<clock ... ... </clock>
– 重启,关机,强制关闭对应命令
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
• XML 配置文件
– 内存及硬盘休眠相关设置,可以删除
<pm> ... ... </pm>
– 仿真设备相关配置
<devices> ... ... </devices>
– 其他配置
– 驱动安全标签,可删除
<seclabel> ... ... </seclabel>
设备管理
XML详解
• 仿真设备配置
– 总线地址,别名配置,都可以删除
<address ....
<alias ...
– 硬盘配置,需要修改
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk ... ... </disk>
– usb 相关设备配置,可以删除
<controller type='usb'
• 仿真设备配置
– type='pci' pci总线设备,可删除
– type='virtio-serial' 串口设备需要保留串口终端
– type='network' 网络配置需要修改
– type='pty' 串口终端,需要保留
– type='unix' 虚拟机通讯控制接口
– type='spicevmc' 图形图像相关配置可以删除
– type='tablet' 数位板,可以删除
• 仿真设备配置
– type='mouse' 鼠标,保留
– type='keyboard' 键盘保留
– graphics、video 图形图像显卡相关配置,可以删除
– sound 声卡相关配置,可以删除
– redirdev 设备重定向,可以删除
– memballoon 内存气泡,可以动态调整内存
创建访问虚拟机
快速创建虚拟机
• 如何快速创建虚拟机
– 1、 xml 文件配置
– 把我们的 xml 模板文件进行复制
– 修改名称及磁盘文件
– 2 img 文件创建
– 以我们刚刚装系统的模板为后端文件创建虚拟机
qemu-img create –b node.qcow2 –f qcow2 node1.img
– 完成虚拟机注册及启劢虚拟机
– virsh define node1.xml
– virst start node1
– virsh console node
配置虚拟机系统有奇招
• 使用 guestmount 工具
– 支持离线挂载 raw、qcow2 格式虚拟机磁盘
– 可以在虚拟机关机的情况下,直接修改磁盘中的文档
– 方便对虚拟机定制、修复、脚本维护
!!! 需要注意 SELinux 机制的影响如何挂载虚拟盘
• 基本用法
guestmount -a 虚拟机磁盘路径 -i /挂载点(一定要是空文件夹)
[root@kvmsvr ~]# mkdir /mnt/kdisk
[root@kvmsvr ~]# guestmount -a node1.qcow2 -i /mnt/kdisk
[root@kvmsvr ~]# ls /mnt/kdisk
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr