目录
🍁基础本环境配置
🍁添加lvm卷
🍁qemu-img创建磁盘文件
🍂创建raw格式
🍂创建虚拟机
🍂转换格式为qcow2
🍁virt-install命令参数
🍁案例操作
🦐博客主页:大虾好吃吗的博客
🦐专栏地址:KVM虚拟化专栏
最小化安装centos系统,勾选虚拟化功能。
基础本环境配置
修改网卡信息,因为最小化安装没有vim,这里先使用vi命令修改网卡信息
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static #修改
ONBOOT=yes #修改
IPADDR=192.168.8.10 #下面四行添加
GATEWAY=192.168.8.254
NETMASK=255.255.255.0
DNS1=8.8.8.8
[root@localhost ~]# systemctl restart network
永久关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
永久关闭selinux
[root@localhost ~]# vi /etc/sysconfig/selinux
SELINUX=disabled #修改
[root@localhost ~]# setenforce 0
配置yum仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv *.repo backup/
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost yum.repos.d]# ls
backup CentOS-Base.repo
安装基本环境、上传下载功能
[root@localhost ~]# yum -y groupinstall base
[root@localhost ~]# yum -y update
[root@localhost ~]# yum -y install lrzsz
安装虚拟化软件
[root@localhost ~]# yum -y install qemu-img qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils
查看是否支持kvm
[root@localhost ~]# lsmod | grep kvm
kvm_intel 188740 0
kvm 637289 1 kvm_intel
irqbypass 13503 1 kvm
添加lvm卷
正常情况下,我们是要创建多个虚拟机,但是磁盘却只有20G(创建时默认),这远远不够。这时我们就需要添加硬盘,而lvm正是我们优先考虑的,当空间不够了还可以继续扩容。打开VMware添加一块100G的磁盘空间,使用lsblk命令查看100G的磁盘空间,因为是开机状态添加的磁盘,需要扫描才能查看到。
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0
[root@localhost ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# vgcreate vg01 /dev/sdb
Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay #查看vg01中PE的数量,指定全部空间给逻辑卷
#省略部分内容
Total PE 25599
[root@localhost ~]# lvcreate -n lv01 -l 25599 vg01
Logical volume "lv01" created.
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=4, agsize=6553344 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=26213376, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir /kvm
[root@localhost ~]# mount /dev/vg01/lv01 /kvm
[root@localhost ~]# vim /etc/fstab
/dev/vg01/lv01 /kvm xfs default 0 0
[root@localhost ~]# cd /kvm
[root@localhost kvm]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 12M 3.8G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 2.2G 15G 13% /
/dev/sda1 xfs 1014M 183M 832M 19% /boot
tmpfs tmpfs 781M 0 781M 0% /run/user/0
/dev/mapper/vg01-lv01 xfs 100G 33M 100G 1% /kvm
qemu-img创建磁盘文件
通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁盘格式必须为qcow2。
raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。所有有时候,我们需要将raw格式的磁盘转换成qcow2格式。
创建raw格式
先在kvm目录下创建img(存放系统)、iso(存放系统镜像)
[root@localhost kvm]# mkdir img iso
[root@localhost kvm]# ls
img iso
[root@localhost kvm]# qemu-img create /kvm/img/centos01.img 8G
Formatting '/kvm/img/centos01.img', fmt=raw size=8589934592
查看
[root@localhost kvm]# ll -h img
total 0
-rw-r--r--. 1 root root 8.0G Apr 18 09:45 centos01.img
[root@localhost kvm]# qemu-img info img/centos01.img
image: img/centos01.img
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: 0
创建虚拟机
使用dd命令,导入centos7.9的镜像。
[root@localhost kvm]# dd if=/dev/sr0 of=/kvm/iso/centos7.iso
9203712+0 records in
9203712+0 records out
4712300544 bytes (4.7 GB) copied, 129.538 s, 36.4 MB/s
创建虚拟机
[root@localhost kvm]# virt-install --name vm01 --vcpus 1 --ram 1024 --disk /kvm/img/centos01.img,format=raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0 --location=/kvm/iso/centos7.iso
Starting install...
Retrieving file .treeinfo... | 354 B 00:00
Retrieving file vmlinuz... | 6.5 MB 00:00
Retrieving file initrd.img... | 53 MB 00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
错误分析
根据下图可以看到,这时检查口libvirtd服务状态,如果未开启则开启。
[root@localhost kvm]# systemctl status libvirtd
[root@localhost kvm]# systemctl start libvirtd
因为是最小化安装,没有图形化界面,但是上面创建的虚拟机添加了显示协议vnc,可以连接vnc客户端界面安装。
转换格式为qcow2
[root@localhost kvm]# qemu-img convert -f raw -O qcow2 /kvm/img/centos01.img /kvm/img/centos01.qcow2
[root@localhost kvm]# ll img/centos01.qcow2
-rw-r--r--. 1 root root 197120 Apr 18 10:15 img/centos01.qcow2
[root@localhost kvm]# qemu-img info img/centos01.qcow2
image: img/centos01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
virt-install命令参数
通用选项:
-n NAME,--name=NAME #虚拟机名称
-r MEMORY, --ram=MEMORY #以MB为单位为客户端事件分配的内存
--vcpus=VCPUS #配置虚拟机的虚拟CPU(vcpu)数量,如下所示:
--vcpus 5
--vcpus 5, maxcpus=10
--vcpus socket=2,cores=4,threads=2
--cpuset=CPUSET #Set which physical CPUs domain can use.
--cpu=CPU #CPU型号及功能,如:--cpu coreduo,+x2apic
--description=DESCRIPTION #在生成的XML中保存的可读VM描述。
--security=SECURITY #设定域安全驱动器配置。
--numatune=NUMATUNE #为域进程调整NUMA策略。
安装方法选项:
-c CDROM, --cdrom=CDROM #光驱安装介质
-l LOCATION, --location=LOCATION #安装源(例如:nfs:host:/path、http://host/path、ftp://host/path)
--pxe #使用 PXE 协议从网络引导
--import #在磁盘映像中构建客户机
--livecd #将光驱介质视为 Live CD
-x EXTRA, --extra-args=EXTRA #附加到使用--location引导的内核的参数
--os-type=DISTRO_TYPE #操作系统类型,'linux'、'unix'、'windows'
--os-variant=DISTRO_VARIANT #操作系统版本,如: 'fedora6','rhel5', 'solaris10', 'win2k'
--boot=BOOTOPTS #自选配置后安装引导顺序、菜单、永久kernel引导,等等。
存储配置:
--disk=DISKOPTS #用各种选项指定存储。
--disk path=/my/existing/disk
--disk path=/my/new/disk,size=5 (单位GB)
--disk vol=poolname:volname,device=cdrom,bus=scsi,...
--nodisks #不为该客户端设置任何磁盘。
--filesystem=FILESYSTEMS #将主机目录传递给虚拟机。如下所示:
--filesystem /my/source/dir,/dir/in/guest
--filesystem template_name,/,type=template
联网配置:
-w NETWORK, --network=NETWORK #配置客户网络接口。
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network network=mynet,model=virtio,mac=00:11...
--nonetworks #不为该客体创建网络接口。
图形配置:
--graphics=GRAPHICS #配置虚拟机显示设置。如下所示:
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--noautoconsole #不要自动尝试连接到客户端控制台
设备选项:
--serial=SERIALS #配置虚拟机串口设备
--parallel=PARALLELS #配置虚拟机并口设备
--channel=CHANNELS #配置虚拟机沟通频道
--console=CONSOLES #配置虚拟机与主机之间的文本控制台连接
--host-device=HOSTDEVS #配置与客户相连的物理主机设备
--soundhw=SOUNDHW #配置客户声音设备仿真
--watchdog=WATCHDOG #配置虚拟机 watchdog 设备
--video=VIDEO #配置虚拟机视频硬件。
--smartcard=SMARTCARD #配置虚拟机智能卡设备。如下所示:
--smartcard mode=passthrough
--redirdev=REDIRDEV #Configure a guest redirection device. 如下所示:
--redirdev usb,type=tcp,server=192.168.1.1:4000
虚拟化平台选项:
-v, --hvm #客户端应该是一个全虚拟客户端
-p, --paravirt #这个客户端是一个半虚拟客户端
--container T #his guest should be a container guest
--virt-type=HV_TYPE #要使用的管理程序名称(kvm、qemu、xen)
--arch=ARCH #模拟的 CPU 构架
--machine=MACHINE #The machine type to emulate
--noacpi #为全虚拟客户端禁用 ACPI(在 os-type/os-variant db 中覆盖数值)
-u UUID, --uuid=UUID #客户端 UUID。
其它选项:
--autostart #引导主机时自动启动域。
--print-xml #输出所生成域的XML,而不是定义虚拟机。
--print-step=XMLSTEP #输出具体安装步骤
--noreboot #完成安装后不要引导虚拟机。
--wait=WAIT #要等待的时间(以分钟为单位)
--dry-run #完成安装步骤,但不要创建设备或者定义虚拟机。
--force #对任意应用程序提示强制回答‘yes’,终止其它提示
-q, --quiet #禁止无错误输出
--prompt #要求用户为模糊情况或者需要的选项输入
-d, --debug #输入故障排除信息
案例操作
案例1:使用qemu-img命令创建一个qcow2格式的虚拟机磁盘文件,并使用virt-install命令创建虚拟机。
[root@localhost ~]# qemu-img create -f qcow2 /kvm/img/vm1.qcow2 10G
Formatting '/kvm/img/vm1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost ~]# virt-install --name myvm1 -r1024 --vcpus 1 --location /kvm/iso/centos7.iso --disk /kvm/img/vm1.qcow2 --nographics -x "console=ttyS0"
执行创建命令后,等待系统安装完成,进入初始化环境配置设置,修改语言、磁盘分配、安装软件、设置密码等操作。我们这里[x]保持默认,[ ! ]需要修改一下,根据需求修改吧。比如第二个设置语言,在下方输入2,进入后有两个选项分别是设置时间和设置NTP,这里选择1设置时间,选择2 Asia,下面选择不全,让你按回车键显示全部,这里找到shanghai,我这里是65,输入后自动转跳回设置界面,继续选择设置[ ! ]即可。设置完成后,选择b开始安装。
通过这里的安装界面,我们可以看到,全是英文字符串格式,对我们来说,设置起来无疑是增加了一些难度。下面通过vnc图形化远程安装,和正常装机没有太多区别,给我们省下很多事。
案例2:vnc安装虚拟机,通过qemu-img命令创建一个qcow2格式的虚拟机磁盘文件,并使用virt-install命令创建虚拟机。
首先安装vncserver
[root@localhost ~]# yum -y install tigervnc-server
[root@localhost ~]# cp /usr/lib/systemd/system/vncserver@.service /usr/lib/systemd/system/vncserver@:1.service
[root@localhost ~]# vim /usr/lib/systemd/system/vncserver@:1.service
#修改下面
ExecStart=/usr/bin/vncserver_wrapper root %i
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# vncpasswd #设置密码(六位)
Password:
Verify:
创建虚拟机
[root@localhost ~]# qemu-img create -f qcow2 /kvm/img/vnc1.qcow2 10G
Formatting '/kvm/img/vnc1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost ~]# virt-install -n myvnc -r 1024 --vcpus 1 -l /kvm/iso/centos7.iso --disk /kvm/img/vnc1.qcow2 --graphics vnc,listen=0.0.0.0,port=6000 --noautoconsole
WARNING No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.
Starting install...
Retrieving file .treeinfo... | 354 B 00:00
Retrieving file vmlinuz... | 6.5 MB 00:00
Retrieving file initrd.img... | 53 MB 00:00
Domain installation still in progress. You can reconnect to
the console to complete the installation process.
使用vnc客户端登录IP加端口号,就进入图形化安装界面了。案例1和案例2的区别在于显示位置,案例1为ttyS0,案例2为vnc。