manjaro安裝kvm

安裝kvm

  • 環境檢查
# 檢查硬件是否支持虛擬化
LC_ALL=C lscpu | grep Virtualization
# 檢查內核是否已經包含了支持虛擬化所必須的模塊
zgrep CONFIG_KVM /proc/config.gz
# 確定模塊是否已經加載
lsmod | grep kvm
# 這里輸出中需要包含 virtio
lsmod | grep virtio
# 沒有 virtio 時執行
sudo modprobe virtio
  • 安裝軟件
    安裝需要的軟件包
yay -S virt-manager qemu libvirt  ebtables dnsmasq bridge-utils openbsd-netcat
  • 安裝軟件libguestfs on Arch Linux / Manjaro
    添加源
$ sudo vim /etc/pacman.conf

# Should have below lines
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

安裝

sudo pacman -Syy
yay -S --noconfirm --needed libguestfs

virt-manager, 圖形化的管理界面
qemu QEMU 軟件,提供 qemu-img 等命令
libvirt 提供管理虛擬機、存儲、網絡的功能
ebtables 橋接網絡管理,用于 default NAT 網絡
dnsmasq DHCP DNS 服務,用于 default NAT 網絡
bridge-utils 橋接網絡管理,用于橋接網絡
openbsd-netcat 用于通過 SSH 管理
libguestfs 用于重置或消除虛擬機的配置以獲得全新的OS安裝狀態

  • 啟動服務
    執行以下命令啟動所需服務:
# 啟動虛擬機管理后臺服務
sudo systemctl start libvirtd
# 啟動 default NAT 網絡
sudo virsh net-start default
  • 設置開機啟動
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service
  • 使用普通賬號使用kvm(此方法問題多,在命令行下還是加上sudo去執行吧)
sudo vim /etc/libvirt/libvirtd.conf
# 將UNIX域套接字組所有權設置為libvirt(第85行):
unix_sock_group = "libvirt"
# 設置R/W套接字的UNIX套接字權限(第102行):
unix_sock_rw_perms = "0770"
#將你的用戶帳戶添加到libvirt組:
sudo usermod -a -G libvirt $(whoami)
# newgrp 命令使當前普通用戶登入到這個群組
newgrp libvirt
# 重啟libvirt守護進程:
sudo systemctl restart libvirtd.service
  • 開啟嵌套虛擬化
    嵌套虛擬化功能使你可以在VM中運行虛擬機,我的CPU是intel的,啟用內核模塊為kvm_intel,如果是amd的需要改為kvm_amd:
sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1
要使此配置持久,請運行:
echo "options kvm-intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf
確認嵌套虛擬化設置為是:
systool -m kvm_intel -v | grep nested
nested              = "Y"
nested_early_check  = "N"
cat /sys/module/kvm_intel/parameters/nested 
Y

創建虛擬機

創建虛擬機可以通過圖形化界面進行創建,也可以通過模板文件快速創建vm,如果需要大批量的創建vm那么通過模板文件進行創建將非常快。網上有很多模板文件的解釋說明,可以參考。但是由于每個環境都不一樣,直接拿過來的模板吧文件無法直接使用,需要修改很多地方,這時候可以通過圖形化界面來創建一個vm,在生成一個模板文件,在次基礎上進行修改就不會有問題;

通過Virtual Machine Manager創建vm

  1. 打開軟件點擊‘加號’來創建一個虛擬機


    Virtual Machine Manager
  2. 選擇第一個iso,點擊下一步


    image.png
  3. 第一個選框中選擇本地的iso系統盤,在下面的類型中需要輸入才能顯示不同的操作系統類型,這里輸入c之后能模糊查詢到相關的系統類型,選擇centos8。


    image.png
  4. 設置內存及cpu數


    image.png
  5. 這一步是創建磁盤,選擇下面這個一步,可以自定義磁盤路徑,默認的磁盤路徑:/var/lib/libvirt/images
image.png
  1. 點擊manage之后能看到這個界面,首先自頂一個磁盤的存儲路徑,點擊左邊下方的加號。


    image.png
  2. name和target Path可以自定義


    image.png
  3. 創建好之后,左邊列表上選擇剛剛創建的路徑,右邊點擊volumes旁邊的加號,創建虛擬磁盤。


    image.png
  4. 創建虛擬機磁盤,點擊finish完成。


    image.png
  5. 上一步創建完成之后,然后選擇磁盤,點擊下一步。


    image.png

    11.這一步選擇虛擬網卡,然后點擊finish。到這一步就完成了所有的創建過程。接著就是虛擬機的安裝過程了。


    image.png

使用配置文件創建虛擬機

配置文件可以通過圖形化界面創建而生成,配置文件路徑:/etc/libvirt/qemu/

  • 通過已經有的虛擬機生成新的模板
sudo virsh dumpxml k8s-master>/home/momi/kvm/kubernetes-cluster/template/k8s-node01.xml
  • 編輯修改模板文件
    修改模板名稱
<name>k8s-node01</name>
* 修改uuid 使用命令:uuidgen
<uuid>06931581-29c4-4715-b2ab-19dc68d7c151</uuid>
  • 修改磁盤路徑
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/momi/kvm/kubernetes-cluster/k8s-node01.qcow2' index='2'/>
...
</disk>
  • 修改網卡的mac地址
# 使用下面命令生成mac地址
openssl rand -hex 6 | sed 's/../&\:/g; s/:$//'
# 修改文件中網卡信息的mac地址
<interface type='network'>
    <mac address='52:54:00:ca:0d:14'/>
...
</interface>
  • 通過模板定義虛擬機
sudo virsh define ./k8s-node02.xml 
Domain k8s-node02 defined from ./k8s-node02.xml
sudo virsh list --all
 Id   Name         State
-----------------------------
 2    k8s-master   paused
 -    k8s-node01   shut off
 -    k8s-node02   shut off
  • 通過console登錄虛擬機
# 為了可以通過virsh console 登錄虛擬機需要對虛擬機進行設置,登錄虛擬機后臺執行如下命令
grubby --update-kernel=ALL --args="console=ttyS0"
# 執行之后,重啟
reboot
# 登錄,console后面需要輸入已經啟動的虛擬機的id,通過virsh list查詢
sudo virsh console 4

克隆虛擬機

克隆虛擬機,可以避免手動來修改這個配置信息
通過使用鏡像克隆虛擬機

# 查詢所有vm
sudo virsh list --all
# 停止需要進行克隆的虛擬機
sudo virsh stop k8s-master
# 克隆虛擬機
sudo virt-clone --connect qemu:///system --original k8s-master --name k8s-node01 --file /home/momi/kvm/kubernetes-cluster/k8s-node01.qcow2
# 


重置虛擬機

# 使用virt-sysprep 命令時如果報錯需要進行升級
sudo update-libguestfs-appliance
# 使用下面命令重置虛擬機,并設置主機名密碼
sudo virt-sysprep -v -x -d k8s-node01 --hostname k8s-node01
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容