![LVM 挂载路径的差异](https://linux22.com/image/1353508/LVM%20%E6%8C%82%E8%BD%BD%E8%B7%AF%E5%BE%84%E7%9A%84%E5%B7%AE%E5%BC%82.png)
因此我可以执行以下操作:
mount /dev/datavg/datalv /mnt
或者
mount /dev/mapper/datavg-datalv /mnt
这些是一样的吗?其中一个比另一个有优势吗?其中一个被认为是更好的做法吗?
答案1
要检查它们是否相同,请查看ls -la
两个文件的列表:
$ ls -l /dev/datavg/datalv
lrwxrwxrwx 1 root root 25 2013-03-01 19:02 /dev/datavg/datalv -> /dev/mapper/datavg-datalv
$ ls -l /dev/mapper/datavg-datalv
brw------- 1 root root 253, 0 2013-03-01 19:02 /dev/mapper/datavg-datalv
如您所见,有一个细微的差别:
/dev/mapper/datavg-datalv
是设备文件while/dev/datavg/datalv
是符号链接。
尽管这两条道路都是在命令中可互换喜欢mount
或fdisk
:
# mount /dev/datavg/datalv /mnt
# mount /dev/mapper/datavg-datalv /mnt
我的经验是你应该使用设备文件/etc/fstab
, 例如:
/dev/mapper/datavg-datalv /mnt ext3 acl,user_xattr 1 2
我为什么要推荐这个?几年前,我遇到过一个问题,服务器在重启后无法启动,原因是 中列出的 LVM 文件系统缺少设备符号链接/etc/fstab
。
答案2
也许自从提出这个问题以来,情况发生了变化,但是LVM2 的手册页状态(重点是我的):
/dev
当任何逻辑卷被激活时, 将创建一个带有每个卷组名称的目录。每个活动逻辑卷都可从此目录作为指向设备节点的符号链接进行访问。中的链接或节点/dev/mapper
仅供内部使用并且精确的格式和转义可能会在版本和发行版之间发生变化。 其他软件和脚本应该使用/dev/VolumeGroupName/LogicalVolumeName
格式以减少软件更新时需要修改的机会。如果您需要处理 中的节点名称/dev/mapper
,您可以使用dmsetup splitname
分离出原始的 VG、LV 和内部层名称。
因此你应该使用mount /dev/datavg/datalv /mnt
splitname device_name [subsystem] Splits given device name into subsystem constituents. The default subsystem is LVM. LVM currently generates device names by concatenating the names of the Volume Group, Logical Volume and any internal Layer with a hyphen as separator. Any hyphens within the names are doubled to escape them. The precise encoding might change without notice in any future release, so we recommend you always decode using the current version of this command.
以下是一个使用示例:
# dmsetup splitname /dev/mapper/datavg-datalv
VG LV LVLayer
/dev/mapper/datavg datalv
有趣的是,在我的系统上,/dev/mapper/datavg
它并不存在,所以我对这个输出感到困惑。
答案3
上面的答案对于检查它们是否相同是正确的。但是,我发现语法在某些 Linux 版本中可能会有所不同:
在 Ubuntu 14.04 中,我发现对于设备路径为 /dev/VG/LV 的挂载点,LVM 不会自动联机 - 设备路径必须采用 /dev/mapper/vg--lv 的形式,系统才会在启动时启动 LVM(即调用 vgscan/vgchange)。