我怎样才能确定EBS卷被安装在一个特定的点?

我需要我的EC2实例来创build附加卷的EBS快照。 为了确保一致的快照,我想使用fsfreeze ; 但是, fsfreeze需要安装点。

我可以使用AWS API来获取附加EBS卷及其设备名称的列表,但设备名称以/dev/sd[az][1-6]列出,而Ubuntu(或Xen?)将其重命名为/dev/xvd[az][1-6] 。 AWS文件说“在大多数情况下,尾随的信件保持不变”。 我知道我可以使用mount -l从设备名称获取安装点,但是这显然要求我具有正确的设备名称(即不是/dev/sda1 )。

对于给定的一组EBS卷ID(例如“vol-abc123”),如何可靠地确定文件系统上的安装点?

编辑添加一个新的想法:如果API给我/dev/sda1 ,既不是和/dev/xvda1存在,我可以安全地假设第一个现有的/dev/xvd[bz]1将是相同的体积?

背景:我正在运行Ubuntu 14.04 LTS服务器; 内核日志谈到加载Xen虚拟驱动程序,所以我认为这就是AWS用于HVM虚拟化的东西。 我目前的情况是微不足道的(一个EBS卷,安装在/ ),但我希望该解决scheme适用于更复杂的情况(多个EBS卷,包括实例卷的存在 – 这将不需要快照,但可能我正在拍摄快照)。

由于udev在安装时正在进行所有重命名操作,因此您可以检查udev日志并查看设备正在重命名的内容。 您可能必须首先设置日志级别infodebug ,因为我认为它默认为err

在设置日志级别并重新启动之后,当我在/ dev / sdf(根据AWS)附加新的EBS卷时,我看到了这一点:

 # cat /var/log/messages | grep udev | grep sdf Oct 25 08:04:10 ip-10-128-240-37 udevd-work[571]: '/usr/sbin/ami-udev' (stdout) 'sdf' Oct 25 08:04:10 ip-10-128-240-37 udevd-work[571]: LINK 'sdf' /etc/udev/rules.d/99-ami-udev.rules:1 Oct 25 08:04:10 ip-10-128-240-37 udevd-work[571]: creating link '/dev/sdf' to '/dev/xvdf' 

果然,设备名为/dev/xvdf ,在/dev/sdf有一个符号链接。

我在CentOS上testing,所以我的udev日志在/var/log/messages ,但你的可能在/var/log/syslog

我不知道当字母改变(a到e等)时输出的结果如何。 我已经看到了这种情况,但是在这种情况下,我没有一个例子在我面前。

您也可以查看/etc/udev/rules.d并查看AMI的重命名规则。

对于您的特定问题,我认为工作stream将首先调用AWS API以获取卷ID到AWS指定的设备名称的映射,然后检查udev日志以获取重命名的设备。