Как проверить соответствие ресурсов виртуальной машины заказанным (CPU, память, диск)?
Что проверяют
Понимаете ли вы разницу между тем, что показывает гостевая ОС, и тем, что реально выделил гипервизор. Интервьюер ждёт не только список команд, но и объяснение, почему цифры могут не совпасть с заказом. Следом обычно спрашивают про производительность: не отбирают ли процессор соседи и держит ли диск обещанные IOPS.
Как отвечать
Объём проверяется изнутри Linux:
- CPU:
nprocилиlscpuпокажут число vCPU. Помните, что vCPU обычно это поток физического ядра, а не целое ядро; - память:
free -hили/proc/meminfo.MemTotalвсегда немного меньше заказанного: часть забирают ядро, резерв подcrashkernelи прошивка, поэтому из 8 ГиБ получается около 7,7; - диск:
lsblkпоказывает размер блочного устройства, аdf -hразмер файловой системы. Если диск увеличили в консоли облака, аdfпоказывает старое, не расширены раздел и ФС: нужныgrowpartиresize2fsилиxfs_growfs.
Сверяете с источником правды: API или CLI облака, состояние Terraform. Для парка машин это автоматизируется фактами Ansible (ansible_processor_vcpus, ansible_memtotal_mb) или метриками node_exporter в Prometheus.
Производительность проверяется отдельно:
- steal time: колонка
stвtopилиvmstat. Высокое значение означает, что гипервизор отдаёт ваше процессорное время соседям. На тарифах с гарантированной долей vCPU это ожидаемо; - диск:
fioна случайное чтение и запись покажет, упираетесь ли вы в лимит IOPS и пропускной способности, который у облачных дисков обычно зависит от типа и размера; - сеть:
iperf3между двумя машинами.
Где спотыкаются
Проверяют диск только через df -h и делают вывод, что облако выдало меньше. На деле просто не расширена файловая система.
Ждут, что free покажет ровно заказанный объём, и заводят инцидент на недостающие 300 МБ.
Сверяют количество, но не качество. Восемь vCPU с высоким steal time работают медленнее четырёх выделенных, и без st и fio этого не увидеть.