基於Ubuntu16.04使用KVM實現Linux環境虛擬機化

2021-01-10 小麥扎記

當前部署方案基於Ubuntu 16.04 Server,使用KVM實現Linux環境下的虛擬化解決方案。

本人在虛擬化方面還是小白一枚,寫手冊主要是為了做筆記。老話說的好,好記性不如爛筆頭。

話轉正題,之前接觸過Vmware虛擬化解決方案,圖形界面使用起來非常方便。這次使用使用Linux環境,純命令行環境使用起來略有不同,基本原理還是一致的。

首先我們安裝一套Ubuntu 16.04 Server 作業系統。分區方案可以根據自己的硬體條件進行調整。在分區的時候我單獨將home獨立為一個分區,用於存放常用系統鏡像以及虛擬機文件。分區參考如下:

Home使用lvm進行創建的,主要是考慮到後續存儲空間擴展問題,無論是本機增加硬碟還是外掛存儲都可以輕鬆擴容。

作業系統安裝過程中記著已經要選擇安裝ssh服務,如果安裝過程中沒有安裝,等進入系統也可以使用apt-get install openssh-server進行安裝。

裝完作業系統以後,使用Xshell連接安裝好的作業系統。在用Linux的過程中,有很多人諮詢過我用什麼遠程工具連接Linux。這裡我通常默認的是xshell,同時putty,SecureCRT也是很優秀的軟體。

進入系統後先檢查分區是否符合預期,如果有問題可以自行調整。然後檢查硬體是否支持硬體虛擬化,如下分兩種:

AMD硬體: cat /proc/cpuinfo | grep svm

Intel硬體:cat /proc/cpuinfo | grep vmx

請使用相應命令查看硬體支持情況,如果您條件有限使用的是Vmware Workstion,在創建虛擬機的時候需要開啟硬體虛擬化支持,如下圖所示:

補充知識點:

svm是AMD的AMD-V虛擬化技術標識,全稱secure virtual machine,vmx是Intel的硬體虛擬化技術VT-x,標識是vmx,全稱為virtual machine extension。

現在步入正題,開始安裝虛擬化,我個人喜歡先切換到root模式進行操作。這樣會避免一些權限問題。

Apt-get update

Apt-get install qemu-kvm libvirt-bin virtinst bridge-utils virt-viewer virt-manger virt-top libguestfs-tools libosinfo-bin if-top

如上兩步操作完成,沒有報錯就安裝好了。現在介紹一下安裝的各個軟體內容。

Kvm:系統自帶,無需關注

Qemu-kvm:配合kvm使用,負責虛擬機的管理工作。Kvm主要負責CPU,內存的虛擬話,qemu來完成其他部件的虛擬化工作。

Libvirt:libvirt用於管理虛擬化平臺的開源API,後臺程序和管理工具。也可以用於管理kvm,xen,vmware esx,qemu和其他虛擬化技術。

Virtinst:創建虛擬機,克隆虛擬機等操作都會用到。

Bridge-utils:橋接網卡管理

Virt-viewer:連接虛擬機屏幕的工具,需要桌面環境支持。

Virt-manager:類似window上的vmware workstation。圖形化管理kvm。

Virt-top:在宿主機上查看虛擬機運行狀態的工具。類似top

libguestfs-tools:遷移工具集,可以在不啟動虛擬機的情況下操作虛擬主機內的文件。

libosinfo-bin:虛擬機系統信息查詢工具。

Iftop:監控宿主機網卡流量

注意:圖形化相關的工具我都默認安裝了,因為沒有測試不安裝會有什麼問題。如果有條件可以測試一下。歡迎交流心得。

常用命令及管理工具

Libvirt:操作和管理KVM虛擬的虛擬化API。C語言編寫,可以通過python,ruby,php,java等語言調用。可以操作kvm,vmware,xen,hyper-v,virtualbox等。

Virsh:基於libvirt的命令行工具,使用頻率很高。

Virt-install:虛擬機創建命令行工具

Virt-clone:虛擬機克隆命令行工具

網卡設置

Virsh net-list –all

查看全部網絡配置命令

Virsh net-define /usr/share/libvirt/networks/default.xml

重新定義網絡

Virsh net-autostart default

設置default網絡開機自動啟動

Virsh net-start default

啟動default網絡

虛擬網絡連接分成NAT網絡、橋接兩種、host-only網絡。

NAT網絡:即內部地址轉換,使用NAT網絡的虛擬機可以訪問外面網絡,但外面網絡無法訪問虛擬機。虛擬機的地址在NAT網絡中是唯一的,出了NAT網絡就不在唯一。NAT 網絡適用於桌面虛擬化。

橋接網絡:也叫物理設備共享,虛擬機和宿主機的網絡是平行關係,並且虛擬機公用物理網卡資源。虛擬機的網絡直接與外網互通,不受限制。橋接網絡適用於伺服器虛擬化。

Host-Only網絡:與NAT類似,但是比NAT更封閉,虛擬機僅能和宿主機通訊。同樣適用於桌面虛擬化。

上面安裝過程中已經成功安裝bridge-util,這是Linux環境下用於橋接網卡的工具集,通過工具集可以虛擬出一個新的網卡。Bridge-util工具集會默認創建一個NAT網絡,這時創建的虛擬機都無法滿足伺服器虛擬化要求,所以需要手動創建新的橋接網卡。

在/etc/network/interfaces文件中新增br0網卡信息,如下:

內容解釋:

第一句啟動br0虛擬橋接網卡br0;第二句設置br0橋接網卡為DHCP模式獲取IP;第三句配置br0和eno1建立連接;第四句關閉生成樹協議;第五句設置forwarding delay延遲為0;

配置完成後,重啟網絡:

Service networking restart

/etc/init.d/networking restart

已經創建好的虛擬機可以使用如下命令修改網卡配置:

Virsh edit vm_id

搜索 interface,把其中type改成bridge,bridge改為br0。修改配置的虛擬機重啟後就可以獲得橋接網絡IP。

創建虛擬機

在用戶目錄下面手工創建了兩個目錄,一個叫iso,用來放系統鏡像,一個叫vm用來放虛擬機硬碟文件。

虛擬機配置文件位置:/etc/.libvirt/qemu

虛擬機硬碟文件位置:/var/lib/libvirt/images

使用virsh-install創建虛擬機,如下是一個虛擬機創建示例:

Virt-install \

--virt-type=kvm \

--name=vm-0 \

--ram=2048 \

--vcpus=2 \

--os-variant=ubuntu16.04 \

--hvm \

--cdrom=/home/kvm/iso/ubuntu1604.iso \

--network=default,model=virtio \

--graphics vnc.,listen=0.0.0.0 \

--disk path=/home/kvm/vm/vm-0/vm-0.qcow2,size=60,bus=virtio,format=qcow2

下面介紹各個參數的含義:

Virt-type=kvm 使用kvm作為虛擬機監視器

Name=vm-0 虛擬機實例的名稱,虛擬機名稱不能重複,不能包含空格

Ram=2048 設置虛擬機內存大小,單位MB

Vcpus=2 設置虛擬機CPU核數

Os-variant=ubuntu16.04 設置虛擬機所屬系統以及優化虛擬機參數。使用osinfo-query os來查詢所有支持的系統列表

Cdrom 指定作為虛擬機光碟機內容的設備或文件,可以是宿主機的cdrom或iso文件

Networ 設置虛擬機連接宿主機網絡,默認宿主機網絡是是NAT模式。如果 需要使用橋接模式,則需要修改參數為 –network=bridge=br0,model=virtio

--graphics vnc: 設置虛擬機的console到VNC,同時可以指定vnc埠,地址,密碼。默認情況下埠從5900開始的第一個空閒埠,連接密碼為空。

--disk 設置虛擬機硬碟在宿主機的存儲路徑。Size的單位是GB,disk bus類型為virtio,磁碟格式為qcow2,默認格式為raw。

溫馨提示:網絡和磁碟都建議設置為virtio,virtio即啟動優化的虛擬機專用IO驅動,性能更好。磁碟格式推薦qcow2,同理也是優化後的磁碟格式,支持快照,並且支持空間精簡配置。

克隆虛擬機

virt-clone \

--connect=qemu:///system \

--original cloudfort-001 \

--name cloudfort-0$i \

--file /home/kvm/vm/cloudfort-0$i/cloudfort-0$i.qcow2

日常管理常用命令

Kvm虛擬機默認配置文件位置:/etc/libvirt/qemu,目錄中存放了所有創建過的虛擬機配置文件。

Virsh list

查看正在運行的虛擬機列表,加—all會顯示所有虛擬機主機列表

Osinfo-query os

查看當前virt-install所支持的os參數列表

Virsh deminfo vm_id

查看虛擬機信息

Virsh start vm_id

啟動虛擬機

Virsh shutdown vm_id

關閉虛擬機

Virsh suspend vm_id

掛起虛擬機

Virsh reboot vm_id

重啟虛擬機(相當於在虛擬機內部點擊重啟選項)

Virsh reset vm_id

硬重啟虛擬機

Virsh autostart vm_id

設置虛擬機隨宿主機開機自動啟動

Virsh autostart –disabled vm_id

取消開機自啟動

Virsh destroy vm_id

強制關閉虛擬機電源

Virsh edit vm_id

編輯虛擬機配置文件

Virsh uri

查看當前主機山hypervisor的連結路徑

Virsh undefine vm_id

移除虛擬機定義,只是將虛擬機從列表中移除,並不會刪除虛擬機磁碟文件

Virsh define vm_id.xml

通過虛擬機配置文件重新定義虛擬機

如上是本次整理,後續根據學習情況近逐步

相關焦點

  • 深度學習主機環境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0
    安裝Ubuntu16.04不考慮雙系統,直接安裝 Ubuntu16.04,從ubuntu官方下載64位版本: ubuntu-16.04-desktop-amd64.iso 。operation不過下載CUDA需要註冊和登陸NVIDIA開發者帳號,CUDA8下載頁面提供了很詳細的系統選擇和安裝說明,這裡選擇了Ubuntu16.04系統runfile安裝方案,千萬不要選擇deb方案,前方無數坑:下載的「cuda_8.0.27_linux.run」有1.4G,按照Nivdia官方給出的方法安裝CUDA8:sudo
  • Kvm --04 kvm虛擬機熱遷移,可視化管理
    冷遷移環境準備(環境一致) 橋接網絡下載軟體及啟動[root@kvm02 ~] systemctl start libvirtd[root@kvm02 ~]生成橋接[root@kvm02 ~]關機[root@kvm01 opt]導出配置文件[root@kvm01 opt]傳輸磁碟[root@
  • Linux虛擬化-KVM-虛擬機安裝
    ,性能高,需要改內核;全虛擬化:直接使用物理硬體,性能高;Vmware:支持仿真虛擬化;xen半虛擬化:REHL5自帶xen,安裝時需要安裝內核rpm -ivh kernel-xen-xxx.rpmkvm 全虛擬化:RHEL6自帶kvmShell是一個命令解釋器,它在作業系統的最外層,負責直接與用戶進行對話,把用戶的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果
  • 在Ubuntu18.04中Android Studio開發環境搭建
    作為移動端的作業系統Android佔據了半壁以上的江山,那麼今天就談談在Ubuntu18.04中,Android App應用的開發環境構建。第一步,從Android Studio官網,下載應用包。官網: http://www.android-studio.org下載目錄: /home/username/Downloads/android-studio-ide-173.4720617-linux.zip解壓文件: 右鍵解壓zip文件,然後拷貝android-studio文件夾到你的程序安裝目錄。
  • CentOS7下使用noVNC和websockify連接QEMU/KVM虛擬機
    noVNC是基於HTML5技術的VNC 客戶端,支持手機瀏覽器(iOS 和 Android) noVNC 使用代理器websockify連接到QEMU下面介紹安裝noVNC並使用noVNC連接KVM虛擬機的vnc界面1、yum的EPEL源配置
  • Kvm --01 虛擬化基礎概念
    在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的作業系統,並且應用程式都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率虛擬化使用軟體的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。
  • Linux虛擬機- KVM虛擬機常用的幾個組件
    前言kvm虛擬機是Linux常用的虛擬機。使用kvm虛擬機都會涉及到QEMU、KVM以及libvirt等組件,還有一些命令行或者圖形工具,比如virsh、virt-manager等。那這幾個是什麼關係呢?
  • 基於KVM、VNC和webvirtcloud的自建虛擬平臺
    而其中基於Linux內核的開放虛擬機KVM更是最重要虛擬化基礎架構。本文蟲蟲將帶領大家一起實例學習利用KVN構建自己的虛擬平臺。其中包括:基於Centos 7.6安裝KVM、組網、配置VNC、安裝webvirtcloud進行KVM虛擬平臺管理,安裝kalil inux虛擬機實例。
  • CentOS7 KVM環境下製作CentOS7 qcow2格式鏡像
    3、KVM虛擬機Bridge和NAT網絡連接模式介紹4、CentOS7環境下使用Cockpit創建KVM虛擬機下面介紹CentOS7 KVM環境下製作CentOS7 qcow2格式鏡像如果是CentOS7 KVM環境是VMware虛擬機,需要
  • Kvm --03 kvm克隆,橋接網絡,熱添加
    連結克隆Kvm手動克隆虛擬機:1:創建基於連結克隆的虛擬磁碟文件1:創建基於連結克隆的虛擬磁碟文件 qemu-img create -f qcow2 -b old_disk--os-type=linux --os-variant rhel7 --name centos07 --memory 1024 --vcpus 1 --disk /opt/centos07.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
  • Linux CommonClock Framework分析之四 gpio clk gate驅動實現
    可以給哪些clk consumer提供時鐘(如針對非設備樹模式,則定義了clk consumer的設備名稱、clk consumer的時鐘使用名稱),而clk provider的map存在兩種方式:若linux不支持設備樹機制,則通過調用接口clk_register_clkdev
  • CentOS7下KVM虛擬化環境中體驗Aliyun Linux 2系統
    在本地使用Aliyun Linux 2鏡像Aliyun Linux 2鏡像目前只支持KVM虛擬機。鏡像本身不可直接啟動虛擬機,需要配置引導鏡像。本文中本地環境為Linux作業系統,使用Aliyun Linux 2創建了KVM虛擬機,並使用cloud-init初始化虛擬機系統設置,然後使用NoCloud數據源在本地建立相關配置文件,以虛擬磁碟的形式掛載到KVM虛擬機中進行設置,並啟動虛擬機。
  • 如何在Linux中使用使用Virt-Manager管理KVM虛擬機?
    本文介紹如何在Linux中使用Virt-manager管理KVM虛擬機。virt-manager應用程式用於管理擁有圖形桌面環境的Linux系統中的KVM訪客(guest)。Virt-manager的全稱是虛擬機管理器,這種圖形用戶界面應用程式用於通過libvirt管理虛擬機。
  • 使用 qemu-kvm 安裝和運行 Vagrant
    • 來源:linux.cn • 作者:Andy Mott • 譯者:geekpi •(本文字數:2317,閱讀時長大約:3 分鐘)Vagrant 是一個出色的工具,DevOps專業人員、程式設計師、系統管理員和普通極客來使用它來建立可重複的基礎架構來進行開發和測試。
  • 「自動化實戰」ubuntu系統上快速搭建KVM虛擬機
    一、準備工作1、宿主機作業系統準備號自己的宿主機作業系統為ubuntu16.042、確定CPU的類型egrep"(svm|vmx)" /proc/cpuinfo//這一步是在查看你的電腦的CPU是否支持KVM,如果輸出的一大段字符中有紅色的VMX就代表你的硬體可以支持,那麼可以繼續3、下載好安裝虛擬機所用的系統的
  • Linux系列 ―― 各種環境安裝集合
    ժҪ 網上各種安裝環境的文章髒亂差,我這弄了一套標準的 Linux 環境安裝集合版教程出來,完善中 利用 VirtualBox 安裝 Linux 系統 百度百科: http://jingyan.baidu.com
  • 虛擬化--KVM
    一變多充分利用物理計算機的資源虛擬化是向雲演進的必要基礎假設公司有三臺伺服器,但是有60位開發人員,每個人都要求有一個測試環境,怎麼能把這三臺伺服器合理地分配給這60個人使用?kvm和vmwrae都可看做是一個可以實現虛擬化的軟體。
  • Ubuntu 16.04 搭建KVM環境
    2 安裝KVM及相關依賴包sudo apt-get install qemu-kvmsudo
  • 虛擬化技術之kvm基礎
    一、KVM簡介KVM的全稱是kernel base virtual machine(基於內核的虛擬機)是一個開源的系統虛擬化模塊,自Linux 2.6.20之後集成在Linux的各個主要發行版本中。它使用Linux自身的調度器進行管理,所以相對於Xen,其核心源碼很少。KVM已成為學術界的主流VMM之一。
  • 基於centos linux環境配置docker鏡像加速器
    centos linux環境配置docker鏡像加速器2、點擊控制臺基於centos linux環境配置docker鏡像加速器3、點擊左側 產品與服務-》容器鏡像服務-》點擊鏡像加速器基於centos linux環境配置docker