双硬盘(系统盘和数据盘)创建第一台kvm虚拟机

时间:2024-03-14 12:12:48
一,kvm虚拟机磁盘规划
磁盘A:60G,用于安装操作系统,分区方法MBR,boot分区300M,swap分区2G,剩余的空间全部作为根分区(/),磁盘为lvm+xfs。
磁盘B:200G,用于存放数据,分区方法GPT,创建一个分区,直接挂载到/data目录。


二,宿主机和虚拟机操作系统说明
guest OS发行版:CentOS Linux release 7.3.1611 (Core)
guest OS内核版本:3.10.0-514.el7.x86_64


三,创建磁盘映像文件(在宿主机上)
# qemu-img create -f qcow2 -o size=200G /data/kvm/imgs/template-centos7-3-1611_data.img
# qemu-img create -f qcow2 -o size=60G /data/kvm/imgs/template-centos7-3-1611.img


四,创建虚拟机(在宿主机上)
# virt-install \
--connect qemu:///system \
--virt-type kvm \
--name "template" \
--metadata title="template1" \
--memory 2048,maxmemory=4096 \
--vcpus 4,maxvcpus=8 \
--disk path=/data/kvm/imgs/template-centos7-3-1611.img,bus=virtio,format=qcow2,size=100,sparse,cache=none \
--location=/data/kvm/os/CentOS-7-x86_64-DVD-1611.iso \
--network bridge=br0,model=virtio \
--os-type=linux \
--os-variant=rhel7 \
--graphics vnc \
--autostart \
--accelerate \
--noautoconsole \
--force

参数说明:
--name:必不可少,虚拟机实例名称,virsh可以通过虚拟机实例的运行ID号及该名称对实例进程操作;
--metadata:title选项是虚拟机实例的简短描述信息,可自行定义,通过virsh list --title进行查看;
--memeory:设定maxmemory,目的是后续可以对虚拟机的内存进行热扩容;
--vcpus:设定maxvcpus,目的是后续可以对虚拟机的VCPU数量进行热扩容;


五,使用virt-manager+xmanager来图形化界面安装操作系统
1)在远程宿主机上配置变量如下:
# LANG=en_US.utf8
# export DISPLAY='192.168.13.105:0.0'
注意:这里的ip地址换成你可以连接到远程主机的实际的IP地址
2)在本地电脑安装了xmamager,并且配置xshell如下,通过xshell连接的远程宿主机:
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机
3)启动xmanager-passive
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机

4)然后,在远程宿主机上执行virt-manager命令,会在本地打开图形化管理界面来安装操作系统
# virt-manager
!!!提示:若本地窗口出现乱码,则需要在远程宿主机上执行yum -y install xorg-x11-font*这些字体包;
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机
操作完上图中的步骤2,则可以打开虚拟机的操作系统安装界面,按照提示一步一步操作即可。

通过图形界面窗口控制台做下面的6操作:
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机


六,配置虚拟机的网络(在虚拟机上)
1)网卡配置,这里配置一个临时地址使用,用于ssh连接过去方便复制粘贴及文件传输
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=no
PEERROUTES=no
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
#UUID=2030e1ef-3890-4f56-a3e6-47f9de376d58
DEVICE=eth0
ONBOOT=yes
IPADDR=10.1.73.9
NETMASK=255.255.255.0
GATEWAY=10.1.73.1
NM_CONTROLLED=no
2)主机名配置
# hostnamectl set-hostname YOUR_HOSTNAME
3)DNS配置:/etc/hosts和/etc/resolv.conf(根据实际需要看是否要配置)
重启network
# systemctl restart network


七,给虚拟机添加数据盘(在宿主机上)
# virsh attach-disk --domain template --source /data/kvm/imgs/template-centos7-3-1611_data.img --target vdb --targetbus virtio --driver qemu --subdriver qcow2 --sourcetype file
--cache none --persistent
Disk attached successfully
注意:
--source跟的img路径必须是绝对路径。
--target:这是在虚拟机中显示的磁盘设备文件名称,在确定之前务必先到虚拟机中确认已有磁盘的设备文件名称。
--persistent:表示对运行的虚拟机以及其配置文件都会生效。
这里到虚拟机中使用fdisk -l查看磁盘发现标志的是214.7GB,原因是这里的磁盘换算单位以1000为进制;而我们使用qemu-img创建磁盘的时候换算单位是1024,故而由此差异;在下面创建逻辑卷的过程中,查看的时候就是200G。
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机


八,配置虚拟机可以在宿主机上通过virsh console命令连接控制台(在虚拟机上):
# grep -i "ttyS0" /etc/securetty || echo "ttyS0" >> /etc/securetty
# vi /boot/grub2/grub.cfg
linux16 /vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/rootvg-rootlv ro crashkernel=auto rd.lvm.lv=rootvg/rootlv rhgb quiet LANG=zh_
CN.UTF-8 console=ttyS0
linux16 /vmlinuz-0-rescue-98a6cc2774a14f4fad9b048d99d54d37 root=/dev/mapper/rootvg-rootlv ro crashkernel=auto rd.lvm.lv=rootvg/rootlv
rhgb quiet console=ttyS0
# reboot
# virsh console template
连接成功


九,数据磁盘分区格式化挂载(在虚拟机上):
# mkdir /data
# parted /dev/vdb
GNU Parted 3.1
使用 /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary 0% 100%
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 215GB 215GB primary
(parted) set 1 lvm on
(parted) p
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 215GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 215GB 215GB primary lvm
(parted) quit
信息: You may need to update /etc/fstab.

# cat /proc/partitions
major minor #blocks name
252 16 209715200 vdb
252 17 209713152 vdb1

# pvcreate /dev/vdb1
Physical volume "/dev/vdb1" successfully created.
# vgcreate -s 4M datavg /dev/vdb1
Volume group "datavg" successfully created
# vgdisplay
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机
# lvcreate -l 51199 -n datalv datavg
Logical volume "datalv" created.
# mkfs -t xfs /dev/datavg/datalv
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机
# mount -t xfs /dev/datavg/datalv /data
# df -h
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机
# blkid
# vi /etc/fstab
双硬盘(系统盘和数据盘)创建第一台kvm虚拟机双硬盘(系统盘和数据盘)创建第一台kvm虚拟机
十,创建目录结构(在虚拟机上)
# mkdir -pv /data/{src,scripts}


十一,上传脚本、模板和安装包(在虚拟机上)
脚本放到/data/scripts目录下。
安装包、配置模板、CentOS-7-x86_64-DVD-1611.iso系统镜像放到/data/src目录下。


十二,系统初始化及服务器安全检查配置(在虚拟机上)
# sh -x /data/scripts/osInit_centos7.sh

十三,配置本地yum源(可选)
注意:务必确保有yum源可以正常使用。
# mkdir -pv /media/cdrom
# mount -t iso9660 -o loop /data/src/CentOS-7-x86_64-DVD-1611.iso /media/cdrom
# sed -i '$a\/data/src/CentOS-7-x86_64-DVD-1611.iso /media/cdrom iso9660 defaults,ro,loop 0 0' /etc/fstab
# mount -a
# cd /etc/yum.repos.d/
# for i in $(ls);do mv ./$i ./${i}.bak;done
# cat > /etc/yum.repos.d/CentOS-Local.repo <<EOF
[local]
name=CentOS7.3.1611
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
EOF
# yum repolist

十四,ssh升级(在虚拟机上)
# sh -x /data/scripts/sshUpdate_centos7.sh


十五,安装了zabbix_proxy和zabbix_agent(在虚拟机上)
后面根据需要启用即可;
# sh -x /data/scripts/zabbix_proxy_and_agent_centos7.sh
后续根据需要手动配置proxy和agent配置文件


十六,拷贝虚拟机模板到指定目录备用(在宿主机上)
# virsh list --all --title
# virsh shutdown template------这里的template是kvm虚拟机实例的Name。
# virsh list --all----确保虚拟机已经关闭了。
# cp /etc/libvirt/qemu/template.xml /data/kvm/templates/template-centos7-3-1611.xml
# mv /data/kvm/imgs/template-centos7-3-1611.img /data/kvm/templates/
# mv /data/kvm/imgs/template-centos7-3-1611_data.img /data/kvm/templates/
# virsh undefine template------彻底删除模板虚拟机实例

十七,克隆新的虚拟机:
# cd /data/scripts/
# sh -x /data/7sys_double.sh
根据提示输入相应的信息;