Ubuntu16.04宿主机VirtualBox中Win10虚拟机误删文件恢复及磁盘识别求助
解决VirtualBox虚拟机Live CD无法识别Windows磁盘的问题
嘿,我懂你现在的着急——误删了Win10虚拟机里的文件,想用Ubuntu Live CD启动虚拟机来恢复,结果fdisk只显示/dev/loop,根本找不到目标磁盘。别慌,咱们一步步来排查解决:
1. 先确认VirtualBox的虚拟机存储设置
先回到宿主机的VirtualBox管理界面,找到你的Win10虚拟机,进入「设置」→「存储」:
- 检查原来的Windows虚拟磁盘(通常是
.vdi/.vmdk格式)是否还挂载在虚拟机的SATA/SCSI控制器上,并且状态是「已启用」 - 确保控制器类型(比如SATA)没有被误改成「不使用」,如果是IDE控制器,也确认设备是正常挂载的
有时候虚拟机重启或者设置变动后,磁盘可能被意外禁用,这时候Live CD启动自然看不到。
2. Live CD启动后用更全面的命令排查磁盘
fdisk -l有时候对GPT分区或者某些磁盘类型支持有限,试试用以下命令来查看系统能识别的磁盘:
lsblk
这个命令会列出所有块设备,包括硬盘、U盘、虚拟磁盘等。如果你的Windows虚拟磁盘被识别了,应该会看到类似/dev/sda的设备,后面跟着它的分区(比如/dev/sda1是EFI分区,/dev/sda2是Windows系统分区)。
或者用blkid命令查看已识别的磁盘UUID和文件系统:
blkid
3. 手动加载磁盘驱动模块
如果lsblk也看不到磁盘,可能是Live CD的内核没有加载对应磁盘控制器的驱动。比如虚拟机用了SATA AHCI控制器,试试加载ahci模块:
sudo modprobe ahci
加载完成后再运行lsblk看看是否能识别到磁盘。
4. 换个思路:直接在宿主机上挂载虚拟磁盘恢复
如果上面的方法都不行,其实你可以不用启动虚拟机,直接在Ubuntu宿主机上挂载Win10的虚拟磁盘,这样操作更方便:
- 确保虚拟机已经完全关闭(不能是休眠或暂停状态)
- 安装qemu-nbd工具:
sudo apt-get install qemu-utils
- 加载nbd模块:
sudo modprobe nbd max_part=8
- 挂载虚拟磁盘(假设你的虚拟磁盘路径是
~/VirtualBox VMs/Win10/Win10.vdi):
sudo qemu-nbd -c /dev/nbd0 "~/VirtualBox VMs/Win10/Win10.vdi"
- 现在你可以用
lsblk /dev/nbd0看到磁盘的分区,然后挂载Windows的NTFS分区(比如/dev/nbd0p2):
sudo mkdir /mnt/win10 sudo mount -t ntfs-3g /dev/nbd0p2 /mnt/win10
- 挂载完成后,你就可以用数据恢复工具(比如
testdisk或者photorec)在/mnt/win10目录下恢复误删的文件了。 - 恢复完成后,记得卸载磁盘并断开nbd设备:
sudo umount /mnt/win10 sudo qemu-nbd -d /dev/nbd0
重要提醒
不管用哪种方法,绝对不要在目标磁盘上写入任何数据,避免覆盖误删的文件,降低恢复成功率。如果你的Windows分区启用了BitLocker加密,需要先在挂载前解锁分区,不然无法访问内容。
内容的提问来源于stack exchange,提问作者enigmo




