twysh 发表于 2025-12-12 09:27

pve如何挂载原系统的硬盘

原来的pve升级崩了之后,重装系统,但是我原来的虚拟机都在安装在nvme硬盘上,挂载nvme硬盘也不行,尝试挂载raw 的虚拟硬盘,也找不到路径,挂载提示错误,请教大家,是哪里出问题了。真心求教,能挂载整个硬盘最好。




rad.io 发表于 2025-12-12 12:05

你可能没有学习过相关的东西所以无法正确使用相关命令,我来简单讲一下吧。

首先mount - mount a filesytem
也就是说mount命令是挂载文件系统,不是所谓挂载磁盘。

从你的lsblk结果来看,nvme已经被正确识别,且其上的LVM卷也正确识别了。
那么你需要做的是使用mount 挂载LVM上面的文件系统,这些文件系统建立在LVM的逻辑卷上,这些LVM卷建立在NVME的不同分区之上。

LINUX中内核使用device mapper为磁盘块设备创建 /dev/dm0, /dev/dm1 .... 这些设备文件, 然后使用id,uuid,partiionid, idskseq 等创建软连接(可以简单理解为快捷方式),所以你能在/dev目录中找到很多此类软连接连接到 /dev/dmX,
如 /dev/mapper, /dev/disk, /dev/pve 都是方便使用而创建的。

废话这么多,到底如何挂载文件系统呢?

首先需要确认LVM一正确加载
使用 pvs -a查看当前的设备,正确加载是应当能够看到类似这样的

PV             VGFmtAttr PSize    PFree
/dev/nvme0n1p2          ---      0   0
/dev/nvme0n1p3 pve lvm2 a--<118.00g    0

然后使用 pvdisplay 查看当前的LVM物理卷.

最重要的是使用 lvdisplay 查看当前的LVM逻辑卷.
--- Logical volume ---
LV Path                /dev/pve/vm-102-disk-1
其中的LV path就是你要挂载的路径

准备好一切,你就可以挂载了,但是,请住手!

新安装proxmox,但之前的vm在另外的盘的情况请使用以下方法,而不是自行挂载和乱搞文件系统。
进入datacenter -> storage -> add lvm 这样在现有的系统中添加以前的LVM卷。

如果重装pve导致虚拟机配置都丢失了,就使用差不多或相同的配置新建虚拟机,然后添加磁盘。
重建完成后不急着开机,找到虚拟机ID, 例如101, 然后修改 /etc/pve/qemu-server/101.conf 这里以101为例。
将相关磁盘路径修改为刚在 datacenter中加入lvm的相关路径,这一步不了解的话很容易弄不对。多想想。

另外proxmox 9中虚拟机 ->hardware -> add 新增了 import hard disk,   如果前面datacenter那里弄对了,
使用导入硬盘,选择原有nvme中的VM磁盘,是最简单的。

最最重要的是,操作之前一定做好备份,无论交代多少次,总有小伙子犯错。

twysh 发表于 2025-12-12 14:49

rad.io 发表于 2025-12-12 12:05
你可能没有学习过相关的东西所以无法正确使用相关命令,我来简单讲一下吧。

首先mount - mount a filesy ...

谢谢,但是没看明白,怎么才能挂载

闲痴 发表于 2025-12-12 15:04

太麻烦了,我之前搞坏了重装是直接默认VM全部丢失,但我有定期备份文件恢复就行了

twysh 发表于 2025-12-12 15:16

闲痴 发表于 2025-12-12 15:04
太麻烦了,我之前搞坏了重装是直接默认VM全部丢失,但我有定期备份文件恢复就行了 ...

有备份,但是时间较早的,里面有写东西丢了,我就尝试把原来的虚拟硬盘直接挂载,恢复原来的系统!

zvcs 发表于 2025-12-12 15:26

原系统是跑在LVM上的,所以会有点麻烦。。。。也就是逻辑磁盘。。。

建议重建。

rad.io 发表于 2025-12-12 17:06

好吧,我现在以你需要从旧的VM中拷贝出来重要文件为需求出发。

那么我们要做的就是正确挂载就的VM的盘。proxmox LVM thin pool中的逻辑卷是raw格式,所以不要尝试直接挂载,无法正确的挂载。

这里我以113号VM为例,找到lvm thin pool中逻辑卷的路径

--- Logical volume ---
LV Path                /dev/pve/vm-113-disk-0
LV Name                vm-113-disk-0
VG Name                pve
LV UUID                txuueu-DJvJ-Y4IO-KYPF-X9SH-ukq2-8iaAP3
LV Write Access      read/write
LV Creation host, time pve1, 2021-11-03 22:48:46 +0800
LV Pool name         data
LV Status            available
# open               0
LV Size                8.00 GiB
Mapped size            70.00%
Current LE             2048
Segments               1
Allocation             inherit
Read ahead sectors   auto
- currently set to   1024
Block device         252:10

查看分区信息
root@pve1:~# fdisk -l /dev/pve/vm-113-disk-0
Disk /dev/pve/vm-113-disk-0: 8 GiB, 8589934592 bytes, 16777216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disklabel type: **
Disk identifier: 4981DF38-8AB4-4FE7-8E85-1AD4310C1B75

Device                     Start      EndSectors Size Type
/dev/pve/vm-113-disk-0p1    2048   4095   2048   1M BIOS boot
/dev/pve/vm-113-disk-0p2    409621012472097152   1G Linux filesystem
/dev/pve/vm-113-disk-0p3 2101248 16777182 14675935   7G Linux filesystem
注意关键信息 sector size 512, partition start position 比如 4096 2101248

在我的例子中,/dev/pve/vm-113-disk-0p2 是ext4 /boot分区,所以直接挂载
先计算 offset = 4095 x 512 = 2097152
mkdir -p /root/113
mount -o loop,offset=2097152 /dev/pve/vm-113-disk-0 /root/113
ls /root/113
就可以看到/boot的内容了。
先卸载 umount /root/113

同样计算下一个分区的offset = 2101248 x 512 = 1075838976
尝试挂载
root@pve1:~# mount -o loop,offset=1075838976 /dev/pve/vm-113-disk-0 /root/113
mount: /root/113: unknown filesystem type 'LVM2_member'.

这样不行的,这个分区是LVM member,那么就需要使用loopback设备了。

首先查看PVE主机中lo设备
root@pve1:~# ls /dev/lo* -dl
lrwxrwxrwx 1 root root      28 Dec 11 09:18 /dev/log -> /run/systemd/journal/dev-log
brw-rw---- 1 root disk7,   0 Dec 11 09:18 /dev/loop0
brw-rw---- 1 root disk7,   1 Dec 11 09:18 /dev/loop1
brw-rw---- 1 root disk7,   2 Dec 11 09:18 /dev/loop2
brw-rw---- 1 root disk7,   3 Dec 11 09:18 /dev/loop3
brw-rw---- 1 root disk7,   4 Dec 11 09:18 /dev/loop4
brw-rw---- 1 root disk7,   5 Dec 11 09:18 /dev/loop5
brw-rw---- 1 root disk7,   6 Dec 11 09:18 /dev/loop6
brw-rw---- 1 root disk7,   7 Dec 11 09:18 /dev/loop7
crw-rw---- 1 root disk 10, 237 Dec 11 09:18 /dev/loop-control

那么我们选择loop15以避免和现有设备冲突
losetup -o 1075838976 /dev/loop15 /dev/pve/vm-113-disk-0
这时候使用pvs -a 可以看到/dev/loop15上的LVM卷被内核发现了。
pvdisplay 可以看到physical volume
root@pve1:~# pvs -a
PV          VG      FmtAttr PSize    PFree
/dev/loop15 ubuntu-vg lvm2 a--    <7.00g   0
/dev/sda2                  ---      0      0
/dev/sda3   pve       lvm2 a--<558.38g 15.99g

lvdisplay可以看到逻辑卷
root@pve1:~# lvdisplay
--- Logical volume ---
LV Path                /dev/ubuntu-vg/ubuntu-lv
LV Name                ubuntu-lv
VG Name                ubuntu-vg
LV UUID                KrZi3v-mH1u-8BQF-WOxk-Ot1I-MrsB-zuff1J
LV Write Access      read/write
LV Creation host, time ubuntu-server, 2021-09-29 12:47:47 +0800
LV Status            available
# open               0
LV Size                <7.00 GiB
Current LE             1791
Segments               1
Allocation             inherit
Read ahead sectors   auto
- currently set to   256
Block device         252:11

轻松mount
root@pve1:~# mount /dev/ubuntu-vg/ubuntu-lv /root/113
root@pve1:~# ls 113
bin   cdrometc   lib    lib64   lost+foundmntprocrun   srv       sysusr
bootdev    homelib32libx32media       optrootsbinswap.imgtmpvar

赶紧复制重要文件,别忘记清理工作。

umount /root/113
losetup -d /dev/loop15

页: [1]
查看完整版本: pve如何挂载原系统的硬盘