在Linux上挂载LVM分区 & LVM VG name重复的问题解决
前言
最近重装pve系统,把系统盘从32G的硬盘换成了120GB的硬盘。
因为旧的pve系统盘上还有一个虚拟机备份,所以准备直接把旧pve系统盘
插到新pve主机
上,然后挂载旧硬盘上的分区把备份文件复制到新硬盘的分区上。
但实际操作中碰到了两个问题:
- pve系统盘是lvm分区而不是传统分区,无法直接挂载
- 新旧两个pve系统盘下的lvm volume group的名字都叫做
pve
,出现了volume group重名的问题
在网上找了一些资料和文章,最后当然成功解决的问题,顺便在此做个简单记录。
- tips: volume group以下都简称vg
准备工作
把旧的系统盘插到pve主机上之后,先通过lsblk查看硬盘信息
# 输入命令
root@pve:~# lsblk
# 显示硬盘信息
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
## sda是现在的系统盘
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 1G 0 part
└─sda3 8:3 0 118.2G 0 part
├─pve-swap 252:0 0 7.6G 0 lvm [SWAP]
└─pve-root 252:1 0 110.6G 0 lvm /
# 这是老的pve系统盘,有三个分区
sdd 8:48 0 29.8G 0 disk
├─sdd1 8:49 0 1007K 0 part
├─sdd2 8:50 0 512M 0 part
└─sdd3 8:51 0 29.3G 0 part
如果是传统分区模式,只需要挂载/dev/sdd3
就行了,但如果直接挂载/dev/sdd3
分区,系统提示错误信息:无法识别lvm分区。
root@pve:/mnt# mount /dev/sdd3 /mnt/tmp/
mount: /mnt/tmp: unknown filesystem type 'LVM2_member'.
dmesg(1) may have more information after failed mount system call.
lvm分区模式正确挂载语法路径应该是/dev/volume_group_name/logic_volume_name
,所以接下去就是要搞清楚lvm分区的volume group name
和logic volume name
。
挂载lvm
第一步:查看volume group的名字
输入命令pvs
查看
root@pve:~# pvs
WARNING: VG name pve is used by VGs F3g8rh-HTJn-2Hay-qo4x-uQel-iyq2-sg7PuW and fXyl8f-Xs3x-TLPv-aAeM-H2jU-0KdF-jbMPZH.
Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
PV VG Fmt Attr PSize PFree
/dev/sda3 pve lvm2 a-- <118.24g 0
/dev/sdd3 pve lvm2 a-- 29.31g 0
其中VG
一栏对应的就是volume group名字
。
- 注意:
- 这里会有一个衍生问题,
新旧两个pve系统盘中的volume group的名称都叫做pve
。 - 系统提示两个vg重名,并显示两个uuid,要求你对vg进行重命名以做区分。
- 但是两个vg和两个uuid并没有一一对应,无法判断uuid和vg的对应关系。
第二步:查看volume group对应的uuid
这里需要用到命令vgdisplay
第三步:重命名volume group
搞清楚uuid和vg的对应关系以后,就可以对vg进行重名了,语法如下:
vgrename <uuid> <new vg name>
重命名成功以后,再用pvs
查看当前系统中volume group的信息,可以看到旧的pve系统中vg已经被改为pve_old
。
root@pve:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 pve lvm2 a-- <118.24g 0
/dev/sdd3 pve_old lvm2 a-- 29.31g 0
第四步:查看volume group中的逻辑卷并完成挂载
这一步需要用到命令lvdisplay
,语法如下:
lvdisplay <vg name>
可以看到在pve_old
这个vg下,存在两个逻辑分区(logic volume),一个名字是swap,另一个名字是root。
我们需要的是root分区,复制它的LV Path
,也就是/dev/pve_old/root
,这就是它的挂载路径了。
mount /dev/pve_old/root /mnt/tmp
可以看到已经成功挂载了lvm分区。
- 注意事项:
- vg在重命名之后,有可能
LV Status
的状态是unavaliable
,这时候无法通过mount
命令挂载 - 如果碰上
unavaliable
问题,可以试着重新插拔旧pve系统盘
,也就是pve_old
,确认LV status avaliable
以后再挂载
🎉