У меня есть удаленный скрипт, который проверяет некоторые параметры из томов lvm. Одна из вещей, которые мне нужно знать, - это размер. В настоящее время я использую это:
lvdisplay / dev / virtuals / имя_тома -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
. Возможно, это быстрее, так как он ищет меньше информации.
Попробуйте бежать lvdisplay
или lvs
только один раз для всех интересующих вас томов. Поскольку некоторая информация хранится для каждой группы томов, таким образом будет меньше дублирования усилий при чтении.
есть также lvs
но все они полагаются на одну и ту же кодовую базу, я думаю
/proc/partitions
также перечисляет тома, управляемые LVM, и должно быть намного быстрее. Самым большим недостатком является то, что он перечисляет их как 'dm-0', 'dm-1' и т. д., вам понадобится отображение номера-имени откуда-то еще. (подсказка, проверьте младшее количество файлов устройства)