kvm虚拟化学习笔记(十三)之kvm虚拟机磁盘文件读取小结

简介:

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


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

(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工具来进行测试。

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

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

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

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

(2)命令使用参数格式

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

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


3.virt-cat命令

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

1
[root@node1 ~] # virt-cat -d CentOS6.5-01 /etc/passwd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node1 ~] # virt-cat -d CentOS6.5-01 /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
dbus:x:81:81:System message bus:/: /sbin/nologin
vcsa:x:69:69:virtual console memory owner: /dev : /sbin/nologin
abrt:x:173:173:: /etc/abrt : /sbin/nologin
haldaemon:x:68:68:HAL daemon:/: /sbin/nologin
ntp:x:38:38:: /etc/ntp : /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
tcpdump:x:72:72::/: /sbin/nologin
[root@node1 ~] #

4.virt-edit命令

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

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

1
2
3
4
5
6
7
[root@node1 ~] # virt-edit -d CentOS6.5-01 /etc/passwd
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.
[root@node1 ~] #
1
2
3
4
5
6
7
8
9
10
11
12
[root@node1 ~] # virsh shutdown CentOS6.5-01
Domain CentOS6.5-01 is being  shutdown
 
[root@node1 ~] # virsh list --all                     
  Id    Name                           State
----------------------------------------------------
  -     CentOS6.5-01                   shut off
  -     CentOS6.5-02                   shut off
  -     CentOS6.5-03                   shut off
  -     Ser08R2-01                     shut off
 
[root@node1 ~] #

可以通过vi命令进行编辑

1
2
3
4
5
6
7
8
[root@node1 ~] # virt-edit -d CentOS6.5-01 /etc/rc.local 
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
 
touch  /var/lock/subsys/local

5.virt-df命令

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

1
2
3
4
[root@node1 ~] # virt-df -d CentOS6.5-01     
Filesystem                           1K-blocks       Used  Available  Use%
CentOS6.5-01: /dev/sda1                   198337      29676     158421   15%
CentOS6.5-01: /dev/sda3                  6506012    1640484    4535032   26%

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

1
2
3
4
[root@node1 ~] # virt-filesystems -d CentOS6.5-01
/dev/sda1
/dev/sda3
[root@node1 ~] #

6.virt-copy-out命令

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

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

1
[root@node1 ~] # virt-copy-out -d CentOS6.5-01 /etc/passwd /tmp/

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

1
virt-copy-out -d CentOS6.5-01  /etc/  /tmp/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@node1 ~] # virt-copy-out -d CentOS6.5-01 /etc/passwd /tmp/
[root@node1 ~] # virt-copy-out -d CentOS6.5-01 /etc/ /tmp/      
[root@node1 ~]
[root@node1 ~] # cd /tmp/
[root@node1 tmp] # ll
total 28
drwxr-xr-x  83 root root 4096 Nov 27 15:17 etc
drwx------   2 root root 4096 Nov 17 07:07 keyring-hjLN4X
drwx------   2 gdm  gdm  4096 Nov 17 07:07 orbit-gdm
drwx------   2 root root 4096 Nov 22 10:23 orbit-root
-rw-r--r--   1 root root 1058 Nov 27 15:22  passwd
drwx------.  2 root root 4096 Nov 17 07:07 pulse-bs1gSqqVvuLW
drwx------.  2 gdm  gdm  4096 Nov 17 07:07 pulse-GJoMl8o2kO0h
[root@node1 tmp] #

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

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

1
2
3
4
5
6
7
8
[root@node1 ~] # virsh domblklist CentOS6.5-01
Target     Source
------------------------------------------------
vda         /data/kvm/CentOS6 .5-01.qcow2
vdb         /data/kvm/CentOS6 .5-01_add.qcow2
hdc        -
 
[root@node1 ~] #

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

1
[root@node1 ~] # virt-copy-out -a /data/kvm/CentOS6.5-01.qcow2 -a /data/kvm/CentOS6.5-01_add.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@node1 ~] # virt-copy-out -a /data/kvm/CentOS6.5-01.qcow2 -a /data/kvm/CentOS6.5-01_add.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ 
[root@node1 ~] # cd /tmp/
[root@node1 tmp] # ls
etc         keyring-hjLN4X  orbit-root  pulse-bs1gSqqVvuLW
ifcfg-eth0  orbit-gdm        passwd       pulse-GJoMl8o2kO0h
[root@node1 tmp] # cat ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
UUID=77733023-71ab-41bf-9cfb-2a2a5510857a
ONBOOT= yes
NM_CONTROLLED= yes
BOOTPROTO=none
HWADDR=52:54:00:56:9A:7F
IPADDR=10.10.172.241
PREFIX=24
GATEWAY=10.10.172.1
DNS1=192.168.172.208
DNS2=192.168.172.209
DEFROUTE= yes
IPV4_FAILURE_FATAL= yes
IPV6INIT=no
NAME= "System eth0"
[root@node1 tmp] #

7.virt-copy-in命令

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

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

1
[root@node1 ~] # virt-copy-in -d CentOS6.5-01 /root/node1.txt /tmp/

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@node1 ~] # virt-copy-in -d CentOS6.5-01 /root/node1.txt /tmp/
[root@node1 ~] # virsh start CentOS6.5-01
Domain CentOS6.5-01 started
 
[root@node1 ~] # virsh console CentOS6.5-01
Connected to domain CentOS6.5-01
Escape character is ^]
 
CentOS release 6.5 (Final)
Kernel 2.6.32-431.el6.x86_64 on an x86_64
 
CentOS6.5-01 login: root
Password: 
Last login: Wed Nov 22 17:34:28 from 192.168.21.128
[root@CentOS6 ~] # ll /tmp/
total 0
-rw-r--r--. 1 root root 0 Nov 27 15:30 node1.txt
[root@CentOS6 ~]
[root@CentOS6 ~] #

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



本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/2044725,如需转载请自行联系原作者

相关文章
|
22天前
|
安全 Linux KVM
Linux虚拟化技术:从Xen到KVM
Xen和KVM是Linux平台上两种主要的虚拟化技术,各有优缺点和适用场景。通过对比两者的架构、性能、安全性、管理复杂性和硬件依赖性,可以更好地理解它们的适用场景和选择依据。无论是高性能计算、企业虚拟化还是云计算平台,合理选择和配置虚拟化技术是实现高效、稳定和安全IT环境的关键。
80 8
|
21天前
|
存储 数据挖掘 数据库
虚拟化数据恢复—VMFS简介&误删除虚拟机的数据恢复案例
物理区:物理上连续的磁盘空间,即通常意义上的分区。 本地区:VMFS管理的物理区分为保留区和本地区,前面一部分是保留区,后面部分是本地区。本地区又分为元文件区和数据区。 元文件:与NTFS的元文件类似,属于FS的管理用数据。VMFS有6个元文件:.VH.SF/.FBB.SF/.FDC.SF/.SBC.SF/.PBC.SF/.PB2.SF。 元文件区:6个元文件占用的所有空间,在本地区的前面部分。 数据区:用于存放文件数据。 datastore:在ESX服务器上看到的VMFS存储空间。 LV:logical volume,所指的范围其实和本地区一样,即虚拟化卷。 LVM逻辑卷组:用来管理跨dis
|
2月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
121 50
|
2月前
|
存储 持续交付 虚拟化
|
3月前
|
存储 运维 虚拟化
虚拟化数据恢复——Hyper-V虚拟化故障导致虚拟机文件丢失的数据恢复案例
在Windows Server上部署的Hyper-V虚拟化环境中,因存储中虚拟机数据文件丢失导致服务瘫痪。北亚企安数据恢复工程师通过物理检测、操作系统及文件系统检测,确定为人为格式化造成,并通过镜像硬盘、重组RAID、分析并恢复文件索引项等步骤,成功恢复数据,最终在新Hyper-V环境中验证并迁移所有虚拟机,确保用户业务恢复正常运行。
|
3月前
|
存储 Linux 调度
KVM 虚拟化的功能特性
【10月更文挑战第13天】虚拟化技术创建实体资源的虚拟版本,提升资源利用率。KVM(Kernel-based Virtual Machine)作为全虚拟化解决方案,借助Linux内核实现Hypervisor功能,通过模块化方式提供高效的虚拟化环境。
|
3月前
|
安全 KVM 虚拟化
OpenEuler 中配置 KVM 虚拟化环境指南
本文档详细介绍了如何在OpenEuler系统中配置和管理KVM虚拟化环境,包括环境准备、组件安装、虚拟机安装及管理命令等,适合初学者和有经验的用户。内容覆盖了从桥接网卡配置到虚拟机的安装与管理,以及常见问题的解决方法,帮助用户高效利用虚拟化技术。
230 0
|
4月前
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
|
2月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
1402 3
|
3月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
95 4

热门文章

最新文章