运维常常会碰到某某库(例如libc库)被更换导致系统崩溃的问题,在物理机操作的时候比较好办,只需要进入救援模式或者启动u盘上的linux系统即可以把被更换的文件替换回来。但在kvm等虚拟机上如果某个库文件被替换了,导致虚拟机系统出问题的时候,就无法使用救援模式去把被更换的文件替换回来了,此时需要在物理机挂载虚拟机镜像文件,然后进行修改。
修改文件的操作步骤如下(参考:http://www.jb51.net/LINUXjishu/390511.html):
1: 把虚拟镜像文件mapper成loop伪设备
kpartx -av xxx.img
会有如下输出:
add map loop0p1 (253:0): 0 409600 linear /dev/loop0 2048
add map loop0p2 (253:1): 0 83886080 linear /dev/loop0 411648
add map loop0p3 (253:2): 0 2097152 linear /dev/loop0 84297728
add map loop0p4 (253:3): 0 2 linear /dev/loop0 86394880
add map loop0p5 (253:4): 0 123318272 linear /dev/loop0 86396928
2: 挂载loop伪设备,然后修改里面的文件。(要改动哪个分区的就mount哪个分区的)
例如:mount /dev/mapper/loop0p1 /mnt/p1
改动完成后,需要还原成虚拟镜像,操作步骤如下:
1: umount伪设备
umount /mnt/p1
2: 然后还原镜像文件
kpartx -d xxx.img
最后附上本人的网络课堂地址,如有兴趣请点击: 实践哥