xen挂载虚拟机分区删除日志 破解密码无所不能

用 virt-manager, virsh 或其他工具可以选择把 KVM 或 Xen HVM 的虚拟机安装在一个镜像文件上,虽然因为性能的关系这种方式不太推荐在生产环境使用(不需要停机但会影响性能),但是因为用起来非常简便,比较适合排除系统告警,


首先用 losetup 工具把 root.raw 文件和 loop 设备映射起来,-f 参数用来找出下一个可用的 loop 设备:

# losetup -f

/dev/loop11

# losetup /dev/loop11 root.raw 

一个镜像文件里可能包含多个分区,所以不能简单 mount -o loop root.raw 我们需要把 root.raw  里面包含的每个分区映射出来后在一个一个挂载,所以需要一个工具来读分区表,

kpartx 就是这样一个在特定设备上读取分区表并为每个分区创建映射的工具,-a 参数表示加入分区映射;-v 参数表示完成后输出结果:


VMA8C164 # kpartx -av /dev/loop11

add map loop11p1 (253:10): 0 8401932 linear /dev/loop11 63

add map loop11p2 (253:11): 0 4192965 linear /dev/loop11 8401995

add map loop11p3 (253:12): 0 20948760 linear /dev/loop11 12594960

上面 loop11p1, loop11p2, loop11p3 分别映射到镜像文件里的3个分区里,可以通过 fdisk 来查看:


VMA8C164 # fdisk -l /dev/loop11

Disk /dev/loop11: 17.2 GB, 17179869184 bytes

255 heads, 63 sectors/track, 2088 cylinders, total 33554432 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0005b1e6

 Device Boot      Start         End      Blocks   Id  System

/dev/loop11p1              63     8401994     4200966   82  Linux swap / Solaris

/dev/loop11p2         8401995    12594959     2096482+  83  Linux

/dev/loop11p3   *    12594960    33543719    10474380   83  Linux

有了上面的映射以后就可以挂载 root.ram里的普通逻辑分区了,我们这里只挂载 /var 分区 /var分区在 /dev/loop11p2,挂载成功后用 ls 查看一下是否正确:

# ls -l /dev/mapper/

total 0

crw-rw---- 1 root root 10, 236 Jul 12 18:47 control

lrwxrwxrwx 1 root root       8 Aug  6 17:06 loop11p1 -> ../dm-10

lrwxrwxrwx 1 root root       8 Aug  6 17:06 loop11p2 -> ../dm-11

lrwxrwxrwx 1 root root       8 Aug  6 17:06 loop11p3 -> ../dm-12


# mount /dev/mapper/loop11p2 /mnt


清空/var 目录下tsar.data日志文件

bj-xen-xx3:/mnt/log # df -h | grep mnt

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/loop4p2   2.0G  1.6G  359M  82% /mnt


bj-xen-xx3:/mnt/log # rm tsar.data 

rm: cannot remove `tsar.data': Operation not permitted


bj-xen-xx3:/mnt/log # chattr -a tsar.data 


bj-xen-xx3:/mnt/log # echo >tsar.data 


使用完后,需要按顺序干净卸载:


# umount /mnt

bj-xen-hispace3:~ # losetup -a 

/dev/loop11: [0806]:3463787 (/opt/xxx/xen/p_w_picpaths/VM0B0521/root.raw)



# kpartx -dv /dev/loop11

del devmap : loop11p1

del devmap : loop11p2

del devmap : loop11p3


# losetup -d /dev/loop11


拉起虚拟机


bj-xen-xx3:/etc/xen/auto # xm cre VM0B0521 

Using config file "./VM0B0521".

Started domain VM0B0521 (id=26)