Centos7 上安裝KVMlinux
步驟以下:centos
1. CPU支持虛擬化緩存
如今的CPU基本都支持虛擬化安全
2. 虛擬機設置內存3G,增長一個50G的虛擬機磁盤,處理器2核,虛擬化引擎兩個虛擬化相關的選項打上勾(我這裏全打)網絡
# 確認一下內存
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 2.8G 108M 2.5G 8.6M 198M 2.5G
Swap: 1.0G 0B 1.0G
# CPU
[root@localhost ~]# grep "processor" /proc/cpuinfo
processor : 0
processor : 1
3.關閉iptables或firewallddom
// iptables關閉
systemctl status iptables // 查看狀態
systemctl stop iptables // 關閉
systemctl list-unit-files|grep iptables // 查看是不是開機啓動
systemctl disable iptables // 關閉開機啓動
// firewalld關閉
firewall-cmd --state // 查看狀態
systemctl stop firewalld // 關閉
systemctl start firewalld // 開啓
4.關閉selinuxide
5.格式化新磁盤,掛載到/kvm_data性能
fdisk -l // 查看新磁盤信息
mkfs.ext4 /dev/sdb // 格式化磁盤
blkid /dev/sdb // 檢查格式化後的磁盤
/dev/sdb: UUID="0cffd9c7-626c-4522-a749-75d343b5915c" TYPE="ext4"
// 建立目錄並掛載
[root@localhost ~]# mkdir /kvm_data
[root@localhost ~]# mount /dev/sdb /kvm_data/
// 開機啓動掛載磁盤
echo '/dev/sdb /kvm_data ext4 defaults 0 0' >> /etc/fstab
// 檢查
tail -1 /etc/fstab
/dev/sdb /kvm_data ext4 defaults 0 0
7.檢查cpu參數是否支持虛擬化ui
grep -Ei 'vmx|svm' /proc/cpuinfo
// vmx 是因特爾的CPU
// svm 是 AMD的CPU
// 有表示支持虛擬化
8.安裝kvmcentos7
yum install -y virt-* libvirt bridge-utils qemu-img
配置網卡
橋接網卡配置
1. 配置網卡,增長橋接網卡
cp ifcfg-ens33 ifcfg-br0 // ifcfg-br0 爲橋接網卡
cp ifcfg-ens33 ifcfg-ens33.bak // 備份配置文件
2. 設置一個br0網卡,TYPE爲Bridge,IP地址設置爲ens33的ip
// ifcfg-br0
TYPE=Bridge // 橋接網卡
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=10.0.0.210
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
3. ens33配置文件裏把IP地址去掉,增長BRIDGE=br0
// ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 // 增長 表示橋接到哪裏去
4. 啓動libvirtd服務
// 啓動服務
systemctl start libvirtd
// 檢查狀態
systemctl status libvirtd
// 或查看進程
ps aux|grep libvirt
5. brctl show 能夠看到兩個網卡br0和virbr0
[root@localhost network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29e02ab6 no ens33
virbr0 8000.5254000d904e yes virbr0-nic
// 查看橋接網卡的
建立虛擬機安裝centos7
1. 上傳一個centos7 ISO文件
2. 安裝虛擬機
virt-install \
--name=xxxxx01 \ // 定義虛擬機的名字
--memory=512,maxmemory=1024 \ // 定義內存大小 最大1024 支持熱調整
--vcpus=1,maxvcpus=2 \ // 指定CPU1核,最大2核
--os-tyep=linux \ // 操做系統類型是Linux
--os-variant=rhel7 \ // 具體版本 rhel7 表示centos7
--location=/tmp/Centxx.iso \ // 指定ISO文件路徑
--disk path=/kvm_data/xxx.img,size=10 \ // 虛擬機安裝路徑
--bridge=br0 \ // 定義橋接網卡是哪一個
--graphics=none \ // 定義是否開啓圖形
--console=pty,target_type=serial \ // 定義終端及相關的屬性
--extra-args="console=tty0 console=ttyS0"
virt-install --name=kvm_03_10 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1708.iso --disk path=/kvm_data/kvm_03_10_20181216.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
// 語言設置
// [!] 感嘆號表示須要設置
1) [!] Language settings
68) Chinese
1) Simplified Chinese
// 選擇時區
2) [!] Time settings
1) Set timezone
2) Asia
64) Shanghai
// 安裝位置
5) [!] Installation Destination
[x] 1) : 10 GiB (vda)
[x] 2) Use All Space
[x] 1) Standard Partition
// 設置root密碼
8) [!] Root password
表示安裝結束了 直接按回車返回退出 或者 直接Ctrl + ] 退出終端 進行操做
虛擬機管理
// 安裝完虛擬機須要重啓,要退出虛擬機使用快捷鍵ctrl + ]
ps aux|grep kvm // 查看kvm進程
virsh list // 查看虛擬機列表,只能看到運行的虛擬機
virsh list --all // 查看虛擬機列表,只能看運行的虛擬機
virsh console 虛擬機名稱 // 進入指定虛擬機
virsh shutdown 虛擬機名稱 // 關閉虛擬機
virsh start 虛擬機名稱 // 開啓虛擬機
virsh destroy 虛擬機名稱 // 強制中止 虛擬機
virsh undefine 虛擬機名稱 // 完全銷燬虛擬機,會刪除虛擬機配置文件
ls /etc/libvirt/qemu/ // 能夠查看虛擬機配置文件
virsh autostart 虛擬機名稱 // 宿主機開機該虛擬機也開機
virsh autostart --disable 虛擬機名稱 // 禁止開機啓動
virsh suspend 虛擬機名稱 // 掛起
virsh resume 虛擬機名稱 // 恢復
dhclient eth0 //自動獲取IP地址
克隆虛擬機
virsh shutdown 虛擬機名稱 //關閉虛擬機
// 克隆虛擬機
virt-clone --original 虛擬機名稱 --name 虛擬機名稱02 --file /kvm_data/虛擬機名稱02.img
--original // 指定克隆源虛擬機
--name // 指定克隆後的虛擬機名字
--file // 指定目標虛擬機的虛擬機磁盤文件
若是 xxx01 虛擬機開機狀態,則提示先關閉或暫停虛擬機
快照管理
virsh snapshot-create kvm_01_10 // 建立快照
// raw格式的虛擬磁盤不支持作快照,qcow2支持
[root@kvm_test_210 ~]# qemu-img info /kvm_data/kvm_01_10.img // 查看kvm_01_10.img信息,同時會檢查看到快照列表
image: /kvm_data/kvm_01_10.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.4G // 實際使用量
cluster_size: 65536
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 1544963687 238M 2018-12-16 20:34:47 00:46:22.217
Format specific information:
compat: 1.1
lazy refcounts: true
[root@kvm_test_210 ~]# df -h
```
/dev/sdb 50G 2.7G 44G 6% /kvm_data
```
[root@kvm_test_210 ~]# du -sh /kvm_data/*
1.5G /kvm_data/kvm_01_10.img
1.3G /kvm_data/kvm_03_10_20181216.img
16K /kvm_data/lost+found
[root@kvm_test_210 ~]# ll -h /kvm_data/*
-rw------- 1 qemu qemu 1.5G 12月 16 20:37 /kvm_data/kvm_01_10.img
-rw------- 1 root root 11G 12月 16 19:46 /kvm_data/kvm_03_10_20181216.img
/kvm_data/lost+found:
總用量 0
virsh snapshot-list kvm_01_10 // 列出全部快照
virsh snapshot-current kvm_01_10 // 查看當前快照版本
ls /var/lib/libvirt/qemu/snapshot/kvm_01_10 // 查看全部快照配置文件
virsh snapshot-revert kvm_01_10 1544963687 // 恢復指定快照
virsh snapshot-delete kvm_01_10 1544963687 // 刪除快照
磁盤格式
虛擬磁盤經常使用格式raw、qcow2
[root@kvm_test_210 ~]# qemu-img create -f raw /kvm_data/kvm_01_10_2.img 2G // 建立2G的raw格式磁盤
Formatting '/kvm_data/kvm_01_10_2.img', fmt=raw size=2147483648
[root@kvm_test_210 ~]# qemu-img info /kvm_data/kvm_01_10_2.img //查看虛擬磁盤格式
image: /kvm_data/kvm_01_10_2.img
file format: raw
virtual size: 2.0G (2147483648 bytes)
disk size: 0
把raw格式的磁盤轉換爲qcow2格式
qemu-img convert -O qcow2 /kvm_data/kvm_01_10_2.img /kvm_data/kvm_01_10_2.qcow2
// -O 指定目標格式
// /kvm_data/kvm_01_10_2.img 源文件
// /kvm_data/kvm_01_10_2.qcow2 目標文件
// 轉換後用ll -h查看磁盤文件的大小,能夠看到qcow2文件比較小,raw文件大小和指定空間大小同樣是2G
[root@kvm_test_210 ~]# ll -h /kvm_data/*
-rw-r--r-- 1 root root 2.0G 12月 16 21:01 /kvm_data/kvm_01_10_2.img
-rw-r--r-- 1 root root 193K 12月 16 21:06 /kvm_data/kvm_01_10_2.qcow2
[root@kvm_test_210 ~]# du -sh /kvm_data/*
0 /kvm_data/kvm_01_10_2.img
196K /kvm_data/kvm_01_10_2.qcow2
// raw格式的磁盤性能比qcow2要好,可是raw格式的磁盤沒法作快照
給 kvm_01_10 轉換爲raw格式的磁盤
virsh shutdown kvm_01_10
qemu-img convert -O raw /kvm_data/kvm_01_10.img /kvm_data/kvm_01_10_3.raw
virsh edit kvm_01_10 //更改格式和文件路徑
<driver name='qemu' type='raw'/>
<source file='/kvm_data/kvm_01_10_3.raw'/>
// ll /kvm_data/kvm_01_10_3.raw 查看屬主屬組 是root
-rw-r--r-- 1 root root 10G 12月 16 21:14 /kvm_data/kvm_01_10_3.raw
virsh start kvm_01_10
// 啓動後改變成qemu 證實換完了文件
-rw-r--r-- 1 qemu qemu 10737418240 12月 16 21:22 kvm_01_10_3.raw
磁盤擴容(raw)
// 磁盤擴容 - raw格式
qemu-img resize /kvm_data/kvm_01_10_3.raw +2G // 加2G
[root@kvm_test_210 ~]# qemu-img info /kvm_data/kvm_01_10_3.raw
image: /kvm_data/kvm_01_10_3.raw
file format: raw
virtual size: 12G (12884901888 bytes) //12G
disk size: 1.2G
// 只有重啓後才能生效,命令以下
virsh destroy kvm_01_10 || virsh shutdown kvm_01_10(推薦)
virsh start kvm_01_10
virsh console kvm_01_10
fdisk -l // 查看磁盤狀況,並分新的分區
// 除了對已有磁盤擴容外,還能夠額外增長磁盤
// fdisk /dev/vda; p n p 默認剩餘空間
// 增長硬盤的方式
[root@kvm_test_210 ~]# qemu-img create -f raw /kvm_data/kvm_01_10_2.raw 5G
Formatting '/kvm_data/kvm_01_10_2.raw', fmt=raw size=5368709120
virsh edit kvm_01_10 // 增長<disk>...</disk>, 注意更改source、target、slot
```
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/kvm_01_10_2.raw'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
```
virsh destroy kvm_01_10
virsh start kvm_01_10
磁盤擴容(qcow2)
qemu-img resize /kvm_data/kvm_01_10.img +2G
// 若提示qemu-img:Can't resize an image which has snapshots,須要刪除快照
qemu-img info /kvm_data/kvm_01_10.img
virsh destroy kvm_01_10
virsh start kvm_01_10
virsh console kvm_01_10
fdisk -l // 查看磁盤狀況,並分新的分區
// 除了對已有磁盤擴容外,還能夠額外增長磁盤
qemu-img create -f qcow2 /kvm_data/kvm_01_10_2.img 5G
virsh edit kvm_01_10 //增長<disk>...</disk>, 注意更改source、target、slot
virsh destroy kvm_01_10
virsh start kvm_01_10
調整cpu內存和網卡
[root@kvm_test_210 ~]# virsh dominfo kvm_01_10 // 查看配置
Id: 4
名稱: kvm_01_10
UUID: f1bede97-3068-4f6c-9bd0-ac055890a0c9
OS 類型: hvm
狀態: running
CPU: 1
CPU 時間: 31.0s
最大內存: 1048576 KiB
使用的內存: 524288 KiB
持久: 是
自動啓動: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0
// 第一種方法:能夠經過修改配置文件參數來調整內存、CPU
virsh edit kvm_01_10 // 更改以下部份內容
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static' current='1'>2</vcpu>
// 有啓動須要關閉
virsh shutdown kvm_01_10
virsh start kvm_01_10
// 第二種方式:動態調整 注意不能大於最大內存和最大CPU數
virsh setmem kvm_01_10 800m // 動態調整內存
virsh dumpxml kvm_01_10 > /etc/libvirt/qemu/kvm_01_10.xml // 須要把配置寫入到配置文件裏
// 須要重啓才能加載配置文件 否則讀取的是當前緩存文件
virsh setvcpus kvm_01_10 2 // 動態調整CPU數量 不能減少
[root@kvm_test_210 ~]# virsh domiflist kvm_01_10 // 查看網卡
接口 類型 源 型號 MAC
-------------------------------------------------------
vnet0 bridge br0 virtio 52:54:00:77:31:1f
virsh attach-interface kvm_01_10 --type bridge --source virbr0
// 增長一塊新的網卡,並設置爲nat網絡模式(virbr0相似vmware的vmnet8),
// 這裏若是寫--source br0, 則網絡模式爲橋接
virsh dumpxml kvm_01_10 >/etc/libvirt/qemu/kvm_01_10.xml
// 須要把配置寫入到配置文件裏
遷移虛擬機
該方式要確保虛擬機是關機狀態
virsh shutdown kvm_01_10
virsh dumpxml kvm_01_10 >/etc/libvirt/qemu/kvm_01_3.xml
// 若是是遠程機器,須要把該配置文件拷貝到遠程機器上
virsh domblklist kvm_01_10 // 查看虛擬機磁盤所在目錄
rsync -av /kvm_data/kvm_01_10.img /kvm_data/kvm_01_3.img
// 若是是遷移到遠程,則須要把磁盤文件拷貝到遠程機器上
vi /etc/libvirt/qemu/kvm_01_3.xml // 由於是遷移到本機
// 配置文件用的是kvm_01_10的配置,不改會有衝突,
// 因此須要修改配置文件,若是是遠程機器不用修改
# 修改
domname: <name>kvm_01_3</name>
uuid(隨便改一下數字,位數不要變)
# 修改磁盤路徑
virsh define /etc/libvirt/qemu/kvm_01_3.xml // 定義新虛擬機
virsh list --all // 會發現新遷移的kvm_01_3虛擬機