天天看點

kvm虛拟化學習筆記(十三)之kvm虛拟機磁盤檔案讀取小結

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,如需轉載請自行聯系原作者

繼續閱讀