共计 3757 个字符,预计需要花费 10 分钟才能阅读完成。
前几天在 VPS 上折腾把 VPS 折腾挂掉了,却没有备份最新的数据,还好 VPS 可以还可以进行快照。下载快照文件后导入到本地 CentOS 中,使用 kpartx 工具可以读取其中的文件然后进行恢复。
下载快照文件后解压,得到 vm-649251.disk 文件。
1)模拟查看映射,通过以下结果可以看到能够读取虚拟磁盘的分区信息
[root@lnmt ~]# kpartx -l ./vm-649251.disk
loop0p1 : 0 614400 /dev/loop0 2048
loop0p2 : 0 20352640 /dev/loop0 616448
loop deleted : /dev/loop0
2)开始映射
[root@lnmt ~]# kpartx -av ./vm-649251.disk
add map loop0p1 (253:3): 0 614400 linear /dev/loop0 2048
add map loop0p2 (253:4): 0 20352640 linear /dev/loop0 616448
这里看到映射了两个 loop0 文件在 /dev/mapper
[root@lnmt ~]# ll /dev/mapper/
总用量 0
lrwxrwxrwx. 1 root root 7 3 月 23 10:11 centos-home -> ../dm-2
lrwxrwxrwx. 1 root root 7 3 月 23 10:11 centos-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 3 月 23 10:11 centos-swap -> ../dm-1
crw——-. 1 root root 10, 236 3 月 23 10:11 control
lrwxrwxrwx. 1 root root 7 3 月 27 08:42 loop0p1 -> ../dm-3
lrwxrwxrwx. 1 root root 7 3 月 27 08:42 loop0p2 -> ../dm-4
我这里是两个 LINUX 分区,如果有使用 LVM 分区的话就需要用 LVM 的方式处理挂载,这里先不详叙了。
3)挂载 LINUX 分区
[root@lnmt ~]# mkdir /mnt/p1
[root@lnmt ~]# mkdir /mnt/p2
[root@lnmt ~]# mount /dev/mapper/loop0p1 /mnt/p1
[root@lnmt ~]# mount /dev/mapper/loop0p2 /mnt/p2
[root@lnmt ~]# ll /mnt/p1
总用量 99790
-rw-r–r–. 1 root root 108103 5 月 11 2016 config-2.6.32-642.el6.x86_64
-rw-r–r–. 1 root root 108228 1 月 27 01:55 config-2.6.32-696.20.1.el6.x86_64
-rw-r–r–. 1 root root 182745 3 月 23 2017 config-4.10.5-1.el6.elrepo.x86_64
-rw-r–r–. 1 root root 189210 1 月 29 12:36 config-4.15.0-1.el6.elrepo.x86_64
drwxr-xr-x. 3 root root 1024 3 月 14 2017 efi
drwxr-xr-x. 2 root root 1024 2 月 3 16:55 grub
-rw——-. 1 root root 18357173 3 月 14 2017 initramfs-2.6.32-642.el6.x86_64.img
-rw——-. 1 root root 18411832 2 月 3 16:54 initramfs-2.6.32-696.20.1.el6.x86_64.img
-rw——-. 1 root root 21695360 3 月 23 2017 initramfs-4.10.5-1.el6.elrepo.x86_64.img
-rw——-. 1 root root 7790394 2 月 3 16:55 initramfs-4.15.0-1.el6.elrepo.x86_64.img
drwx——. 2 root root 12288 3 月 14 2017 lost+found
-rw-r–r–. 1 root root 215559 5 月 11 2016 symvers-2.6.32-642.el6.x86_64.gz
-rw-r–r–. 1 root root 215711 1 月 27 01:55 symvers-2.6.32-696.20.1.el6.x86_64.gz
-rw-r–r–. 1 root root 341832 3 月 23 2017 symvers-4.10.5-1.el6.elrepo.x86_64.gz
-rw-r–r–. 1 root root 358724 1 月 29 12:36 symvers-4.15.0-1.el6.elrepo.x86_64.gz
-rw-r–r–. 1 root root 2615003 5 月 11 2016 System.map-2.6.32-642.el6.x86_64
-rw-r–r–. 1 root root 2627250 1 月 27 01:55 System.map-2.6.32-696.20.1.el6.x86_64
-rw——-. 1 root root 3417542 3 月 23 2017 System.map-4.10.5-1.el6.elrepo.x86_64
-rw——-. 1 root root 3635388 1 月 29 12:36 System.map-4.15.0-1.el6.elrepo.x86_64
-rwxr-xr-x. 1 root root 4264528 5 月 11 2016 vmlinuz-2.6.32-642.el6.x86_64
-rwxr-xr-x. 1 root root 4282608 1 月 27 01:55 vmlinuz-2.6.32-696.20.1.el6.x86_64
-rwxr-xr-x. 1 root root 6249120 3 月 23 2017 vmlinuz-4.10.5-1.el6.elrepo.x86_64
-rwxr-xr-x. 1 root root 6663568 1 月 29 12:36 vmlinuz-4.15.0-1.el6.elrepo.x86_64
[root@lnmt ~]# ll /mnt/p2
总用量 135284
dr-xr-xr-x. 2 root root 4096 2 月 3 16:53 bin
drwxr-xr-x. 2 root root 4096 3 月 14 2017 boot
drwxr-xr-x. 2 root root 4096 3 月 14 2017 dev
drwxr-xr-x. 74 root root 4096 3 月 23 08:15 etc
drwxr-xr-x. 2 root root 4096 9 月 23 2011 home
dr-xr-xr-x. 10 root root 4096 2 月 3 10:33 lib
dr-xr-xr-x. 9 root root 12288 2 月 3 16:53 lib64
drwx——. 2 root root 16384 3 月 14 2017 lost+found
drwxr-xr-x. 2 root root 4096 9 月 23 2011 media
drwxr-xr-x. 2 root root 4096 9 月 23 2011 mnt
-rw-r–r–. 1 root root 0 3 月 14 2017 null
drwxr-xr-x. 3 root root 4096 2 月 3 15:00 opt
drwxr-xr-x. 2 root root 4096 2 月 3 10:29 patch
drwxr-xr-x. 2 root root 4096 3 月 14 2017 proc
dr-xr-x—. 7 root root 4096 3 月 1 17:31 root
dr-xr-xr-x. 2 root root 12288 2 月 3 16:53 sbin
drwxr-xr-x. 2 root root 4096 3 月 14 2017 selinux
drwxr-xr-x. 2 root root 4096 9 月 23 2011 srv
-rw——-. 1 root root 138412032 2 月 3 10:17 swap
drwxr-xr-x. 2 root root 4096 3 月 14 2017 sys
drwxrwxrwt. 3 root root 4096 3 月 23 08:15 tmp
drwxr-xr-x. 13 root root 4096 3 月 14 2017 usr
drwxr-xr-x. 18 root root 4096 2 月 3 10:23 var
drwxr-xr-x. 7 root root 4096 2 月 3 10:45 www
这里我们可以看到 /mnt/p1 是虚拟机 /boot 分区的内容,/mnt/p2 是数据分区的内容,接下来我们就可以将我们需要的数据拷贝出来后进行数据恢复操作。