kvm虛拟機磁盤挂載還真不是一帆風順的。xen虛拟化預設就raw格式的磁盤,可以直接挂載,kvm如果采用raw也可以直接挂載,與xen磁盤挂載方式一緻。
本文出自:http://koumm.blog.51cto.com
(1)raw格式的磁盤可以直接挂載,可以将qcow2磁盤轉換成raw格式并挂載
轉換示例:qemu-imgconvert-fraw-Oqcow2/data/raw.img/data/qcow2.img
(2)通過編譯安裝qemu-nbd工具挂載qcows格式的磁盤
qemu-nbd工具預設沒有安裝,需要編譯安裝,該内容待測試,如确實需要也可以參考思路1去解決。
(3)通過建立KVM環境建立kvm虛拟機配置檔案挂載虛拟磁盤啟動虛拟機
(4)通過libguestfs-tools工具直接修改與讀取qcow2虛拟磁盤檔案
本文主要測試libguestfs-tools工具來進行測試。
(1)确認libguestfs-tools工具的安裝,沒有安裝可以yum進行安裝。
安裝完成後,會安裝很多virt-開頭的指令,下面将大概介紹使用這些指令。
1
2
3
4
5
6
7
8
<code>[root@node1 ~]# vir</code>
<code>virsh virt-df virt-inspector2 virt-p2v-server virt-tar-</code><code>in</code>
<code>virt-alignment-scan virt-edit virt-install virt-pki-validate virt-tar-out</code>
<code>virt-cat virt-filesystems virt-list-filesystems virt-rescue virt-v2v</code>
<code>virt-clone virt-format virt-list-partitions virt-resize virt-viewer</code>
<code>virt-convert virt-host-validate virt-ls virt-sparsify virt-what</code>
<code>virt-copy-</code><code>in</code> <code>virt-image virt-make-fs virt-sysprep virt-win-reg</code>
<code>virt-copy-out virt-inspector virt-manager virt-tar virt-xml-validate</code>
(2)指令使用參數格式
<code>virt-df [--options] -d domname</code>
<code>virt-df [--options] -a disk.img [-a disk.img ...]</code>
通常兩種方式:-d是采用域名稱方式,-a是直接擷取的磁盤檔案方式。
直接檢視虛拟機裡面的/etc/passwd檔案,類似于cat指令。
<code>[root@node1 ~]# virt-cat -d oeltest01 /etc/passwd</code>
<a href="http://blog.51cto.com/attachment/201309/185139521.jpg" target="_blank"></a>
<a></a>
直接編輯虛拟機裡面的檔案,類似于vi指令。
注:虛拟機必須處于關機狀态,否則會出現如下提示:
<code>libguestfs: error: error: domain </code><code>is</code> <code>a live virtual machine.</code>
<code>Writing to the disks of a running virtual machine can cause disk corruption.</code>
<code>Either </code><code>use</code> <code>read-only access, or </code><code>if</code> <code>the guest </code><code>is</code> <code>running the guestfsd daemon</code>
<code>specify live access. In most libguestfs tools these options are --ro or</code>
<code>--live respectively. Consult the documentation </code><code>for</code> <code>further information.</code>
<a href="http://blog.51cto.com/attachment/201309/185204453.jpg" target="_blank"></a>
<code>[root@node1 ~]# virt-edit -d oeltest01 /etc/rc.local</code>
可以通過vi指令進行編輯。
<a href="http://blog.51cto.com/attachment/201309/185227469.jpg" target="_blank"></a>
直接檢視虛拟機裡面的磁盤使用情況,類似于df-h指令。
<code>[root@node1 ~]# virt-df -h oeltest01</code>
virt-filesystems指令也與上面内容類似
<code>[root@node1 ~]# virt-filesystems -d oeltest01</code>
<code>/dev/sda1</code>
<code>/dev/vg/root</code>
直接複制虛拟機裡面的磁盤檔案到本地磁盤上,類似于cp指令。
(1)拷貝oeltest01虛拟機中的passwd檔案到本地/root目錄下
<code>[root@node1 ~]# virt-copy-out -d oeltest01 /etc/passwd /root/</code>
(2)拷貝oeltest01虛拟機中的/etc/到本地/root目錄下
<code>[root@node1 ~]# virt-copy-out -d oeltest01 /etc /root/</code>
<a href="http://blog.51cto.com/attachment/201309/185413515.jpg" target="_blank"></a>
該指令很有用,也可以直接指定虛拟機磁盤檔案進行指令。
#檢視虛拟機所有磁盤檔案
<a href="http://blog.51cto.com/attachment/201309/185431858.jpg" target="_blank"></a>
通過直接讀取磁盤檔案中的内容。
<code>[root@node1 ~]# virt-copy-out -a /data/test01.qcow2 -a /data/test01_add01.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0 /root/</code>
<a href="http://blog.51cto.com/attachment/201309/185451922.jpg" target="_blank"></a>
直接複制虛拟化平台上本地磁盤檔案到虛拟機磁盤上,類似于cp指令。
拷貝本地/root/etc.tar.gz檔案到虛拟機/root目錄下
<code>[root@node1 ~]# virt-copy-</code><code>in</code> <code>-d oeltest01 /root/etc.tar.gz /root/</code>
注:虛拟化必須處于關機狀态,可以開機驗證。
9
10
11
12
13
14
15
16
17
18
19
20
21
<code>[root@node1 ~]# virsh start oeltest01</code>
<code>域 oeltest01 已開始</code>
<code>[root@node1 ~]#</code>
<code>[root@node1 ~]# virsh console oeltest01</code>
<code>連接配接到域 oeltest01</code>
<code>Escape character </code><code>is</code> <code>^]</code>
<code>Oracle Linux Server release </code><code>5.8</code>
<code>Kernel </code><code>2.6</code><code>.</code><code>18</code><code>-</code><code>308</code><code>.el5 on an x86_64</code>
<code>test01 login: root</code>
<code>Password:</code>
<code>Last login: Wed Sep </code><code>11</code> <code>05</code><code>:</code><code>21</code><code>:</code><code>11</code> <code>on ttyS0</code>
<code>[root@test01 ~]# ll</code>
<code>total </code><code>10828</code>
<code>-rw------- </code><code>1</code> <code>root root </code><code>1225</code> <code>Sep </code><code>11</code> <code>03</code><code>:</code><code>54</code> <code>anaconda-ks.cfg</code>
<code>drwxr-xr-x </code><code>2</code> <code>root root </code><code>4096</code> <code>Sep </code><code>11</code> <code>04</code><code>:</code><code>17</code> <code>Desktop</code>
<code>-rw-r--r-- </code><code>1</code> <code>root root </code><code>11006264</code> <code>Sep </code><code>16</code> <code>2013</code> <code>etc.tar.gz</code>
<code>-rw-r--r-- </code><code>1</code> <code>root root </code><code>36587</code> <code>Sep </code><code>11</code> <code>03</code><code>:</code><code>54</code> <code>install.log</code>
<code>-rw-r--r-- </code><code>1</code> <code>root root </code><code>3828</code> <code>Sep </code><code>11</code> <code>03</code><code>:</code><code>53</code> <code>install.log.syslog</code>
<code>[root@test01 ~]#</code>
文讀取虛拟機磁盤檔案的内容到此,還有很多指令的指令,可以進行測試。
本文轉自 koumm 51CTO部落格,原文連結:http://blog.51cto.com/koumm/1298845,如需轉載請自行聯系原作者