kvm挂载磁盘的方法和工具很多,具体如下:

 (1)raw格式的磁盘可以直接挂载,也可以将qcow2格式的磁盘转换成raw格式的并挂载。eg:转换的命令为:

[root@KVM ~]# qemu-img convert -f raw -O qcow2 yz3_add.qcow2 yz3_add.img

具体的可以参考上节内容。

 (2)通过编译安装qemu-nbd工具挂载qcow2格式的磁盘。 qemu-nbd工具默认没有安装,需要编译进行安装。

 (3)通过创建kvm环境创建kvm虚拟机配置文件挂载虚拟机磁盘启动虚拟机。该内容课参考六的内容(KVM虚拟化笔记(六)------kvm虚拟机的克隆)

 (4)通过libguestfs-tools工具进行测试。


本文主要测试的是libguest-tools工具进行测试,步骤如下:

1,首先确认libguestfs-tools工具是否安装,没有的话可进行yum安装。

[root@KVM  ~]#install libguestfs-tools
[root@KVM ~]# rpm -qa|grep libguestfs-tools
libguestfs-tools-1.20.11-14.el6.x86_64
libguestfs-tools-c-1.20.11-14.el6.x86_64
[root@KVM ~]# vir
virsh                  virt-p_w_picpath             virt-resize
virt-alignment-scan    virt-inspector         virt-sparsify
virt-cat               virt-inspector2        virt-sysprep
virt-clone             virt-install           virt-tar
virt-convert           virt-list-filesystems  virt-tar-in
virt-copy-in           virt-list-partitions   virt-tar-out
virt-copy-out          virt-ls                virt-top
virt-df                virt-make-fs           virt-v2v
virt-edit              virt-manager           virt-viewer
virt-filesystems       virt-p2v-server        virt-win-reg
virt-format            virt-pki-validate      virt-xml-validate
virt-host-validate     virt-rescue

命令格式:-d采用域名的方式,-a是直接获取磁盘文件方式

virt-df  [--options] -d domname
virt-df [--options] -a disk.img [-a disk.img ...]


2,virt-cat命令,可直接查看虚拟机的文件,类似于cat,(开关机都可以)

[root@KVM ~]# virt-cat -d hadoop1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
[root@KVM ~]#

3,virt-edit命令,可直接编辑虚拟机里面的文件,类似于vi编辑器(注意:该虚拟机必须处于关机状态)


KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第1张图片

[root@KVM ~]# virt-edit -d hadoop3 /etc/sysconfig/selinux 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


4,virt-df命令,可直接查看虚拟机里边的磁盘使用情况,类似于df -h命令,(开关机都可以)。

[root@KVM ~]# virt-df -h hadoop1
Filesystem                                Size       Used  Available  Use%
hadoop1:/dev/sda1                         484M        32M       427M    7%
hadoop1:/dev/VolGroup/lv_root              18G       733M        17G    4%
[root@KVM ~]# virt-df -h hadoop4
Filesystem                                Size       Used  Available  Use%
hadoop4:/dev/sda1                         484M        32M       427M    7%
hadoop4:/dev/VolGroup/lv_root              12G       731M        11G    6%
[root@KVM ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     win7                           running
 17    hadoop1                        running
 18    hadoop4                        running
 20    hadoop2                        running
 -     hadoop3                        shut off

KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第2张图片


5,virt-filesystems命令,也是查看磁盘的使用情况,和virt-df命令类似(开关机都可以)KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第3张图片

6,virt-copy-out命令,直接复制虚拟机里面的磁盘文件到本地磁盘上,类似于cp命令,分为两种情况如下:

 (1)拷贝虚拟机hadoop1中的磁盘文件到本地目录/tmp/install下(拷贝文件)

[root@KVM ~]# virt-copy-out -d hadoop1 /etc/passwd /tmp/install

 (2)拷贝虚拟机hadoop1中的目录/etc/init.d/到本地/tmp/install/下(拷贝目录)

[root@KVM ~]# virt-copy-out -d hadoop1 /etc/init.d/ /tmp/install

结果如下图:

KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第4张图片7,查看虚拟机所有的磁盘文件。

[root@KVM ~]# virsh domblklist hadoop1
Target     Source
------------------------------------------------
vda        /p_w_picpaths/test/hadoop1.qcow2
vdb        /p_w_picpaths/test/hadoop1_add01.qcow2
hdc        -

KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第5张图片8,直接读取磁盘文件中的内容

[root@KVM ~]# virt-copy-out -a /p_w_picpaths/test/hadoop2.img -a /p_w_picpaths/test/hadoop1_add01.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0 /root/

KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第6张图片9,virt-copy-in命令,直接虚拟化平台上本地磁盘到虚拟机磁盘上,类似于cp (虚拟机必须处于关机状态,开机验证)

[root@KVM install]# virt-copy-in -d hadoop1 /tmp/install/nginx.tar.gz /tmp/
[root@KVM install]# virsh start hadoop1
Domain hadoop1 started

KVM虚拟化笔记(十二)------kvm虚拟机磁盘文件的读取_第7张图片


如果出现报错:错误:root@ubuntu:/usr/bin# virt-copy-in -d yz /tmp/install/jdk-8u51-linux-x64.rpm /root

/usr/bin/virt-copy-in: line 19: exec: guestfish: not found”原因是没有安装guestfish造成的,可以先安装执行此命令yum install guestfish -y 自动安装就可以查看了。