Самый быстрый способ определить размер блочного устройства?

У меня есть удаленный скрипт, который проверяет некоторые параметры из томов 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)

time blockdev --getsize64 / dev / system / home

4 ответа

Решение

Использовать 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 только один раз для всех томов, которые вас интересуют. Поскольку некоторая информация хранится в каждой группе томов, таким образом будет меньше дублирования усилий при чтении.

/proc/partitions также перечисляет управляемые LVM тома и должен быть намного быстрее. самый большой недостаток в том, что он перечисляет их как 'dm-0', 'dm-1' и т. д. Вам понадобится сопоставление имени и номера откуда-то еще. (подсказка, проверьте второстепенное количество файлов устройств)

Есть также lvs но они все полагаются на одну и ту же кодовую базу, я думаю,

Другие вопросы по тегам