虛擬化技術概述 虛擬機安裝與管理手冊
概述:虛擬化技術的介紹(kvm,qemu),虛擬機的安裝,虛擬機的管理(virt-manger,virsh等)。
1.為什么要有虛擬化技術?
如果你的主要操作系統(tǒng)是windows但是又需要在Linux上工作,像VMware(需要付費。。。)或者virtualbox一定是你的首選,這樣你就可以在兩個操作系統(tǒng)間隨意切換了,除了這其實我們還有解除了很多虛擬化技術;比如虛擬光驅(qū),我們完全不需要真正的光驅(qū)也可以使用光盤鏡像,這些都是我們?nèi)粘=佑|到的,但并不是虛擬化技術的全部,現(xiàn)在比較熱門的docker容器也是一種虛擬化技術。
在企業(yè)中可以將同一臺機器的資源分割,管理員可以針對不同的客戶群設置不同的虛擬機,隔離出不同的區(qū)塊,以進行系統(tǒng)升級和維護,而完全不影響終端使用者的作業(yè)。 資訊管理人員可以建置一部商用暨個人用的桌上型電腦系統(tǒng),有效隔離軟體的載入和病毒的攻擊;或者建置一部能夠執(zhí)行不同作業(yè)系統(tǒng)和軟體的電腦,以因應不同的需求或支援舊版軟體。 可見在企業(yè)中虛擬化技術有很廣泛的應用。
說了這么多,先來看看你的計算機是否支持虛擬化,打開終端鍵入grep --color -E "vmx|svm" /proc/cpuinfo
如果有信息顯示那么恭喜你,你可以安裝虛擬化軟件了
虛擬化軟件的安裝
yum install qemu-kvm qemu-img
yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client
2.虛擬機的安裝
和我們最友好也最簡單的虛擬化技術就是虛擬機了,這里簡單介紹虛擬機的安裝。
2.1)圖形化安裝
在系統(tǒng)工具中找到Virtual Machine Manager或者在終端輸入virt-manager打開這個虛擬機圖形管理窗口,在畫紅圈處單機右鍵選擇NEW可以進入虛擬創(chuàng)建
進入這個界面選擇第一個選項,用本地的媒體安裝
改圖第二個選項為你的磁盤鏡像的路徑,選好后Forward
在這里選擇你虛擬機的內(nèi)存大小
這里選擇硬盤的大小
這里選擇虛擬機的名字,這個名字是我們識別虛擬機的一個標志
這些點完后終于來到了裝機界面,這里有兩個選項,第一個選項是直接安裝redhat7.1,第二個選項是測試一下這個鏡像再安裝。
選擇裝系統(tǒng)時使用的語言(為了繼續(xù)強調(diào)英語的重要性,我選擇了英語。。。),是安裝系統(tǒng)時的語言不是系統(tǒng)本身的!
安裝系統(tǒng)的一個主界面按照上到下,左到右的順序,分別是時區(qū)的選擇(上海),鍵盤類型的選擇(美式鍵盤),系統(tǒng)的語系支持(把中文加上,否則遇到中文時會出現(xiàn)亂碼),安裝的鏡像源是什么(本地的磁盤鏡像),軟件包的選擇(為了快速我選擇了最小安裝),安裝到哪個盤上和磁盤的分區(qū)(默認的磁盤分區(qū)和我自己分的沒什么區(qū)別。。。一般是/boot 200MB,swap 為內(nèi)存的2倍吧,剩下的全給/),Kdump 是一種基于 kexec 的 Linux 內(nèi)核崩潰捕獲機制,將 kernel 崩潰前的內(nèi)存鏡像保存,程序員通過分析該文件找出 kernel 崩潰的原因,從而進行系統(tǒng)改進。最后是安裝過程的網(wǎng)絡設置(我們選擇不設置)。
一切設置好后我們進入安裝的進度條界面,等進度條讀完,即可重啟進入這個新鮮的redhat。
2.2)命令安裝虛擬機
在Linux中一切皆是命令安裝虛擬機也可以使用命令而且非常方便
[root@foundation3 ~]# virt-install --name mo1 --ram 1024 --file /var/lib/li bvirt/images/mo1.img --cdrom /root/Desktop/rhel-server-7.1-x86_64-dvd.iso - -file-size 8 WARNING No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results. WARNING CDROM media does not print to the text console by default, so you likel y will not see text install output. You might want to use --location.See the man page for examples of using --location with CDROM media Starting install... Allocating 'mo1.img' | 8.0 GB 00:00 Creating domain... | 0 B 00:00 Connected to domain mo1
這其中--name選項是確定虛擬機的名字,--ram是虛擬機的內(nèi)存,--file為你將虛擬機的磁盤文件存儲路徑,--cdrom是你的鏡像文件路徑,--file-size是虛擬機的磁盤大小。鍵入命令后即可進入安裝系統(tǒng)的界面,在上一步驟已經(jīng)介紹完了。
3)虛擬機的管理
在介紹虛擬機管理命令之前我們先介紹下創(chuàng)建完虛擬機并安裝完系統(tǒng)后生成了哪些文件,或者說虛擬機對于我們真機到底是個啥?
[root@foundation3 ~]# ls /etc/libvirt/qemu /var/lib/libvirt/images/ /etc/libvirt/qemu: desktop.xml <span style="color:#ff0000;">mo.xml</span> networks server.xml /var/lib/libvirt/images/: mo1.img rh124-desktop-vda.qcow2 rh124-server-vda.ovl rh124-server.xml <span style="color:#ff0000;">mo.img</span> rh124-desktop-vdb.ovl rh124-server-vda.qcow2 test.sh mo_shot.qcow2 rh124-desktop-vdb.qcow2 rh124-server-vdb.ovl vm1.qcow2 rh124-desktop-vda.ovl rh124-desktop.xml rh124-server-vdb.qcow2
上面輸出的結果中紅色字處就是我們生成的文件,總共兩個一個xml文件和一個硬盤文件。xml文件可以隨意刪掉,不會影響虛擬機,但是如果刪掉他我們不能再virt-manager(虛擬機圖形管理工具上找到他),不過我們有方法恢復;硬盤文件如果刪掉的話那你的虛擬機也就無法使用了。
virt-manager ##開啟圖形管理工具
virt-viewer vmname
##顯示以vmname為名字的虛擬機,當我們開啟虛擬機時默認不會,將他顯示在前臺而只是running狀態(tài),如果我們要將他顯示出來就要鍵入上面這條命令
virsh list ##列出正在運行的虛擬機(在默認情況下,需要root用戶才可以查看)
[root@foundation3 ~]# virsh list Id Name State ----------------------------------------------------
表示我沒有虛擬機在運行,但是如果我不是root用戶的話也會顯示如上圖輸出
[root@foundation3 ~]# virsh start mo Domain mo started [root@foundation3 ~]# virsh list Id Name State ---------------------------------------------------- 9 mo running [root@foundation3 ~]# su - mo Last login: Wed Oct 19 10:48:59 CST 2016 on pts/3 [mo@foundation3 ~]$ virsh list Id Name State ----------------------------------------------------
所以一定要切換到root用戶使用此命令否則是無效的,但是具體為什么只有root用戶可以查看或其他設定都在配置文件中規(guī)定著(/etc/libvirt/qemu.conf),說到這里我想到了一個我剛開始安裝虛擬機出現(xiàn)的錯誤,如下:
[root@foundation3 ~]# virt-install --name zhao --ram 1024 --file /var/lib/libvirt/images/zhao.img --file-size 8 --cdrom /root/Desktop/rhel-server-7.1-x86_64-dvd.iso WARNING No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results. WARNING CDROM media does not print to the text console by default, so you likely will not see text install output. You might want to use --location.See the man page for examples of using --location with CDROM media Starting install... Allocating 'zhao.img' | 8.0 GB 00:00:00 <span style="color:#ff0000;">ERROR </span> internal error: process exited while connecting to monitor: 2016-10-19T03:00:25.552714Z qemu-kvm: -drive file=/root/Desktop/rhel-server-7.1-x86_64-dvd.iso,if=none,id=drive-ide0-0-1,readonly=on,format=raw: <span style="color:#ff0000;">could not open disk image /root/Desktop/rhel-server-7.1-x86_64-dvd.iso: Could not open file: Permission denied</span> Domain installation does not appear to have been successful. If it was, you can restart your domain by running: virsh --connect qemu:///system start zhao otherwise, please restart your installation.
根據(jù)上面紅字的報錯,他竟然說我沒權限,我是root好不好!!我很是生氣,作為root用戶還要看到“Permission denied“的侮辱,我先查看了下鏡像文件的權限,如下:
[root@foundation3 ~]# ll /root/Desktop/rhel-server-7.1-x86_64-dvd.iso -rw-r--r-- 1 qemu qemu 3890216960 Oct 17 22:15 /root/Desktop/rhel-server-7.1-x86_64-dvd.iso
顯示結果是我有對他的讀寫權限,所以權限沒有問題,經(jīng)過仔細的查閱資料,我找到了解決方法,原來對虛擬機操作的權限還在一個他的配置文件中規(guī)定著!
<span style="color:#ff0000;">#user = "root"</span> # The group for QEMU processes run by the system instance. It can be # specified in a similar way to user. <span style="color:#ff0000;">#group = "root"</span> # Whether libvirt should dynamically change file ownership # to match the configured user/group above. Defaults to 1. # Set to 0 to disable file ownership changes. <span style="color:#ff0000;">#dynamic_ownership =0 </span>
將紅色處的#去掉我們的root就有權限創(chuàng)建虛擬機啦。
virsh list --all ##列出所有虛擬機(同樣也需要root用戶)
[root@foundation3 ~]# virsh list --all Id Name State ---------------------------------------------------- - desktop shut off - mo shut off - server shut off
virsh start vmname ##開啟名為vmname的虛擬機
virsh shutdown vmname ##正常關閉vmname虛擬機
virsh destroy vmname ##強行結束vmname虛擬機
virsh create vmname.xml ##指定vmname虛擬機前端文件(*.xml),并顯示在圖形管理工具上,相當于臨時恢復虛擬機前端引導選項
virsh define vmname.xml ##永久恢復虛擬機前端引導項
virsh undefine vmname.xml ##刪除虛擬機前端管理,但不會刪除硬盤鏡像。
下面仔細說明下這個前段引導的作用和一些操作:
虛擬機圖形管理界面和virsh list --all顯示出一樣的結果
我們可以對”mo“這臺虛擬機單機右鍵選擇Delete,刪除前端文件。
也可以通過 virsh undefine mo命令刪除它的前端文件。這個命令的原理是刪除掉/etc/libvirt/qemu/mo.xml,所以只要提前備份這個文件即可恢復前端文件。然后使用virsh define */mo.xml就可恢復前端文件。
但是我沒有備份。就只能通過重新加載鏡像來生成mo.xml文件了,其實也非常簡單。
[root@foundation3 ~]# virt-install --name mo --ram 1024 --disk /var/lib/libvirt/images/mo.img
是不是和剛開始創(chuàng)建虛擬機的命令是一樣的只不過參數(shù)有些變化,這里我們相當于在電影中將一個特工的身份抹掉,再生成一個身份,所以只用指定它的新名字(可與和以前一樣)和真身是什么(就是硬盤文件)即可,而且速度非常快。這樣就重新生成好了前端文件。
4)虛擬機快照
使用過vmware的同學都知道虛擬機有一個快照功能非常好用,也是我們能在虛擬機上隨便折騰的基礎保證
紅線處就是拍攝快照的地方。我們的kvm呢,當然也有這個功能了。如下
[root@foundation3 ~]# qemu-img create -f qcow2 -b /var/lib//libvirt/images/mo.img /var/lib/libvirt/images/test.qcow2 Formatting '/var/lib/libvirt/images/test.qcow2', fmt=qcow2 size=8589934592 backing_file='/var/lib//libvirt/images/mo.img' encryption=off cluster_size=65536 lazy_refcounts=off [root@foundation3 ~]# ls /var/lib/libvirt/images/ mo1.img rh124-desktop-vdb.ovl rh124-server-vdb.ovl vm1.qcow2 mo.img rh124-desktop-vdb.qcow2 rh124-server-vdb.qcow2 zhao.img mo_shot.qcow2 rh124-desktop.xml rh124-server.xml rh124-desktop-vda.ovl rh124-server-vda.ovl <span style="color:#ff0000;">test.qcow2</span> rh124-desktop-vda.qcow2 rh124-server-vda.qcow2 test.sh [root@foundation3 ~]#
紅色部分就是我們創(chuàng)建的快照,接下來我們使用上面提到的
[root@foundation3 ~]# virt-install --name mo --ram 1024 --disk /var/lib/libvirt/images/test.qcow2
就可以使用快照了,如果快照被玩壞了,再重新建立一個快照,仍然和原虛擬機是一樣的,但是切記,虛擬機真正的磁盤文件不可刪除或者玩壞,因為那樣就沒法恢復了。
總結一下kvm的快照其實就是以原虛擬機磁盤文件為基礎,拍攝快照,每次拍攝的快照系統(tǒng)與原虛擬機一模一樣,所以對于原虛擬機有什么更改,快照也會有相應的更改。
由于自帶的管理命令太過強大,但是有點功能其實不太需要,但又缺少了諸如直接重置等一鍵簡單操作,我自己封裝了一個腳本,來管理虛擬機,代碼如下:
#!/bin/bash create_img() { virsh undefine $1 &>/dev/null qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.img /var/lib/libvirt/images/$1_shot.qcow2 &>/dev/null virt-install --name $1 --ram 1024 --disk /var/lib/libvirt/images/$1_shot.qcow2 --import --noautoconsole &>/dev/null virsh define /etc/libvirt/qemu/$1.xml &>/dev/null } delete_img() { virsh undefine $1 &>/dev/null rm -rf /var/lib/libvirt/images/$1_shot.qcow2 &>/dev/null } check_status() { status=`virsh list --all| sed -n '3,$p'|sed 's/[[:space:]]\+/:/g'|grep $1 |cut -d':' -f4` echo $status if [ $status = "shut" ];then return 0 elif [ $status = 'running' ];then return 1 fi } case $1 in --start|-s) shift echo "start $1 ..." check_status $1 &>/dev/null && virsh start $1 &>/dev/null ;; --view|-v) shift echo "view $1 ..." check_status $1 &> /dev/null || virt-viewer $1 &>/dev/null & ;; --shutdown|-d) shift echo "shutdown $1 ..." check_status $1 &> /dev/null || virsh destroy $1 &>/dev/null & ;; --create|-c) shift check_status $1 &> /dev/null || virsh destroy $1 echo "create snapshot for $1 ..." create_img $1 echo "success create snapshot" ;; --reset|-r) shift check_status &>/dev/null $1 || virsh destroy $1 delete_img $1 create_img $1 ;; --check|-h) shift echo $1 `check_status $1` ;; *) echo "vmctl <COMMAND> <OPTIONS> " echo "" echo "open,show,shutdown,reset...Virtual Machine" echo -e "--start|-s\topen Virtual Machine\n--view|-v\tshow the Virtual Machine that has been opened" echo -e "--shutdown|-d\tclose your Virtual Machine" echo -e "--create|-c\tcreate a snapshot for your Virtual Machine" echo -e "--reset|-r\treset your Virtual Machine" echo -e "--check|-h\tcheck Virtual Machine status running or shut" ;; esac
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 輕松玩轉(zhuǎn)VMWare虛擬機之安裝GHOST系統(tǒng)圖文教程
- android 使用虛擬機安裝apk(圖文教程)
- Vmware虛擬機的安裝及配置方法
- win2008 r2 hyper-v虛擬機的安裝使用圖文教程
- 資料:如何用虛擬機安裝Windows Vista系統(tǒng)
- CentOS7.2虛擬機上安裝MySQL 5.6.32的教程
- centos 6.6 安裝 KVM 虛擬機的方法
- virtualbox虛擬機上安裝centOS的網(wǎng)絡配置詳解
- Windows Server 2012 R2 Hyper-V虛擬化常見異常處理方法總結
- 虛擬化之VMware Workstation 10.0.x安裝教程(圖文)
相關文章
Kubernetes k8s configmap 容器技術解析
這篇文章主要為大家介紹了k8s configmap 容器技術解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08IoT邊緣集群Kubernetes?Events告警通知實現(xiàn)示例
這篇文章主要為大家介紹了IoT邊緣集群Kubernetes?Events告警通知實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02Rainbond的ServiceMesh架構組件端口沖突處理解決
這篇文章主要大家介紹了Rainbond?ServiceMesh架構組件端口沖突處理方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04K8S如何利用Prometheus監(jiān)控pod的實時數(shù)據(jù)指標
這篇文章主要給大家介紹了關于K8S如何利用Prometheus監(jiān)控pod的實時數(shù)據(jù)指標的相關資料,Prometheus是一個開源的服務監(jiān)控系統(tǒng)和時序數(shù)據(jù)庫,其提供了通用的數(shù)據(jù)模型和快捷數(shù)據(jù)采集、存儲和查詢接口,需要的朋友可以參考下2024-01-01