虚拟化KVM
虛擬化
安裝KVM
修改虛擬機內存,至少設置成2 GB,雙擊“編輯虛擬機設置”按鈕
然后新建硬盤設置大小50G
檢查CPU參數
啟動虛擬機,我們查看以下,內存是否更改成功
檢查CPU是否開啟虛擬化支持,命令:
root@kvm ~]# grep -Ei 'vmx|svm' /proc/cpuinfo //vmx為英特爾的cpu;svm為AMD的cpu。 flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xsaves flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec xsaves如果顯示為空,就要檢查你虛擬機設置,是否打“√”
掛載新磁盤
使用lsblk命令,檢查虛擬機是否新增一塊50 GB的磁盤
我們可以看到確實新增了一塊磁盤名為sdb。
接下來格式化這塊磁盤,格式化成ext4格式,命令如下:
格式化完成后,我們掛載磁盤,先創建掛載目錄/kvm_data,然后進行掛載,命令如下:
[root@kvm ~]# mkdir /kvm_data [root@kvm ~]# mount /dev/sdb /kvm_data/這種方式掛載,重啟虛擬機后,需要再次重新掛載,我們為了方便開機后可以自動掛載,編寫/etc/fstab文件,添加文件最末一行,命令如下:
[root@kvm ~]# vi /etc/fstab [root@kvm ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Thu Aug 22 22:51:46 2019 # # 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/mapper/centos-root / xfs defaults 0 0 UUID=34f3cd91-b7f0-44dd-9334-2bb66e939898 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/sdb /kvm_data ext4 defaults 0 0關閉防火墻和selinux
關閉防火墻并設置開機不自啟
關閉SELinux,編輯/etc/selinux/config,將enforcing修改為disabled,命令如下
[root@kvm ~]# vi /etc/selinux/config [root@kvm ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled //修改這一位置的內容 # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted修改完成后,重啟虛擬機,使其生效,使用getenforce查看
[root@kvm ~]# getenforce Disabled安裝KVM
上述操作完成后,我們使用Yum進行安裝KVM,命令如下
[root@kvm ~]# yum install -y virt-* libvirt bridge-utils qemu-img ………… Complete!啟動KVM
配置網卡
增加橋接網卡ifcfg-br0
修改橋接網卡 ifcfg-br0 的內容
[root@kvm network-scripts]# vi ifcfg-br0 [root@kvm network-scripts]# cat ifcfg-br0 TYPE=Bridge BOOTPROTO=none NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.16.5 NETMASK=255.255.255.0 GATEWAY=192.168.16.2 DNS1=114.114.114.114 DNS2=8.8.8.8修改NAT網卡ifcfg-eno16777736
[root@kvm network-scripts]# vi ifcfg-en [root@kvm network-scripts]# cat ifcfg-ens33 TYPE=Ethernet BOOTPROTO=none NAME=eno16777736 DEVICE=eno16777736 ONBOOT=yes BRIDGE=br0修改完成網卡內容后,重新啟動網卡服務并查看網卡信息,命令如下
[root@kvm network-scripts]# service network restart Restarting network (via systemctl): [ OK ][root@kvm network-scripts]# ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.16.5 netmask 255.255.255.0 broadcast 192.168.16.255inet6 fe80::20c:29ff:fe8d:1f90 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:8d:1f:90 txqueuelen 0 (Ethernet)RX packets 90 bytes 7092 (6.9 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 38 bytes 3604 (3.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ether 00:0c:29:8d:1f:90 txqueuelen 1000 (Ethernet)RX packets 126287 bytes 182444678 (173.9 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 32532 bytes 2953477 (2.8 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 0 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0啟動libvirtd服務
首先檢查KVM模塊是否加載,命令如下(lsmod命令用于顯示已載入系統的模塊):
啟動libvirtd并檢查是否成功啟動,命令如下:
[root@kvm network-scripts]# systemctl start libvirtd [root@kvm network-scripts]# ps -ef |grep libvirt root 17270 1 1 04:36 ? 00:00:00 /usr/sbin/libvirtd nobody 17383 1 0 04:36 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 17384 17383 0 04:36 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper root 17416 2264 0 04:36 pts/0 00:00:00 grep --color=auto libvirt啟動成功后,使用brctl命令可以看到兩個網卡,如下代碼所示:
[root@kvm ~]# cd [root@kvm ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c298d1f90 no eno16777736 virbr0 8000.525400c7e229 yes virbr0-nic命令行安裝CentOS 7
CentOS7鏡像下載地址:
首先,通過SCRT上傳CentOS 7鏡像到/tmp目錄下,如果沒有鏡像的可以自行下載。上傳后,使用ll命令查看/tmp目錄下是否存在CentOS 7鏡像文件,命令如下:
[root@kvm ~]# ll /tmp/ total 4228096 -rw-r--r-- 1 root root 4329570304 Apr 15 2016 CentOS-7-x86_64-DVD-1511.iso鏡像存在,接下來使用virt-install進行CentOS 7的安裝
[root@kvm ~]# virt-install --name=test --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1511.iso --disk path=/kvm_data/test.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"打完上面那條命令后,等一會,就可以看見下面這段命令
Starting installer, one moment... anaconda 21.48.22.56-1 for CentOS 7 started.* installation log files are stored in /tmp during the installation* shell is available on TTY2* when reporting a bug add logs from /tmp as separate text/plain attachments 17:01:51 Not asking for VNC because we don't have a network ================================================================================ ================================================================================ Installation1) [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]: 2 =====================================================================輸入2 進行時區設置
Timezone settings”時區設置選擇 5) Asia亞洲,再選擇城市 62) Shanghai上海
輸入完畢后,可以發現2的[!]變成了[x],證明配置完畢。
接下來我們配置“Software selection”,選擇“4”,在選擇“c”,因為默認就是minimalinstall,按Enter鍵,命令如下
接下來配置“Root password”,選擇8,按Enter鍵,命令如下
Installation1) [x] Language settings 2) [x] Timezone settings(English (United States)) (Asia/Shanghai timezone)3) [x] Installation source 4) [x] Software selection(Local media) (Minimal Install)5) [x] Installation Destination 6) [x] Kdump(Automatic partitioning selecte (Kdump is enabled)d) 8) [!] Root password7) [ ] Network configuration (Password is not set.)(Not connected)9) [!] User creation(No user will be created)Please make your choice from above ['q' to quit | 'b' to begin installation |'r' to refresh]: 8 ================================================================================ ================================================================================ Please select new root password. You will have to type it twice.依次輸入兩次密碼,密碼相同,我設置的為123456
Password: 123456 //密碼為密文,不顯示。 Password (confirm): 123456 ================================================================================ ================================================================================ QuestionYou have provided a weak password: The password fails the dictionary check - it is too simplistic/systematic Would you like to use it anyway? //這句話的意思:你的密碼太過簡單,是否使用它,輸入yes即可。 Please respond 'yes' or 'no': yes ========================================================= =========================================================配置完成,選擇“b”,按Enter鍵后,開始安裝,命令如下
Installation1) [x] Language settings 2) [x] Timezone settings(English (United States)) (Asia/Shanghai timezone)3) [x] Installation source 4) [x] Software selection(Local media) (Minimal Install)5) [x] Installation Destination 6) [x] Kdump(Automatic partitioning selecte (Kdump is enabled)d) 8) [x] Root password7) [ ] Network configuration (Password is set.)(Not connected)9) [ ] User creation(No user will be created)Please make your choice from above ['q' to quit | 'b' to begin installation |'r' to refresh]: b ================================================================================ ================================================================================ Progress Setting up the installation environment . Creating disklabel on /dev/vda . Creating xfs on /dev/vda1 . Creating lvmpv on /dev/vda2 . Creating swap on /dev/mapper/centos-swap . …………………… Installing readline (34/297) Installing gawk (35/297) Installing elfutils-libelf (36/297) Installing libgpg-error (37/297) Installing libffi (38/297) Installing libattr (39/297) Installing libacl (40/297) Installing libcap (41/297) Installing libgcrypt (42/297) Installing cpio (43/297) Installing libxml2 (44/297) Installing libnl3 (45/297) Installing expat (46/297) Installing p11-kit (47/297) …………………… . Performing post-installation setup tasks . Configuring installed system . Writing network configuration . Creating users . Configuring addons . Generating initramfs . Running post-installation scripts .Use of this product is subject to the license agreement found at /usr/share/centos-release/EULAInstallation complete. Press return to quit//按回車
…………………… CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 localhost login: root Password: 123456 [root@localhost ~]# //按“Ctrl+]”鍵,退出終端,回到宿主機。 [root@kvm ~]#CentOS 7安裝完成
虛擬機管理
KVM基本管理
完成虛擬機安裝,已經退回到宿主機,接下來我們來通過宿主機virsh命令進行管理剛才安裝的CentOS 7虛擬機。
查看虛擬機列表,命令如下:
進入指定的虛擬,命令如下:
[root@kvm ~]# virsh console test Connected to domain test Escape character is ^] //如果遲遲未動敲下回車就ok,下面就是正常登錄時需要輸入的用戶名密碼 CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64localhost login:若發生以下報錯信息,命令如下:
[root@kvm ~]# virsh console test Connected to domain test Escape character is ^] error: operation failed: Active console session exists for this domain解決方式,命令如下:
[root@kvm ~]# ps -ef |grep console root 11167 10987 0 01:55 tty1 00:00:00 virsh console test root 16017 15750 0 10:01 pts/1 00:00:00 grep --color=auto console [root@kvm ~]# kill -9 11167vrish常用命令,命令如下:
virsh shutdown test //關閉虛擬機 virsh start test //開啟虛擬機 virsh destroy test //類似stop,這個是強制停止 virsh undefine test //徹底銷毀虛擬機,會刪除虛擬機配置文件,virsh list --all就看不到 virsh autostart test //宿主機開機該虛擬機也開機 virsh autostart --disable test //解除開機啟動 virsh suspend test //掛起 virsh resume test //恢復克隆虛擬機
克隆虛擬機之前,要先關閉虛擬機,不然會提示這種錯誤,命令如下:
關閉虛擬機后,再次進行克隆,命令如下
[root@kvm ~]# virsh shutdown test Domain test is being shutdown [root@kvm ~]# virt-clone --original test --name test02 --file /kvm_data/test02.img Allocating 'test02.img' 3% [= ] 20 MB/s | 365 MB 00:08:23 ETA //開始克隆 [root@kvm ~]# virt-clone --original test --name test02 --file /kvm_data/test02.img Allocating 'test02.img' | 10 GB 00:00:35 Clone 'test02' created successfully.//克隆完成且成功
查看虛擬機配置文件/etc/libvirt/qemu/,看是否增加test02.xml文件,命令如下:
接下來,我們啟動剛剛克隆的虛擬機test02,首先查看虛擬機列表,然后啟動克隆的虛擬機test02,命令如下:
[root@kvm ~]# virsh list --allId Name State ----------------------------------------------------- test shut off- test02 shut off[root@kvm ~]# virsh start test02 Domain test02 started快照管理
快照是在我們使用Vmware的時候,很常用的一個功能。它可以回到之前的某一狀態。在KVM中RAW格式的虛擬磁盤不支持做快照,qcow2支持。
創建快照,命令如下:
查看test.img信息,同時會查看到快照列表,命令如下
[root@kvm ~]# qemu-img info /kvm_data/test.img image: /kvm_data/test.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 1.1G cluster_size: 65536 Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 1588485687 0 2020-05-03 14:01:27 00:00:00.000 Format specific information:compat: 1.1 lazy refcounts: true列出所有快照,命令如下:
[root@kvm ~]# virsh snapshot-list testName Creation Time State ------------------------------------------------------------1588485687 2020-05-03 14:01:27 +0800 shutoff查看當前快照詳細信息,命令如下:
[root@kvm ~]# virsh snapshot-current test <domainsnapshot><name>1588485687</name><state>shutoff</state><creationTime>1588485687</creationTime><memory snapshot='no'/><disks><disk name='vda' snapshot='internal'/><disk name='hda' snapshot='no'/></disks><domain type='kvm'><name>test</name><uuid>49d7cb9c-20dc-42dd-a260-01532b5132e5</uuid><memory unit='KiB'>1048576</memory><currentMemory unit='KiB'>524288</currentMemory><vcpu placement='static' current='1'>2</vcpu><os><type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type><boot dev='hd'/></os><features><acpi/><apic/></features><cpu mode='custom' match='exact' check='partial'><model fallback='allow'>Broadwell-noTSX-IBRS</model><feature policy='require' name='md-clear'/><feature policy='require' name='spec-ctrl'/><feature policy='require' name='ssbd'/></cpu><clock offset='utc'><timer name='rtc' tickpolicy='catchup'/><timer name='pit' tickpolicy='delay'/><timer name='hpet' present='no'/></clock><on_poweroff>destroy</on_poweroff><on_reboot>restart</on_reboot><on_crash>destroy</on_crash><pm><suspend-to-mem enabled='no'/><suspend-to-disk enabled='no'/></pm><devices><emulator>/usr/libexec/qemu-kvm</emulator><disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/kvm_data/test.img'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/></disk><disk type='file' device='cdrom'><driver name='qemu' type='raw'/><target dev='hda' bus='ide'/><readonly/><address type='drive' controller='0' bus='0' target='0' unit='0'/></disk><controller type='usb' index='0' model='ich9-ehci1'><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/></controller><controller type='usb' index='0' model='ich9-uhci1'><master startport='0'/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/></controller><controller type='usb' index='0' model='ich9-uhci2'><master startport='2'/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/></controller><controller type='usb' index='0' model='ich9-uhci3'><master startport='4'/><address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/></controller><controller type='ide' index='0'><address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/></controller><controller type='virtio-serial' index='0'><address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/></controller><controller type='pci' index='0' model='pci-root'/><interface type='bridge'><mac address='52:54:00:93:bf:07'/><source bridge='br0'/><model type='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/></interface><serial type='pty'><target type='isa-serial' port='0'><model name='isa-serial'/></target></serial><console type='pty'><target type='serial' port='0'/></console><channel type='unix'><target type='virtio' name='org.qemu.guest_agent.0'/><address type='virtio-serial' controller='0' bus='0' port='1'/></channel><input type='mouse' bus='ps2'/><input type='keyboard' bus='ps2'/><memballoon model='virtio'><address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/></memballoon><rng model='virtio'><backend model='random'>/dev/urandom</backend><address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/></rng></devices></domain> </domainsnapshot>查看所有快照配置文件,命令如下:
[root@kvm ~]# ls /var/lib/libvirt/qemu/snapshot/test/ 1588485687.xml恢復指定快照,命令如下:
[root@kvm ~]# virsh snapshot-revert test 1588485687刪除指定快照,命令如下:
[root@kvm ~]# virsh snapshot-delete test 1588485687 Domain snapshot 1588485687 deleted磁盤格式
查看虛擬磁盤格式,命令如下:
創建2 GB的RAW格式磁盤
[root@kvm ~]# qemu-img create -f raw /kvm_data/test_1.img 2G Formatting '/kvm_data/test_1.img', fmt=raw size=2147483648RAW格式的磁盤轉換為qcow2格式,命令如下
[root@kvm ~]# qemu-img convert -O qcow2 /kvm_data/test_1.img /kvm_data/test_1.qcow2查看test1.img大小,命令如下:
[root@kvm ~]# ls -lh /kvm_data/test_1.img -rw-r--r-- 1 root root 2.0G May 3 15:11 /kvm_data/test_1.img [root@kvm ~]# ls -lh /kvm_data/test_1.qcow2 -rw-r--r-- 1 root root 193K May 3 15:38 /kvm_data/test_1.qcow2 //可以看到qcow2文件比較小,raw文件大小和我們指定空間大小一樣是2G //raw格式的磁盤性能比qcow2要好,但是raw格式的磁盤無法做快照將test02轉成raw格式,命令如下:
[root@kvm ~]# qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.img更改磁盤格式和文件路徑,然后啟動test02虛擬機,命令如下:
[root@kvm ~]# virsh edit test02 ………… <disk type='file' device='disk'><driver name='qemu' type='qcow'/><source file='/kvm_data/test02.img'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> //找到上面這部分將qcow修改為raw,/kvm_data/test02.img改為/kvm_data/test02_2.img,將type由qcow改為raw。 <disk type='file' device='disk'><driver name='qemu' type='raw'/><source file='/kvm_data/test02_2.img'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> ………………查看磁盤所屬用戶和組,命令如下:
[root@kvm ~]# ls -l /kvm_data/ total 3310628 drwx------ 2 root root 16384 Apr 29 00:20 lost+found -rw-r--r-- 1 root root 10737418240 May 3 16:14 test02_2.raw -rw------- 1 root root 1133772800 May 3 16:02 test02.img -rw-r--r-- 1 root root 2147483648 May 3 15:11 test_1.img -rw-r--r-- 1 root root 197120 May 3 16:05 test_1.qcow2 -rw------- 1 root root 10739384832 May 3 14:14 test.img啟動虛擬機test02,然后再次查看磁盤所屬用戶和組,命令如下
[root@kvm ~]# virsh start test02 Domain test02 started [root@kvm ~]# ls -l /kvm_data/ total 3310628 drwx------ 2 root root 16384 Apr 29 00:20 lost+found -rw-r--r-- 1 qemu qemu 10737418240 May 3 16:14 test02_2.raw -rw------- 1 root root 1133772800 May 3 16:02 test02.img -rw-r--r-- 1 root root 2147483648 May 3 15:11 test_1.img -rw-r--r-- 1 root root 197120 May 3 16:05 test_1.qcow2 -rw------- 1 root root 10739384832 May 3 14:14 test.img //啟動后所屬組變化成qemu的是test02_2.raw,證明這個磁盤正在被使用磁盤擴容
首先擴容RAW格式,命令如下:
查看test02_2.raw信息,命令如下:
[root@kvm ~]# qemu-img info /kvm_data/test02_2.img image: /kvm_data/test02_2.img file format: raw virtual size: 12G (12884901888 bytes) disk size: 1.0G進入虛擬機test02,使用fdisk -l查看磁盤,命令如下:
[root@kvm ~]# virsh console test02 [root@localhost ~]# fdisk -l Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0005b865 Device Boot Start End Blocks Id System /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 20971519 9972736 8e Linux LVMDisk /dev/mapper/centos-root: 9093 MB, 9093251072 bytes, 17760256 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes //可以看到磁盤還是10 GB退出終端,關閉test02虛擬機,重新啟動,然后再次進入虛擬機test02,使用fdisk -l查看磁盤,命令如下:
[root@kvm ~]# virsh destroy test02 Domain test02 destroyed[root@kvm ~]# virsh start test02 Domain test02 started[root@kvm ~]# virsh console test02 [root@localhost ~]# fdisk -l Disk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0005b865 Device Boot Start End Blocks Id System /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 20971519 9972736 8e Linux LVMDisk /dev/mapper/centos-root: 9093 MB, 9093251072 bytes, 17760256 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes可以看到已經變成12 GB了。
接下來,我們怎么使用新增加的這2 GB磁盤,那就是分區,命令如下:
除了對已有磁盤擴容外,還可以額外增加磁盤,命令如下:
[root@kvm ~]# qemu-img create -f raw /kvm_data/test02_3.raw 5G Formatting '/kvm_data/test02_3.raw', fmt=raw size=5368709120使用virsh edit編輯test02虛擬機,將新磁盤增加到test02虛擬機,命令如下
[root@kvm ~]# virsh edit test02 ………………<disk type='file' device='disk'><driver name='qemu' type='raw'/><source file='/kvm_data/test02_2.img'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> //找到這一部分內容,在下面增加以下內容<disk type='file' device='disk'><driver name='qemu' type='raw'/><source file='/kvm_data/test02_3.raw'/><target dev='vdb' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk> ……………… 主要修改source file名稱為/kvm_data/test02_3.raw,target dev改為vdb,slot改為0x09,不與0x06沖突即可。關閉test02虛擬機,重新啟動,然后進入該虛擬機,使用fdisk -l查看磁盤,命令如下:
[root@kvm ~]# virsh destroy test02 Domain test02 destroyed[root@kvm ~]# virsh start test02 Domain test02 started [root@kvm ~]# virsh console test02 [root@localhost ~]# fdisk -lDisk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0005b865Device Boot Start End Blocks Id System /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 20971519 9972736 8e Linux LVM /dev/vda3 20971520 25165823 2097152 83 LinuxDisk /dev/vdb: 5368 MB, 5368709120 bytes, 10485760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-root: 9093 MB, 9093251072 bytes, 17760256 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes可以看到多了一塊5 GB的磁盤,退出終端。
接下來,我們擴容qcow2格式的磁盤,命令如下:
查看test.img信息,命令如下:
[root@kvm ~]# qemu-img info /kvm_data/test.img image: /kvm_data/test.img file format: qcow2 virtual size: 12G (12884901888 bytes) disk size: 1.1G cluster_size: 65536 Format specific information:compat: 1.1 lazy refcounts: true關閉test虛擬機,重新啟動,然后再次進入虛擬機test02,使用fdisk -l查看磁盤,命令如下:
[root@kvm ~]# virsh destroy test Domain test destroyed[root@kvm ~]# virsh start test Domain test started[root@kvm ~]# virsh console test [root@localhost ~]# fdisk -l Disk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0005b865Device Boot Start End Blocks Id System /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 20971519 9972736 8e Linux LVMDisk /dev/mapper/centos-root: 9093 MB, 9093251072 bytes, 17760256 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes分區新增加的2 GB磁盤,命令如下:
[root@localhost ~]# fdisk /dev/vda Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them. Be careful before using the write command.Command (m for help): n Partition type:p primary (2 primary, 0 extended, 2 free)e extended Select (default p): p Partition number (3,4, default 3): First sector (20971520-25165823, default 20971520): Using default value 20971520 Last sector, +sectors or +size{K,M,G} (20971520-25165823, default 25165823): Using default value 25165823 Partition 3 of type Linux and of size 2 GiB is setCommand (m for help): w /保存并退出終端新增一塊qcow2格式的磁盤,命令如下:
[root@kvm ~]# qemu-img create -f qcow2 /kvm_data/test_2.img 5G Formatting '/kvm_data/test_2.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off使用virsh edit編輯test虛擬機,將新磁盤增加到test虛擬機,命令如下:
[root@kvm ~]# virsh edit test ………………<disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/kvm_data/test.img'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> //找到這一部分內容,在下面增加以下內容<disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/kvm_data/test_2.img'/><target dev='vdb' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk> ………………關閉test虛擬機,重新啟動,然后進入該虛擬機,使用fdisk -l查看磁盤,命令如下:
[root@kvm ~]# virsh destroy test Domain test destroyed[root@kvm ~]# virsh start test Domain test started[root@kvm ~]# virsh console test [root@localhost ~]# fdisk -lDisk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0005b865Device Boot Start End Blocks Id System /dev/vda1 * 2048 1026047 512000 83 Linux /dev/vda2 1026048 20971519 9972736 8e Linux LVM /dev/vda3 20971520 25165823 2097152 83 LinuxDisk /dev/vdb: 5368 MB, 5368709120 bytes, 10485760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-root: 9093 MB, 9093251072 bytes, 17760256 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes 退出終端調整CPU內存、網卡
查看虛擬機配置信息,命令如下:
編輯虛擬機內存,命令如下:
[root@kvm ~]# virsh edit test ………… <memory unit='KiB'>1048576</memory> //最大內存<currentMemory unit='KiB'>524288</currentMemory> //可用內存<vcpu placement='static' current='1'>2</vcpu> //最大cpu ……………… //將以上內容修改為如下內容 ………… <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>624288</currentMemory><vcpu placement='static' current='1'>2</vcpu> …………關閉虛擬機,重啟動虛擬機,命令如下:
[root@kvm ~]# virsh destroy test Domain test destroyed [root@kvm ~]# virsh start test Domain test started查看虛擬機配置信息,看是否修改成功,命令如下:
[root@kvm ~]# virsh dominfo test Id: 10 Name: test UUID: 49d7cb9c-20dc-42dd-a260-01532b5132e5 OS Type: hvm State: running CPU(s): 1 CPU time: 21.4s Max memory: 1048576 KiB Used memory: 624288 KiB Persistent: yes Autostart: disable Managed save: no Security model: none Security DOI: 0除了這種修改方式之外,還有一種動態修改,命令如下:
[root@kvm ~]# virsh setmem test 800m //動態修改內存 [root@kvm ~]# virsh setvcpus test 2 //動態修改cpu,只可以增加不可以減少查看配置信息,看是否修改成功,命令如下:
[root@kvm ~]# virsh dominfo test Id: 10 Name: test UUID: 49d7cb9c-20dc-42dd-a260-01532b5132e5 OS Type: hvm State: running CPU(s): 2 CPU time: 22.8s Max memory: 1048576 KiB Used memory: 819200 KiB Persistent: yes Autostart: disable Managed save: no Security model: none Security DOI: 0 [root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test.xml查看網卡列表,命令如下:
[root@kvm ~]# virsh domiflist test Interface Type Source Model MAC ------------------------------------------------------- vnet1 bridge br0 virtio 52:54:00:93:bf:07增加一塊新的網卡,并設置為NAT網絡模式(virbr0類似VMware的VMnet8),這里如果寫–source br0,則網絡模式為橋接,命令如下:
[root@kvm ~]# virsh attach-interface test --type bridge --source virbr0 Interface attached successfully [root@kvm ~]# virsh domiflist test Interface Type Source Model MAC ------------------------------------------------------- vnet1 bridge br0 virtio 52:54:00:93:bf:07 vnet2 bridge virbr0 rtl8139 52:54:00:29:ed:8b把配置文件做備份
[root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test.xml進入test虛擬機,查看網卡信息,命令如下:
[root@kvm ~]# virsh console test [root@localhost ~]# ifconfig ens10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.122.8 netmask 255.255.255.0 broadcast 192.168.122.255inet6 fe80::5054:ff:fe29:ed8b prefixlen 64 scopeid 0x20<link>ether 52:54:00:29:ed:8b txqueuelen 1000 (Ethernet)RX packets 5186 bytes 7413267 (7.0 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 1480 bytes 84889 (82.8 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens11: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.16.129 netmask 255.255.255.0 broadcast 192.168.16.255inet6 fe80::5054:ff:fe15:abbd prefixlen 64 scopeid 0x20<link>ether 52:54:00:15:ab:bd txqueuelen 1000 (Ethernet)RX packets 13 bytes 1328 (1.2 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 16 bytes 1668 (1.6 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ether 52:54:00:93:bf:07 txqueuelen 1000 (Ethernet)RX packets 55 bytes 8520 (8.3 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 0 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0遷移虛擬機
首先關閉虛擬機,命令如下:
查看虛擬機磁盤所在目錄,命令如下:
[root@kvm ~]# virsh domblklist test Target Source ------------------------------------------------ vda /kvm_data/test.img vdb /kvm_data/test_2.img hda - [root@kvm ~]# virsh dumpxml test > /etc/libvirt/qemu/test03.xml //如果是遠程機器,需要把該配置文件拷貝到遠程機器上 [root@kvm ~]# rsync -av /kvm_data/test.img /kvm_data/test03.img //-bash: rsync: command not found則yum install -y rsync //如果是遷移到遠程,則需要把該磁盤文件拷貝到遠程機器上 sending incremental file list test.img sent 10,742,006,844 bytes received 35 bytes 60,179,310.25 bytes/sec total size is 10,739,384,832 speedup is 1.00因為是遷移到本機,配置文件用的是test子機的配置,不改會有沖突,所以需要修改該文件。如果是遠程機器不用修改,命令如下:
[root@kvm ~]# vi /etc/libvirt/qemu/test03.xml <name>test03</name> //修改domname: //修改uuid(隨便改一下數字,位數不要變)<disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/kvm_data/test03.img'/><target dev='vda' bus='virtio'/><address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/></disk> //修改磁盤路徑定義新虛擬機,命令如下:
[root@kvm ~]# virsh define /etc/libvirt/qemu/test03.xml Domain test03 defined from /etc/libvirt/qemu/test03.xml查看虛擬機列表,會發現新遷移的虛擬機test03,命令如下:
[root@kvm ~]# virsh list --allId Name State ----------------------------------------------------6 test02 running- test shut off- test03 shut off總結
- 上一篇: 虚同步(Virtual Synchron
- 下一篇: C语言—整除问题、求余、赋值、逻辑运算符