一. 安装KVM环境
1. 检测是否支持KVM
cat /proc/cpuinfo | egrep 'vmx|svm'
返回结果中有vmx或svm,说明cpu是支持的
2. 关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing
修改为 SELinux=disabled
vi /etc/sysconfig/selinux
3. 安装KVM环境
yum -y install qemu-kvm libvirt virt-install bridge-utils
4. 重启服务器,加载kvm模块
reboot
5. 查看kvm模块是否被正确加载
lsmod | grep kvm kvm_intel 162153 0 kvm 525259 1 kvm_intel
6. 开启kvm服务,并且设置其开机自动启动
systemctl start libvirtd
systemctl enable libvirtd
7. 查看状态操作结果,如:Active: active(running),则运行状态良好
systemctl status libvirtd
systemctl is-enabled libvirtd
ibvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2001-01-02 11:29:53 CST; 1h 41min ago
Docs: man:libvirtd(8)
http://libvirt.org
二. 安装虚拟机(centos7系统)
安装前要设置环境语言为英文LANG="en_US.UTF-8"
,如果是中文的话某些版本可能会报错。CentOS 7
在这里修改 /etc/locale.conf
。kvm创建虚拟机,特别注意.iso
镜像文件一定放到/home
或者根目录重新创建目录,不然会因为权限报错,无法创建虚拟机。
1. 修改宿主机网络模式为桥模式
创建一个br0接口的配置文件
cp /etc/sysconfig/network-scripts/ifcf-ens1f0 /etc/sysconfig/network-scripts/ifcf-br0
原来的ens1f0配置修改
vi /etc/sysconfig/network-scripts/ifcf-ens1f0
# Generated by parse-kickstart
#IPADDR= 172.29.32.41
#GATEWAY=172.29.32.254
#NETMASK=255.255.255.0
#DNS1=192.168.58.110---地址全部不配置
BOOTPROTO=static
DEVICE=ens1f0
UUID=50880575-8439-4418-81aa-79e68a52eb1d
ONBOOT=yes
IPV6INIT=yes
BRIDGE=br0 ----注意需要添加这一行,即通过br0上网
br0接口配置文件修改
vi /etc/sysconfig/network-scripts/ifcf-br0
DEVICE=br0
TYPE=Bridge--修改成bridge模式
BOOTPROTO=statio
ONBOOT=yes
IPADDR=172.29.32.41
NETMASK=255.255.255.0
GATEWAY=172,29,32,254
DNS1=192.168.58.110
重启网络
service network restart
2. 安装虚拟机(此处命令较长注意参数)
virt-install --virt-type=kvm --name=centosname --vcpus=2 --memory=4096 --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso --disk path=/home/vm/centosname.qcow2,size=40,format=qcow2 --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force
参数说明
–name指定虚拟机名称 –memory分配内存大小。 –vcpus分配CPU核心数,最大与实体机CPU核心数相同 –disk指定虚拟机镜像,size指定分配大小单位为G。 –network网络类型,此处用的是默认,一般用的应该是bridge桥接。 –accelerate加速 –cdrom指定安装镜像iso –vnc启用VNC远程管理,一般安装系统都要启用。 –vncport指定VNC监控端口,默认端口为5900,端口不能重复。 –vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。 –os-type=linux,windows –os-variant=rhel6 --name 指定虚拟机名称 --ram 虚拟机内存大小,以 MB 为单位 --vcpus 分配CPU核心数,最大与实体机CPU核心数相同 –-vnc 启用VNC远程管理,一般安装系统都要启用。 –-vncport 指定VNC监控端口,默认端口为5900,端口不能重复。 –-vnclisten 指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。 --network 虚拟机网络配置 # 其中子选项,bridge=br0 指定桥接网卡的名称。 –os-type=linux,windows –os-variant=rhel7.2 --disk 指定虚拟机的磁盘存储位置 # size,初始磁盘大小,以 GB 为单位。 --location 指定安装介质路径,如光盘镜像的文件路径。 --graphics 图形化显示配置
3. 命令行配置系统(带!的都要配置)
Installation
1) [x] Language settings 2) [!] Timezone settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]:
1)Timezone settings 时区设置选择 5) Asia亚洲
,再选择城市 62) Shanghai上海
2)Installation source 安装源输入数字2
3)Software selection 软件选择
4)Installation Destination 安装目的地
5)密码设置(root password)
4. 配置虚拟机网络
vi /etc/sysconfig/network-scripts/ens3
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.120.200
PREFIX=24
GATEWAY=192.168.120.1
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=adfa3b7d-bf60-47e6-8482-871dee686fb5
DEVICE=eth0
ONBOOT=yes
5. 激活网卡
ifup eth0
6. 重启网络服务
service network restart
三. kvm常用操作
1. virsh命令
virsh list --all # 查看所有运行和没有运行的虚拟机 virsh list # 查看在运行的虚拟机 virsh dumpxml vm-name # 查看kvm虚拟机配置文件 virsh start vm-name # 启动kvm虚拟机 virsh shutdown vm-name # 正常关机 virsh destroy vm-name # 非正常关机,强制关闭虚拟机(相当于物理机直接拔掉电源) virsh undefine vm-name # 删除vm的配置文件 ls /etc/libvirt/qemu # 查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除 virsh define file-name.xml # 根据配置文件定义虚拟机 virsh suspend vm-name # 挂起,终止 virsh resumed vm-name # 恢复被挂起的虚拟机 virsh autostart vm-name # 开机自启动vm virsh console <虚拟机名称> # 连接虚拟机
3. 管理命令
virsh start centos72 # 虚拟机开启(启动):
virsh reboot centos72 # 虚拟机重新启动
virsh shutdown centos72 # 虚拟机关机
virsh destroy centos72 # 强制关机(强制断电)
virsh suspend centos72 # 暂停(挂起)KVM 虚拟机
virsh resume centos72 # 恢复被挂起的 KVM 虚拟机
virsh undefine centos72 # 该方法只删除配置文件,磁盘文件未删除
virsh autostart centos72 # 随物理机启动而启动(开机启动)
virsh autostart --disable centos72 # 取消标记为自动开始(取消开机启动)
3. 克隆虚拟机
# 暂停原始虚拟机
virsh shutdown centos72
virt-clone -o centos72 -n centos.112 -f /home/vms/centos.112.qcow2 -m 00:00:00:00:00:01
virt-clone -o centos88 -n centos.112 --file /home/vms/centos.112.qcow2 --nonsparse
--version
查看版本。
-h,--help
查看帮助信息。
--connect=URI
连接到虚拟机管理程序 libvirt 的URI。
-o 原始虚拟机名称
原始虚拟机名称,必须为关闭或者暂停状态。
-n 新虚拟机名称
--name 新虚拟机名称。
--auto-clone
从原来的虚拟机配置自动生成克隆名称和存储路径。
-u NEW_UUID, --uuid=NEW_UUID
克隆虚拟机的新的UUID,默认值是一个随机生成的UUID。
-m NEW_MAC, --mac=NEW_MAC
设置一个新的mac地址,默认为随机生成 MAC。
-f NEW_DISKFILE, --file=NEW_DISKFILE
为新客户机使用新的磁盘镜像文件地址。
--force-copy=TARGET
强制复制设备。
--nonsparse
不使用稀疏文件复制磁盘映像。
4. 安装后的磁盘分区扩展
按以上方案安装后,多余的磁盘空间会被分配到/home节点,默认的磁盘空间大小为50G,可以通过df -h查看磁盘空间。
- 首先卸载 /home
umount /dev/mapper/centos-home
- 删除home的lv
lvremove /dev/mapper/centos-home Do you really want to remove active logical volume centos/home? [y/n]: y Logical volume "home" successfully removed
- 扩展根目录
lvextend -L +445G /dev/mapper/centos-root Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 495.00 GiB (126720 extents). Logical volume centos/root successfully resized.
- 扩展根目录文件系统
xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3276800 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=13107200, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=6400, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 13107200 to 129761280
- 查看根目录扩展信息
df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 908M 0 908M 0% /dev tmpfs 919M 0 919M 0% /dev/shm tmpfs 919M 8.6M 911M 1% /run tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/mapper/centos-root 495G 2.0G 494G 1% / /dev/vda1 1014M 150M 865M 15% /boot tmpfs 184M 0 184M 0% /run/user/0
- 查看挂载的vg
vgscan Reading volume groups from cache. Found volume group "centos" using metadata type lvm2
- 创建home的lv到vg
lvcreate -L 1G -n home centos Logical volume "home" created.
- 创建home的文件系统
mkfs.xfs /dev/mapper/centos-home meta-data=/dev/mapper/centos-home isize=512 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
- 挂载home
mount /dev/mapper/centos-home
- 查看home的信息
df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 908M 0 908M 0% /dev tmpfs 919M 0 919M 0% /dev/shm tmpfs 919M 8.6M 911M 1% /run tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/mapper/centos-root 495G 2.0G 494G 1% / /dev/vda1 1014M 150M 865M 15% /boot tmpfs 184M 0 184M 0% /run/user/0 /dev/mapper/centos-home 1014M 33M 982M 4% /home