作者:SRE運維部落格
部落格地址: https://www.cnsre.cn/
安裝前準備
驗證CPU是否支援KVM
如果結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU的支援的。
egrep '(vmx|svm)' /proc/cpuinfo
關閉SELinux
將 /etc/sysconfig/selinux
中的 SELinux=enforcing
修改為 SELinux=disabled
安裝一些最基本的服務
可選項,因為我是剛安裝好的CentOS,所以為了下面方便點,先把一些必要的工具安裝下
yum install epel-release net-tools vim unzip zip wget ftp -y
安裝KVM及其依賴項
yum install qemu-kvm libvirt virt-install bridge-utils -y
驗證安裝結果
下圖說明已經成功安裝了
lsmod | grep kvm
開啟kvm服務
並且設定其開機自動啟動
systemctl start libvirtd systemctl enable libvirtd
檢視狀態操作結果
如下圖所示,說明執行情況良好
systemctl status libvirtd
systemctl is-enabled libvirtd
配置網橋模式
先將 /etc/sysconfig/network-scripts/
目錄下的網路卡配置檔案備份一份
建立 ifcfg-br0 檔案
建立的 br0
檔案的IP地址要和物理網路卡的IP地址一致,命令 ipconfig
檢視物理網路卡將不會顯示IP
內容如下:
[root@bogon ~]*# vim /etc/sysconfig/network-scripts/ifcfg-br0*
DEVICE=br0
BOOTPROTO=none
DEFROUTE=yes
ONBOOT=yes
TYPE=Bridge
IPV4_FAILURE_FATAL=yes
IPADDR=192.168.1.130
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=221.6.4.66
DELAY=0
USERCE=no
修改原網路卡配置
vim /etc/sysconfig/network-scripts/ifcfg-eno1s
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="YES"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eno1"
UUID="bb40d726-8d67-4187-90c3-eb61e1b42d61"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.1.130"
NETAMSK=255.255.255.0
GATEWAY="192.168.1.254"
DNS1="221.6.4.66"
IPV6_PRIVACY="no"
BRIDGE=br0
重啟網路服務
systemctl restart network
使用 ifconfig
驗證操作結果,多了一塊網路卡 br0
,現在訪問宿主機 使用 192.168.1.130
就可以了。
安裝虛擬機器
準備作業系統安裝映象檔案
在本文中將使用和宿主環境一樣的 CentOS7.2
,把該檔案放到 /home/iso
目錄下
掛載U盤
[root@nkgtsv01 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁碟 /dev/sda:2995.0 GB, 2994995200000 位元組,5849600000 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟標籤型別:gpt
Disk identifier: 434CB2EB-C42E-4B9D-A76B-B759709EC159
# Start End Size Type Name
1 2048 206847 100M EFI System EFI System Partition
2 206848 616447 200M Microsoft basic
3 616448 5849597951 2.7T Linux LVM
磁碟 /dev/mapper/centos-root:214.7 GB, 214748364800 位元組,419430400 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟 /dev/mapper/centos-swap:17.2 GB, 17179869184 位元組,33554432 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟 /dev/mapper/centos-home:322.1 GB, 322122547200 位元組,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟 /dev/mapper/centos-tmp:107.4 GB, 107374182400 位元組,209715200 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟 /dev/mapper/centos-data:2333.2 GB, 2333249372160 位元組,4557127680 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟 /dev/sdb:31.0 GB, 31004295168 位元組,60555264 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0xcad4ebea 需要掛載的硬碟
裝置 Boot Start End Blocks Id System
/dev/sdb4 * 256 60555263 30277504 7 HPFS/NTFS/exFAT
[root@nkgtsv01 ~]# mkdir -p /mnt/udisk
[root@nkgtsv01 ~]# ls
anaconda-ks.cfg
[root@nkgtsv01 ~]# ls /mnt/
udisk usb
[root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/
mount: 未知的檔案系統型別“ntfs-3g”
[root@nkgtsv01 ~]# yum list *ntfs*
已載入外掛:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.sjtu.edu.cn
* epel: mirrors.ustc.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: ftp.sjtu.edu.cn
可安裝的軟體包
ntfs-3g.x86_64 2:2017.3.23-1.el7 epel
ntfs-3g-devel.x86_64 2:2017.3.23-1.el7 epel
ntfsprogs.x86_64 2:2017.3.23-1.el7 epel
已安裝:
ntfs-3g.x86_64 2:2017.3.23-1.el7
完畢!
[root@nkgtsv01 ~]#yum install ntfs-3g.x86_64 -y
[root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.
[root@nkgtsv01 ~]#
[root@nkgtsv01 ~]# ls /mnt/
udisk usb
[root@nkgtsv01 ~]# ls /mnt/udisk/
CentOS-7.2-x86_64-DVD-1611.iso CentOS-7-x86_64-DVD-1708.iso maven_storey2.zip
[root@bogon data]# mkdir -p /data/iso
[root@bogon data]# ls
iso kvm-bak network
[root@nkgtsv01 ~]# mount -o loop /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso /data/iso/
mount: /dev/loop0 防寫,將以只讀方式掛載
建立虛擬機器檔案存放的目錄
mkdir -p /data/kvm-images
{{< alert theme="warning" dir="ltr" >}}
⚠️ 注意
關於virtio-win驅動
{{< /alert >}}
virtio-win驅動主要用於kvm裡的 windows虛擬機器。virtio-win提供yum源安裝rpm包,virtio驅動預設會安裝在/usr/share/virtio-win目錄中,可共享於kvm裡的windows虛擬機器。
sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
# 新增repo
該repo檔案提供兩個不同的倉庫:
-
virtio-win-stable
預設,該倉庫的版本和RHEL版本關聯在一起釋出,意味著得到了非常多的測試,很穩定。 -
virtio-win-latest
該倉庫提供最新的build版本,這些版本可能有各種問題,使用者需自己承擔風險。這個倉庫預設是disable的。如果你想從穩定版更新到最新版,可以使用如下命令:sudo yum --enablerepo=virtio-win-latest update virtio-win
安裝完成後的檔案會存放在/user/share,內容如下:
/usr/share/virtio-win/*.iso: ISO映象,包含所有驅動,詳細內容後面會描述
/usr/share/virtio-win/*.vfd: 用於Windows XP下的VFD軟碟機映象
/usr/share/virtio-win/drivers: 從VFD軟碟機映象中提取的檔案
/usr/share/guest-agent/*.msi: QEMU Guest Agent 32bit 和 64bit 安裝包
其中ISO映象內容為:
NetKVM/: Virtio網路驅動
viostor/: Virtio塊驅動
vioscsi/: Virtio SCSI驅動
viorng/: Virtio RNG驅動
vioser/: Virtio串列埠驅動
Balloon/: Virtio 記憶體氣球驅動
qxl/: 用於Windows 7及之前版本的QXL顯示卡驅動. (virtio-win-0.1.103-1和之後版本會建立)
qxldod/: 用於Windows 8及之後版本的QXL顯示卡驅動. (virtio-win-0.1.103-2和之後版本會建立)
pvpanic/: QEMU pvpanic 裝置驅動 (virtio-win-0.1.103-2和之後版本會建立)
guest-agent/: QEMU Guest Agent 32bit 和 64bit 安裝包
qemupciserial/: QEMU PCI 串列埠裝置驅動
或者你也可以通過一下方獲取
使用 virt-install 建立虛擬機器
[root@bogon data]# virt-install --virt-type kvm --name=njvm2k8 --ram=1024 --vcpus=1 --os-type=windows --accelerate --cdrom=/home/kvm_data/iso/cn_windows_server_2008_r2_617396.iso --disk path=/usr/share/virtio-win/virtio-win.iso,device=cdrom --disk path=/home/kvm_data/img/njvm2k8.qcow2,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0,password=123456,port=5920 --noautoconsole
WARNING 無法連線到圖形控制檯:沒有安裝 virt-viewer。請安裝 'virt-viewer' 軟體包。
WARNING 沒有控制檯用於啟動客戶機,預設為 --wait -1
開始安裝......
正在分配 'njvm2k8.img' | 200 GB 00:00:00
正在刪除磁碟 'njvm2k8.img' | 0 B 00:00:00
域安裝失敗,您可以執行下列命令重啟您的域:
'virsh start virsh --connect qemu:///system start njvm2k8'
否則請重新開始安裝
不要理會裡面提示的錯誤,接著往下走
命令含義
virt-install
--name=客戶機名稱
--ram 記憶體(1024)1G
--vcpus= cpu1
--os-type= 客戶機系統型別
--os-variant= win2k8
--disk path= 客戶機檔案存放路徑 ,
size=客戶機硬碟大小200
--accelerate
--cdrom (映象檔案路徑)
--vnc --vncport=vnc遠端埠 5910
--network bridge=網路卡橋接 br0,model=virtio
--noautoconsole
開啟防火牆上的5910埠
因為 VNC
使用的埠預設是 5910
所以需要開啟防火牆, 防火牆若關閉請忽略
firewall-cmd --zone=public --add-port=5910/tcp --permanent
檢視開啟新建立的虛擬機器
virsh list --all
virsh start njvm2k8-win
使用VNC連結虛擬機器
使用VNC輸入宿主機IP地址 加上埠號 輸入虛擬機器名字然後開啟
{{< alert theme="warning" dir="ltr" >}}
⚠️ 注意
安裝的時候找不到硬碟
{{< /alert >}}
如果再安裝的時候找不到硬碟,請執行一下操作
掛載win映象
virsh change-media njvm2k8 hdb /usr/share/virtio-win/virtio-win.iso
然後取消掛載的映象 把系統映象 從新掛載到系統 進行分割槽 安裝系統
安裝完畢重啟虛擬機器
安裝完會重啟windows虛擬機器
我們檢視狀態 然後啟動虛擬機器
等待安裝完成
啟動之後設定密碼 我們就進入了新的windows 作業系統
用vnc連結
{{< alert theme="warning" dir="ltr" >}}
⚠️ 注意
掛載軟碟機 (硬碟驅動 網路卡驅動等)註釋:網路卡驅動要在系統中裝好之後掛載 不然裝系統的時候會提示找不到光碟映象
{{< /alert >}}
在宿主機中執行命令
virsh change-media njvm2k8 hdb /usr/share/virtio-win/virtio-win.iso
VMTools工具安裝完成後,使用如下命令解除安裝掉掛載的VMTools工具:
a.如果是Linux虛擬機器,執行如下命令解除安裝VMTools工具:
virsh change-media 【虛擬機器ID】 --eject 【vmtools-linux.iso檔案全路徑】
b.如果是Windows虛擬機器,執行如下命令解除安裝VMTools工具:
virsh change-media 【虛擬機器ID】 --eject 【vmtools-windows.iso檔案全路徑】
掛載驅映象檔案到njvm2k8主機上
用vnc連結
作者:SRE運維部落格
部落格地址: https://www.cnsre.cn/