LVM 挂载路径的差异

LVM 挂载路径的差异

因此我可以执行以下操作:

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符号链接

尽管这两条道路都是在命令中可互换喜欢mountfdisk

# 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

关于dmsetup splitname

   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)。

相关内容