我有一个远程脚本,用于检查 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
答案1
使用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
答案2
您可以尝试以下方法。我不了解 lvm 内部原理,所以不知道它们是否会产生任何影响。
尝试使用
lvs
而不是lvdisplay
。 也许这样更快,因为它查找的信息更少。尝试对您感兴趣的所有卷运行
lvdisplay
或lvs
仅运行一次。由于某些信息是按卷组存储的,因此这样可以减少重复读取的工作。
答案3
还有lvs
,但我认为它们都依赖于相同的代码库
答案4
/proc/partitions
还列出了 LVM 管理的卷,并且速度应该更快。最大的缺点是它将它们列为“dm-0”、“dm-1”等。您将需要从其他地方获取名称-编号映射。(提示,检查设备文件的次设备号)