自定義虛擬機安裝
一、創建虛擬交換機
原理:調用 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>
二、真機room上快速配置網絡 yum 源
[root@room ~]# yum install vsftp
[root@room ~]# vim /etc/vsftpd/vsftpd.conf
...
listen=YES
listen_ipv6=NO
...
[root@room ~]# systemctl enable vsftpd
[root@room ~]# systemctl start vsftpd
[root@room ~]# mkdir /var/ftp/centos7
[root@room ~]# mount –t iso9660 –o loop,ro /root/CentOS7-1708.iso /var/ftp/centos7
[root@room ~]# yum repolist
三、virt-manager圖形化安裝虛擬機
1.啓動 virt-manager 軟件,選擇新建虛擬機
2.選擇網絡安裝源
3. 創建自定義鏡像文件node.img
[root@room ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/node.img 16G
4. 網絡選擇自定義的vbr
5. 軟件選擇 minimal ,關閉 KDUMP,選擇手工分區
四、虛擬機模板製作
把剛剛安裝好的系初始化
1. 禁用 selinux
[root@localhost ~]# vim /etc/selinux/config
SELINUX=disabled
2. 卸載相關軟件
[root@localhost ~]# yum remove -y NetworkManager-* firewalld-*
3. 配置 yum 源
[root@localhost ~]# vim /etc/yum.repo.d/centos7.repo
[local_repo]
name=centos7
baseurl="ftp://192.168.1.254/centos7"
enabled=1
gpgcheck=0
4. 常用系統命令安裝
[root@localhost ~]# yum install -y net-tools vim-enhanced bridge-utils
5. 修改網卡配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
TYPE="Ethernet"
BOOTPROTO ="dhcp"
6. 禁用空路由
[root@localhost ~]# vim /etc/sysconfig/network
NOZEROCONF="yes"
7. 重啓機器
[root@localhost ~]# reboot
8. 添加 Console 配置及初除磁盤分區裏的個性化信息
[root@localhost ~]# vim /etc/default/grub
...
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0
console=ttyS0,115200n8"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
9. 重新生成 grub.cfg
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
10. 修改 /etc/fstab,blkid 查看 uuid 對應的磁盤設備, 將UUID修改爲系統設備
[root@localhost ~]# blkid
/dev/vda1: UUID="98bd48a3-dd66-49bd-a0e1-3c70e337f2aa" TYPE="xfs"
[root@localhost ~]# vim /etc/fstab
/dev/vda1 / xfs defaults 0 0
11. 安裝分區擴展軟件
[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 # 擴展磁盤分區空間(讓 /dev/vda1 變大)
/usr/sbin/xfs_growfs / # 擴展文件系統識別空間(讓 df -h 可使用空間變大)
12. 關閉虛擬機,清理信息 (真機)
[root@room ~]# virt-sysprep -d centos7.0
[ 0.0] Examining the guest ...
[ 28.9] Performing "abrt-data" ...
[ 28.9] Performing "backup-files" ...
[ 29.2] Performing "bash-history" ...
[ 29.2] Performing "blkid-tab" ...
[ 29.3] Performing "crash-data" ...
[ 29.3] Performing "cron-spool" ...
[ 29.3] Performing "dhcp-client-state" ...
[ 29.3] Performing "dhcp-server-state" ...
[ 29.3] Performing "dovecot-data" ...
[ 29.3] Performing "logfile s" ...
[ 29.3] Performing "machine-id" ...
[ 29.3] Performing "mail-spool" ...
[ 29.3] Performing "net-hostname" ...
[ 29.3] Performing "net-hwaddr" ...
[ 29.3] Performing "pacct-log" ...
[ 29.3] Performing "package-manager-cache" ...
[ 29.3] Performing "pam-data" ...
[ 29.3] Performing "passwd-backups" ...
[ 29.3] Performing "puppet-data-log" ...
[ 29.3] Performing "rh-subscription-manager" ...
[ 29.3] Performing "rhn-systemid" ...
[ 29.3] Performing "rpm-db" ...
[ 29.3] Performing "samba-db-log" ...
[ 29.3] Performing "script" ...
[ 29.3] Performing "smolt-uuid" ...
[ 29.3] Performing "ssh-hostkeys" ...
[ 29.3] Performing "ssh-userdir" ...
[ 29.3] Performing "sssd-db-log" ...
[ 29.3] Performing "tmp-files" ...
[ 29.3] Performing "udev-persistent-net" ...
[ 29.3] Performing "utmp" ...
[ 29.3] Performing "yum-uuid" ...
[ 29.3] Performing "customize" ...
[ 29.3] Setting a random seed
[ 29.8] Performing "lvm-uuids" ...
13. 備份虛擬機XML配置文件
[root@room ~]#cd /etc/libvirt/qemu/
[root@room qemu]#cp centos7.xml centos7.0.xml.bak
14. 修改XML配置文件如下
<domain type='kvm'>
<name>node</name>
<memory unit='KB'>2097152</memory>
<currentMemory unit='KB'>2097152</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
<bootmenu enable='yes'/>
<bios useserial='yes'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'>
</cpu>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/node.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='bridge'>
<source bridge='vbr'/>
<model type='virtio'/>
</interface>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<serial type='pty'></serial>
<console type='pty'>
<target type='serial'/>
</console>
<memballoon model='virtio'></memballoon>
</devices>
</domain>
15. 刪除虛擬機定義
[root@room ~]# virsh undefine centos7.0
16. 查看模板虛擬機鏡像
[root@room ~]# ll -h /var/lib/libvirt/images/node.img
-rw-r--r-- 1 root root 1.2G 9月 7 17:35 node.img
五. 快速創建虛擬機-----例如創建虛擬機node1
1. 創建磁盤文件
[root@room ~]# cd /var/lib/libvirt/images
[root@room images]# qemu-img create -b node.img -f qcow2 node1.img 32G
2. 創建虛擬機配置文件
[root@room images]#sed 's/node/node1/' /root/nsd1804/centos7.0.xml > /etc/libvirt/qemu/node1.xml
[root@room images]#virsh define /etc/libvirt/qemu/node1.xml
定義域 node1(從 /etc/libvirt/qemu/node1.xml)
3. 啓動虛擬機
[root@room images]#virsh start node1
域 node1 已開始
4. 連接查看虛擬機
[root@room images]# virsh console node1