扫描并激活 LVM 卷组

  1. # 扫描所有 LVM 物理卷、卷组、逻辑卷
  2. pvscan
  3. vgscan
  4. lvscan
  5. # 激活所有卷组(如果未激活)
  6. vgchange -ay

测试用:通过命令 mount 临时挂载

创建挂载点

  1. mkdir -p /mp4mkv

临时挂载逻辑卷

  1. mount /dev/你的卷组名/你的逻辑卷名 /mp4mkv
  2. # 示例:
  3. mount /dev/ubuntu-vg/mp4mkv-lv /mp4mkv
  4. # 验证挂载:
  5. ls /mp4mkv
  6. df -h

执行vgchange -ay 后 没有输出,则

这意味着:你的 /dev/sdb1 虽然标记为 LVM2_member,但系统里没有找到对应的卷组(VG),所以无法直接挂载。

两种持久化方案(重启后自动挂载)

方案A:通过 /etc/fstab 永久挂载(推荐)

  1. 先确认当前挂载成功:
    1. mount /dev/sdb1 /mp4mkv
    2. df -h # 确认挂载点存在
    3. # 如果报错,就用这个命令(兼容 LVM 底层 ext4/xfs):
    4. mount -t ext4 /dev/sdb1 /mp4mkv
    5. ls /mp4mkv
    6. df -h
    7. # 如果以上报错,用这个修复 LVM(安全无风险):
    8. pvscan
    9. # 以上输出为空,则:清除缓存:pvscan --cache
    10. vgscan

    如果 vgs和vgscan 都输出为空

    这是一个非常典型的 LVM “孤儿卷组” 现象。虽然 pvscan 显示硬盘 /dev/sdb1 被识别了,且显示 in no VG: 1(在没有卷组中),但 vgsvgscan 却输出为空。

这通常是因为卷组被标记为了“孤儿(Orphan)”状态,或者 LVM 的元数据缓存出现了错乱,导致系统知道有硬盘,但不知道怎么把硬盘和卷组联系起来。

请尝试以下两个解决方案,通常能解决问题:

方案一:强制导出并重新导入卷组(最推荐)

这个方法相当于强制让 LVM 忘记这块盘,然后再重新“扫描”并识别它。

  1. 导出当前的卷组信息(这会清空 LVM 对这块盘的缓存):

    1. vgreduce --removemissing --force /dev/sdb1

    注意:如果上面命令报错,直接看下面的第二步。

  2. 强制重新扫描卷组

    1. vgscan --mknodes
  3. 再次查看

    1. vgs

    现在你应该能看到卷组了。


方案二:直接激活设备节点(最直接)

如果方案一不行,我们可以尝试直接让系统去 /dev/sdb1 里面读取元数据并生成设备节点。

  1. vgchange -ay --sysinit

或者使用这个更底层的命令,强制从物理卷重建卷组信息:

  1. vgimport /dev/sdb1

方案三:检查是否为“快照”或“只读”状态

如果上面两个都不行,可能是这块盘被识别为了只读状态。

  1. 查看物理卷的详细状态:

    1. pvs -o +vg_uuid,pe_start,vg_name,vg_attr /dev/sdb1
    • VG Attr 列。
    • 如果显示 r(read-only),说明硬盘是只读的。
    • 如果显示 -,说明是正常的。
  2. 如果是只读,尝试强制读写(谨慎操作):

    1. vgchange -ay -r rw /dev/sdb1

💡 最后的杀手锏(如果以上都不行)

这说明卷组名可能很奇怪,或者元数据损坏了。你可以尝试直接挂载“逻辑卷”的底层路径,跳过卷组名。

  1. 查看 /dev/mapper/ 目录:
    1. ls -l /dev/mapper/
  2. 看看有没有类似 lvm2-pv-uuid-xxxx 或者 卷组名-逻辑卷名 的文件。
  3. 如果有,直接挂载它:
    1. sudo mount /dev/mapper/xxxx /mp4mkv
  1. vgchange -a y --partial
  2. # 查看真正的逻辑卷路径(看输出)
  3. lvdisplay
  4. # 如果执行“lvdisplay” 输出为空,则 这个盘曾经是 LVM,但现在卷组(VG)信息丢失或损坏了,系统找不到对应的逻辑卷。
  5. # 格式化硬盘
  6. mkfs.ext4 /dev/sdb1
  7. # 再挂载:
  8. mount /dev/sdb1 /mp4mkv
  1. 获取 /dev/sdb1 的 UUID:

    1. blkid /dev/sdb1

    ubuntu挂载硬盘 - 图1

    输出是:

    1. /dev/sdb1: UUID="tgvHQc-paKd-JBnm-MuRC-rdbF-qa7w-yPJqFT" TYPE="LVM2_member" PARTUUID="0005bb61-01"

    这里的 UUID 就是我们要用到的。

  2. 编辑 /etc/fstab 文件:

    1. vi /etc/fstab

    ubuntu挂载硬盘 - 图2

    在文件末尾添加一行(根据实际文件系统替换 ext4):

    1. /dev/disk/by-uuid/tgvHQc-paKd-JBnm-MuRC-rdbF-qa7w-yPJqFT /mp4mkv ext4 defaults 0 2
    2. # 以下这个方法不知道可行不
    3. # UUID=tgvHQc-paKd-JBnm-MuRC-rdbF-qa7w-yPJqFT /mp4mkv ext4 defaults 0 2
    • 如果是 xfs,把 ext4 换成 xfs
    • 如果挂载时报错文件系统类型不匹配,用 blkid /dev/sdb1 确认实际类型
  3. 测试配置是否正确(避免开机故障):

    1. mount -a

    无报错即配置成功,重启后会自动挂载。


方案B:通过 systemd 挂载(兼容 LVM 场景)

如果 /etc/fstab 因为 LVM 标记问题无法生效,可以用 systemd 实现自动挂载:

  1. 创建挂载配置文件:

    1. nano /etc/systemd/system/mp4mkv.mount

    写入以下内容:

    1. [Unit]
    2. Description=Mount /dev/sdb1 to /mp4mkv
    3. After=local-fs.target
    4. [Mount]
    5. What=/dev/sdb1
    6. Where=/mp4mkv
    7. Type=ext4 # 替换为实际文件系统类型
    8. Options=defaults
    9. [Install]
    10. WantedBy=multi-user.target
  2. 启用并启动挂载服务:

    1. systemctl daemon-reload
    2. systemctl enable --now mp4mkv.mount

    重启后系统会自动完成挂载。


总结

  • 临时挂载mount /dev/sdb1 /mp4mkv → 重启失效
  • 永久挂载
    • 推荐:写入 /etc/fstab,简单通用
    • 备选:systemd 挂载,兼容复杂场景

ext4 defaults 0 1 和 ext4 defaults 0 2 有什么说法吗

这两个是 /etc/fstab 里最后两个数字,分别代表 dump 备份标记fsck 检查顺序,含义完全不同:


1. 第5个字段:dump 备份标记(0

  • 0不做 dump 备份(现代系统几乎都用 0,dump 工具已很少用)
  • 1:需要做 dump 备份(几乎没人用了)

所以这里写 0 就可以,1 基本没有实际意义。


2. 第6个字段:fsck 磁盘检查顺序(1 / 2

这个是关键,决定了系统开机时磁盘自检的优先级:

含义 适用场景
0 不检查 交换分区、临时挂载盘、不需要自检的盘
1 最高优先级 根文件系统 / 专用,系统会第一个检查它
2 次优先级 其他所有数据盘、挂载点(如 /home/mp4mkv),根分区检查完后才会检查

具体到你的场景

  • 根分区 / 的 fstab 行通常是:
    1. UUID=xxx / ext4 defaults 0 1
  • 你的 /mp4mkv 数据盘应该写:
    1. UUID=xxx /mp4mkv ext4 defaults 0 2

为什么不能写 1?

  • 只有根分区才能用 1,如果给数据盘也写 1,会导致 fsck 并行检查,可能引发系统启动异常或磁盘检查冲突。
  • 数据盘用 2,表示“根分区检查完再检查我”,是最安全、标准的写法。

总结建议

  • 根分区0 1
  • 数据盘/其他挂载点0 2
  • 交换分区/不需要检查的盘0 0

你现在的 /mp4mkvext4 defaults 0 2完全正确的选择。