之前有客户需要远程技术支持——Proxmox VE的虚拟服务器,固态硬盘坏了,PVE系统本身以及几台虚拟服务器的系统,全部丢失了,好在数据都在机械硬盘内,客户换了新的固态硬盘,并且重装了PVE,但是不会把原有的数据硬盘挂载回去。
按照客户的要求,用向日葵远程控制了他的电脑,然后又通过他的电脑,连接到PVE,fdisk-ll命令看了一下磁盘分区,发现固态硬盘是正常的PVE分区,应该是安装的时候自动创建的分区表;
而机械硬盘并没有发现分区表,由此判断,这块机械硬盘当时并不是直通硬盘,而是在上面创建了虚拟磁盘,用虚拟服务器存储数据用的。
如果是需要直通一块新的物理硬盘,那可以执行命令:ls /dev/disk/by-id,查看物理硬盘
然后用qm set命令挂载硬盘,示例:qm set 100 --sata1 /dev/disk/by-id/ata-WDC_WD5000AADS-00S9B0_WD-WCAV94178418
如果直通的物理磁盘已经有分区了,也可以用这个命令挂载:qm set 100 --sata1 /dev/sdb
现在的情况是,物理磁盘并没有分区表,但是有之前的PVE创建的虚拟磁盘,那也可以直接挂载给新的虚拟机使用,并且数据不会丢失,命令示例如下:
fdisk -ll,显示所有磁盘信息
qm set 100 --sata1 /dev/xxxxx,如果有多块就sata2、sata3,还不够就ide0、ide1……,但是不要用scsi,系统可能无法直接识别,还要安装驱动,比较麻烦。
客户的要求是找回虚拟磁盘内的数据,所以,到此就完成了任务。
但是,其实还有一种情况,上面还没提到,就是原来的机械硬盘,执行fdisk -ll命令,分区表,但不直接显示虚拟磁盘,那就需要不同的方法来导入虚拟磁盘,找回原来的数据。
如下图所示,原来的固态硬盘坏了,新的120G固态装了PVE,也是自动产生的分区表;原来的2T机械硬盘,显示有一个分区:sda1;
由于情况不明,先直接挂载看一下;
反正机械硬盘始终是要用的,所以编辑FSTAB文件,配置为开机自动挂载;
直接把它挂载到虚拟服务器上,看看有没有数据;其实mount之后,ls命令就能看了,但是客户觉得挂载到虚拟服务器上看比较直观。
挂上去之后,启动虚拟服务器,结果只看到里面有几个raw文件,那就是虚拟磁盘了,要看里面的数据文件,还要进一步操作;关闭虚拟服务器,把这块磁盘删除;采用qm importdisk命令为虚拟服务器导入虚拟磁盘:
然后编辑虚拟机硬件配置,把“未使用的磁盘”确认添加到虚拟服务器;
查看local-lvm,确认虚拟磁盘信息;
最后,虚拟服务器开机,查看虚拟磁盘是否正确导入,数据文件是否能正常访问;
多个虚拟磁盘重复qm importdisk,即可导入同一虚拟服务器,或者导入相应的虚拟服务器,一般不会丢失数据。
值得提醒的是:建议配置PVE集群,以提高数据安全和服务的连贯。
联系客服