Ⅰ KVM虛擬機的常用操作命令整理
1,創建虛擬機
代碼如下:
[root@localhost ~]# virt-install --name=centos1 \ #生成一個虛擬機
--ram 1024 --vcpus=1 \
--disk path=/root/centos1.img,size=10 \
--accelerate --cdrom /root/CentOS-6.5-x86_64-bin-DVD1.iso \
--graphics vnc,port=5921 --network bridge=br0
2,virsh的其他操作
代碼如下:
[root@localhost /]# virsh start centos1 #啟動虛擬機
[root@localhost /]# virt-viewer centos1 #如果有圖形界面的話,可以進入虛擬機的界面
[root@localhost ~]# virsh shutdown centos1 #關閉虛擬機
[root@localhost /]# virsh reboot centos1 #重啟虛擬機
[root@localhost /]# virsh suspend centos1 #暫停虛擬機
[root@localhost /]# virsh resume centos1 #恢復虛擬機
[root@localhost /]# virsh autostart centos1 #自動載入虛擬機
virsh參數如下:
autostart #自動載入指定的一個虛擬機
connect #重新連接到hypervisor
console #連接到客戶會話
create #從一個SML文件創建一個虛擬機
start #開始一個非活躍的虛擬機
destroy #刪除一個虛擬機
define #從一個XML文件定義一個虛擬機
domid #把一個虛擬機名或UUID轉換為ID
domuuid #把一個郁悶或ID轉換為UUID
dominfo #查看虛擬機信息
domstate #查看虛擬機狀態
domblkstat #獲取虛擬機設備快狀態
domifstat #獲取虛擬機網路介面狀態
mpxml #XML中的虛擬機信息
edit #編輯某個虛擬機的XML文件
list #列出虛擬機
migrate #將虛擬機遷移到另一台主機
quit #退出非互動式終端
reboot #重新啟動一個虛擬機
resume #重新恢復一個虛擬機
save #把一個虛擬機的狀態保存到一個文件
mp #把一個虛擬機的內核mp到一個文件中以方便分析
shutdown #關閉一個虛擬機
setmem #改變內存的分配
setmaxmem #改變最大內存限制值
suspend #掛起一個虛擬機
vcpuinfo #虛擬機的cpu信息
version #顯示virsh版本
3,virt-clone,如果我們要建幾個一樣的虛擬機,這個命令,非常有用
代碼如下:
# virt-clone --connect=qemu:///system -o centos1 -n centos3 -f /root/centos3.img #克隆centos1
正在克隆 centos1.img | 10.0 GB 00:07
Clone 'centos3' created successfully.
libguestfs-tools是虛擬機一個管理包,很有用的工具
[root@localhost ~]# yum -y install libguestfs-tools #安裝工具包
4,未登錄的情況下,查看鏡像目錄
代碼如下:
[root@localhost ~]# virt-ls centos.img /home #查看centos.img鏡像文件中/home目錄
tank
5,未登錄的情況下,將鏡像文件中的文件出來
代碼如下:
[root@localhost ~]# virsh list --all #查看所有的虛擬機名稱
Id 名稱 狀態
----------------------------------------------------
1 centos1running
2 centos6.5 running
- arch 關閉
- arch1 關閉
- arch2 關閉
- arch3 關閉
- arch5 關閉
- centos3關閉
- ubuntu 關閉
- ubuntu1關閉
[root@localhost ~]# virt--out -d centos1 /etc/passwd /tmp #將centos1中的文件到tmp下面
6,查看虛擬機的分區情況
代碼如下:
[root@localhost ~]# virt-filesystems -d centos1
/dev/sda1
/dev/VolGroup/lv_root
[root@localhost ~]# virt-list-partitions /root/centos.img
/dev/sda1
/dev/sda2
[root@localhost ~]# virt-df centos.img
Filesystem 1K-blocks Used Available Use%
centos.img:/dev/sda1 495844 34510 435734 7%
centos.img:/dev/VolGroup/lv_root 8780808 2842056 5492700 33%
7,mount虛擬機
代碼如下:
[root@localhost ~]# guestmount -a /root/centos.img -m /dev/VolGroup/lv_root --rw /mnt/usb
[root@localhost ~]# cd /mnt/usb/
[root@localhost usb]# ls
bin dev home lib64 media mnt opt root selinux sys usr
boot etc lib lost+found misc net proc sbin srv tmp var
8,修改kvm中虛擬機的內存大小
代碼如下:
[root@nfs ~]# virsh edit vm01 ##注意vi直接編輯不生效
vm01
df8604c1-dcf3-fa98-420f-6eea7b39c395
1048576 ###本來開始設置為1G,現在這個單位是k
1048576
修改為1.5G
代碼如下:
[root@nfs ~]# expr 1536 \* 1024
1572864/p
p[root@nfs ~]# virsh list
Id Name State
----------------------------------
1 win2003 running
3 vm01 running/p
p[root@nfs ~]# virsh shutdown vm01 ###修改配置文件後需要重新啟動下虛擬機,先關閉它
Domain vm01 is being shutdown/p
p[root@nfs ~]# virsh list ###確認已經被關閉
Id Name State
----------------------------------
1 win2003 running/p
p[root@nfs ~]# virsh start vm01 ###啟動它
Domain vm01 started/p
p[root@nfs ~]# virsh list
Id Name State
----------------------------------
1 win2003 running
3 vm01 running
到機器上查看內存大小:
代碼如下:
[root@vm01 liuxiaojie]# free -m
total used free shared buffers cached
Mem: 1505 618 886 0 29 361
-/+ buffers/cache: 227 1277
Swap: 2000 0 2000
9,刪除一個虛擬機(vm01)
代碼如下:
[root@nfs qemu]# virsh undefine vm01
[root@nfs qemu]# rm -f /home/data/vm01.img
10,刪除一個域
代碼如下:
[root@nfs web01]# virsh list --all
Id Name State
----------------------------------
1 web01 running ##處於工作狀態
- myweb01 shut off
- myweb03 shut off
- mywin2003 shut off
- myxp shut off
- xp shut off
代碼如下:
[root@nfs web01]# virsh undefine web01 ##處於工作狀態也能刪除!
Domain web01 has been undefined
代碼如下:
[root@nfs web01]# virsh list
Id Name State
----------------------------------
1 web01 running
代碼如下:
[root@nfs web01]# virsh destroy web01
Domain web01 destroyed
代碼如下:
[root@nfs web01]# virsh list --all ##web01已經沒有了!
Id Name State
----------------------------------
- myweb01 shut off
- myweb03 shut off
- mywin2003 shut off
- myxp shut off
- xp shut off
代碼如下:
[root@nfs web01]# virsh define web01
error: Failed to open file 'web01': No such file or directory
Ⅱ 怎樣在 Ubuntu 和 Debian 中通過命令行管理 KVM
第一步:確認你的硬體平台支持虛擬化
第一步,首先要確認你的 CPU 支持硬體虛擬化擴展(e.g.,Intel VT 或者 AMD-V),這是 KVM 對硬體的要求。下面的命令可以檢查硬體是否支持虛擬化。
第二步:安裝KVM
使用 apt-get 安裝 KVM 和相關的用戶空間工具。
$ sudo apt-get install qemu-kvm libvirt-bin
安裝期間,libvirtd 用戶組(在 debian 上是 libvirtd-qemu 用戶組)將會被創建,並且你的用戶 id 將會被自動添加到該組中。這樣做的目的是讓你可以以一個普通用戶而不是 root 用戶的身份去管理虛擬機。你可以使用 id 命令來確認這一點,下面將會告訴你怎麼去顯示你的組 id:
$ id <your-userID>
如果因為某些原因,libvirt(在 debian 中是 libvirt-qemu)沒有在你的組 id 中被找到,你也可以手動將你自己添加到對應的組中,如下所示:
在 ubuntu 上:
$ sudo adser [youruserID] libvirtd
在 debian 上:
$ sudo adser [youruserID] libvirt-qemu
按照如下命令重新載入更新後的組成員關系。如果要求輸入密碼,那麼輸入你的登陸密碼即可。
$ exec su -l $USER
這時,你應該可以以普通用戶的身份去執行 virsh 了。做一個如下所示的測試,這個命令將會以列表的形式列出可用的虛擬機(當前的列表是空的)。如果你沒有遇到許可權問題,那意味著到目前為止一切都是正常的。
$ virsh list
Id Name State
第三步:配置橋接網路
為了使 KVM 虛擬機能夠訪問外部網路,一種方法是通過在 KVM 宿主機上創建 Linux 橋來實現。創建之後的橋能夠將虛擬機的虛擬網卡和宿主機的物理網卡連接起來,因此,虛擬機能夠發送和接收由物理網卡傳輸的數據包。這種方式叫做網路橋接。
下面將告訴你如何創建並且配置網橋,我們創建一個網橋稱它為 br0。
首先,安裝一個必需的包,然後用命令行創建一個網橋。
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
下一步就是配置已經創建好的網橋,即修改位於 /etc/network/interfaces 的配置文件。我們需要將該橋接網卡設置成開機啟動。為了修改該配置文件,你需要關閉你的操作系統上的網路管理器(如果你在使用它的話)。跟隨操作指南的說明去關閉網路管理器。
關閉網路管理器之後,接下來就是通過修改配置文件來配置網橋了。
#auto eth0
#iface eth0 inet dhcp
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
在上面的配置中,我假設 eth0 是主要網卡,它也是連接到外網的網卡,同樣,我假設 eth0 將會通過 DHCP 協議自動獲取 ip 地址。注意,之前在 /etc/network/interfaces 中還沒有對 eth0 進行任何配置。橋接網卡 br0 引用了 eth0 的配置,而 eth0 也會受到 br0 的制約。
重啟網路服務,並確認網橋已經被成功的配置好。如果成功的話,br0 的 ip 地址將會是 eth0 自動分配的 ip 地址,而且 eth0 不會被分配任何 ip 地址。
$ sudo /etc/init.d/networking restart
$ ifconfig
如果因為某些原因,eth0 仍然保留了之前分配給了 br0 的 ip 地址,那麼你可能必須手動刪除 eth0 的 ip 地址。
第四步:用命令行創建一個虛擬機
對於虛擬機來說,它的配置信息被存儲在它對應的xml文件中。因此,創建一個虛擬機的第一步就是准備一個與虛擬機對應的 xml 文件。
第五步:使用命令行啟動虛擬機
在啟動虛擬機之前,我們需要創建它的初始磁碟鏡像。為此,你需要使用 qemu-img 命令來生成一個 qemu-kvm 鏡像。下面的命令將會創建 10 GB 大小的空磁碟,並且它是 qcow2 格式的。
$ qemu-img create -f qcow2 /home/dev/images/alice.img 10G
使用 qcow2 格式的磁碟鏡像的好處就是它在創建之初並不會給它分配全部大小磁碟容量(這里是 10 GB),而是隨著虛擬機中文件的增加而逐漸增大。因此,它對空間的使用更加有效。
現在,你可以通過使用之前創建的 xml 配置文件啟動你的虛擬機了。下面的命令將會創建一個虛擬機,然後自動啟動它。
$ virsh create alice.xml
Domain alice created from alice.xml
注意: 如果你對一個已經存在的虛擬機執行了了上面的命令,那麼這個操作將會在沒有任何警告的情況下抹去那個已經存在的虛擬機的全部信息。如果你已經創建了一個虛擬機,你可能會使用下面的命令來啟動虛擬機。
$ virsh start alice.xml
使用如下命令確認一個新的虛擬機已經被創建並成功的被啟動。
$ virsh list
Id Name State
----------------------------------------------------
3 alice running
同樣,使用如下命令確認你的虛擬機的虛擬網卡已經被成功的添加到了你先前創建的 br0 網橋中。
$ sudo brctl show
遠程連接虛擬機
為了遠程訪問一個正在運行的虛擬機的控制台,你可以使用VNC客戶端。
需要解決更多linux問題,詳情請看 http://www.linuxprobe.com/chapter-00.html
望採納
Ⅲ kvm 創建虛擬機qemu-kvm 和virt-install的區別
首先要了解qemu和libvirt。
QEMU(Quick Emulator) 是一個廣泛使用的開源計算機 模擬器和虛擬機。是一款免費的、開源的、純軟體實現的、可執行硬體虛擬化的 VMM。
libvirt是目前使用最為廣泛的對KVM虛擬機進行管理的工具和API,本質上是一些被提供的庫函數(C語言), 它引用了面向驅動的架構設計, 對所有的虛擬化技術都提供了相應的驅動和統一的介面, 用於管理物理機的虛擬機。 Libvirt 具有非常強的可擴展性, 可供本地或遠程的 virsh 調用。
qemu-kvm 命令屬於QEMU,virt-install命令屬於libvirt。libvirt調用qemu-kvm來管理虛擬機。如果Hypervisor是KVM,命令參數不一樣而已,沒區別。