kvm虚拟机磁盘文件读取小结

摘要:
kvm虚拟机的磁盘安装并不容易。默认情况下,xen虚拟化使用可以直接装载的原始磁盘。如果使用raw,也可以直接安装kvm,这与xen磁盘的安装方法一致。通过创建kvm环境创建kvm虚拟机配置文件。装载虚拟磁盘以启动虚拟机。此内容可参考kvm虚拟化学习笔记(7)中的kvm虚拟机克隆。直接通过libguestfs工具修改和读取qcow2虚拟磁盘文件。本文主要测试用于测试的libguestfs工具#通过直接读取磁盘文件的内容来查看虚拟机的所有磁盘文件。

kvm虚拟机磁盘挂载还真不是一帆风顺的。xen虚拟化默认就raw格式的磁盘,可以直接挂载,kvm如果采用raw也可以直接挂载,与xen磁盘挂载方式一致。

本文出自:http://koumm.blog.51cto.com

1.kvm虚拟化相比xen虚拟化来说,工具与方法众多,本文列举思路如下:

(1)raw格式的磁盘可以直接挂载,可以将qcow2磁盘转换成raw格式并挂载

转换示例:qemu-imgconvert-fraw-Oqcow2/data/raw.img/data/qcow2.img

raw格式磁盘挂载内容可以参考xen虚拟化实战系列(十一)之xen虚拟机磁盘文件挂载

(2)通过编译安装qemu-nbd工具挂载qcows格式的磁盘

qemu-nbd工具默认没有安装,需要编译安装,该内容待测试,如确实需要也可以参考思路1去解决。
(3)通过创建KVM环境创建kvm虚拟机配置文件挂载虚拟磁盘启动虚拟机

该内容可以参考kvm虚拟化学习笔记(七)之kvm虚拟机克隆

(4)通过libguestfs-tools工具直接修改与读取qcow2虚拟磁盘文件

本文主要测试libguestfs-tools工具来进行测试。

2.libguestfs-tools工具的使用示例

(1)确认libguestfs-tools工具的安装,没有安装可以yum进行安装。

安装完成后,会安装很多virt-开头的命令,下面将大概介绍使用这些命令。

[root@node1 ~]# vir
virsh                  virt-df                virt-inspector2        virt-p2v-server        virt-tar-in
virt-alignment-scan    virt-edit              virt-install           virt-pki-validate      virt-tar-out
virt-cat               virt-filesystems       virt-list-filesystems  virt-rescue            virt-v2v
virt-clone             virt-format            virt-list-partitions   virt-resize            virt-viewer
virt-convert           virt-host-validate     virt-ls                virt-sparsify          virt-what
virt-copy-in           virt-image             virt-make-fs           virt-sysprep           virt-win-reg
virt-copy-out          virt-inspector         virt-manager           virt-tar               virt-xml-validate
 

(2)命令使用参数格式

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

通常两种方式:-d是采用域名称方式,-a是直接获取的磁盘文件方式。

3.virt-cat命令

直接查看虚拟机里面的/etc/passwd文件,类似于cat命令。

[root@node1 ~]# virt-cat -d oeltest01 /etc/passwd
 

185139521.jpg

4.virt-edit命令

直接编辑虚拟机里面的文件,类似于vi命令。

注:虚拟机必须处于关机状态,否则会出现如下提示:

libguestfs: error: error: domain is a live virtual machine.
Writing to the disks of a running virtual machine can cause disk corruption.
Either use read-only access, or if the guest is running the guestfsd daemon
specify live access.  In most libguestfs tools these options are --ro or
--live respectively.  Consult the documentation for further information.
 

185204453.jpg

[root@node1 ~]# virt-edit -d oeltest01 /etc/rc.local
 

可以通过vi命令进行编辑。

185227469.jpg

5.virt-df命令

直接查看虚拟机里面的磁盘使用情况,类似于df-h命令。

[root@node1 ~]# virt-df  -h oeltest01
 

185354721.jpg

virt-filesystems命令也与上面内容类似

[root@node1 ~]# virt-filesystems -d oeltest01
/dev/sda1
/dev/vg/root
 

6.virt-copy-out命令

直接复制虚拟机里面的磁盘文件到本地磁盘上,类似于cp命令。

(1)拷贝oeltest01虚拟机中的passwd文件到本地/root目录下

[root@node1 ~]# virt-copy-out -d oeltest01 /etc/passwd /root/
 

(2)拷贝oeltest01虚拟机中的/etc/到本地/root目录下

[root@node1 ~]# virt-copy-out -d oeltest01 /etc /root/
 

185413515.jpg

该命令很有用,也可以直接指定虚拟机磁盘文件进行命令。

#查看虚拟机所有磁盘文件

185431858.jpg

通过直接读取磁盘文件中的内容。

[root@node1 ~]# virt-copy-out -a /data/test01.qcow2 -a /data/test01_add01.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0 /root/
 

185451922.jpg

7.virt-copy-in命令

直接复制虚拟化平台上本地磁盘文件到虚拟机磁盘上,类似于cp命令。

拷贝本地/root/etc.tar.gz文件到虚拟机/root目录下

[root@node1 ~]# virt-copy-in -d oeltest01 /root/etc.tar.gz /root/
 

注:虚拟化必须处于关机状态,可以开机验证。

[root@node1 ~]# virsh start oeltest01
域 oeltest01 已开始
[root@node1 ~]#
[root@node1 ~]#
[root@node1 ~]# virsh console oeltest01
连接到域 oeltest01
Escape character is ^]
Oracle Linux Server release 5.8
Kernel 2.6.18-308.el5 on an x86_64
test01 login: root
Password:
Last login: Wed Sep 11 05:21:11 on ttyS0
[root@test01 ~]# ll
total 10828
-rw------- 1 root root     1225 Sep 11 03:54 anaconda-ks.cfg
drwxr-xr-x 2 root root     4096 Sep 11 04:17 Desktop
-rw-r--r-- 1 root root 11006264 Sep 16  2013 etc.tar.gz
-rw-r--r-- 1 root root    36587 Sep 11 03:54 install.log
-rw-r--r-- 1 root root     3828 Sep 11 03:53 install.log.syslog
[root@test01 ~]#
[root@test01 ~]#
 

文读取虚拟机磁盘文件的内容到此,还有很多命令的命令,可以进行测试。

免责声明:文章转载自《kvm虚拟机磁盘文件读取小结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android pm 命令详解为Sublime Text 3设置优雅的字体下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac上安装MySQL后在终端连接不上数据库Command not found

Mac上安装好MySQL要想在终端输入mysql命令,但是报Command not found,解决办法 打开终端输入如下命令:  /usr/local/mysql/bin/mysql -u root -p 其中root为用户名。这时会出现如下命令:Enter password:  123456 用文本编辑器打开.bash_profile,加入PATH=$...

Linux命令学习笔记2

<1>ps -eaf: 1 ps -eaf |grep tomcat |grep -v grep >/dev/null 2>&1 分为4段 1、ps -eaf 查看当前进程,-e 显示所有进程,a显示终端上的所有进程,包括其他用户的进程,f 全格式。 2、显示的结果通过管道“|”传给第二段 grep tomcat,查找tom...

实验第三期:Vmware NSX for Vsphere(尝鲜)

 实验拓扑图及规划:1.nsx-manager部署2.controller部署3.主机vib模块安装4.VXLAN网络参数配置5.分段Segment ID池配置6.传输区域配置7.逻辑交换机配置8.分布式逻辑路由器配置9.Edge服务网关配置10.路由配置及重发布 《1》Logic Router 《2》Border 《3》VSR 200011.虚拟机加入N...

Linux基础(15)多线程编程

Linux的内核中没有thread的概念,线程是第三方库libpthread实现的, 和vfork(轻量级进程,只有部分copy)有点像(进程的创建fork会完全copy主进程资源 ,而线程会共享资源,子线程创建新资源时其作用域只在当前子线程,而子线程非新新创建的资源会和创建前的主线程共享这些资源) , 线程和进程的创建在内核里都是系统调用copy_proc...

Linux清理磁盘空间

1、首先确定是否是磁盘满了 命令:   df -h 参数说明: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以KB的容量显示各文件系统 -m:以MB的容量显示各文件系统 -h:以人们较易阅读的GB,MB,KB等格式自行显示 -H:以M=1000K替代M=1024K的进位方式 -T:连同该分区的文件系统名称(例如ext3)也列出 -i...

基于linux的集群系统(一)

目录 基于Linux的集群系统(一)基于Linux的集群系统(二)基于Linux的集群系统(三)基于Linux的集群系统(四)基于Linux的集群系统(五)基于Linux的集群系统(六)基于Linux的集群系统(七)基于Linux的集群系统(八)基于Linux的集群系统(九) 本文是《基于LINUX的集群系统》系列文章的第一篇。作者就集群系统这一概念进行了...