最快的方法来确定块设备的大小?

我有一个远程脚本,检查lvm卷的一些参数。 我需要知道的一件事是尺寸。 我目前正在使用这个:

lvdisplay / dev / virtuals / volume_name -C -o lv_size

但是最后的命令可能需要大约一秒的时间才能在我的服务器上执行,而且我有多个卷要检查。 我也尝试过使用lvs而不是lvdisplay,但速度没有太大的提高。

time lvs -o lv_size /dev/virtuals/volume_name -C -o lv_size real 0m0.809s time lvdisplay /dev/virtuals/volume_name real 0m0.982s 

有人知道一个更快的方式来获得这些信息,只是体积的大小,我对这个职业不感兴趣。

更新:使用blockdev给了一个巨大的改进。 我真的推荐使用它而不是lvdisplay(只记得使用getsize64)

时间blockdev –getsize64 / dev / system / home

使用blockdev命令:

字节:

 > time blockdev --getsize64 /dev/system/home 32212254720 real 0m0.004s user 0m0.001s sys 0m0.002s 

部门:

 > time blockdev --getsize /dev/system/home 62914560 real 0m0.006s user 0m0.001s sys 0m0.003s 

这里有一些你可以尝试的东西。 我不知道lvm内部,所以我不知道他们是否会有所作为。

  • 试试lvs而不是lvdisplay 。 也许这是因为它寻找更less的信息更快。

  • 尝试为感兴趣的所有卷运行lvdisplaylvs一次。由于每个卷组中存储了一些信息,因此读取工作的重复性会降低。

也有lvs但他们都依赖于我认为相同的代码库

/proc/partitions也列出LVMpipe理的卷,应该更快。 最大的缺点是它将它们列为“dm-0”,“dm-1”等等,您需要从其他地方进行名称映射。 (提示,检查设备文件的次要设备号)