Цель: создать изолированную ВМ, которая будет нагружать физический HDD хоста Proxmox синхронными случайными записями, чтобы спровоцировать I/O-таймауты. Или для диагностики стабильности системы рабочей виртуальной машины
⚠️ Внимание! Тест может вызвать зависание ВМ или повреждение данных. Не запускайте на продакшене!
Шаг 1: Подготовка на хосте Proxmox
Создайте отдельный файл или LVM-том на томе, расположенном на HDD:
# Вариант A: raw-файл (10 ГБ)
cd /var/lib/vz/images
dd if=/dev/zero of=./stress_disk.img bs=1G count=10
# Вариант B: LVM-том (если используете LVM)
lvcreate -L 10G -n vm-stress-disk pve
Шаг 2: Настройка ВМ в Proxmox
- Создайте новую ВМ (или используйте существующую).
- Добавьте новый диск:
- Storage: выберите том с HDD
- Cache:
None← обязательно! - Format:
raw - Если используете свой файл — укажите путь:
/var/lib/vz/images/stress_disk.img
- Запустите ВМ.
Шаг 3: Нагрузка внутри ВМ
Подключитесь к ВМ по SSH и выполните:
# 1. Определите новый диск
lsblk
# 2. Отформатируйте и смонтируйте (например, /dev/vdb)
sudo mkfs.ext4 /dev/vdb
sudo mkdir /mnt/stress
sudo mount /dev/vdb /mnt/stress
# 3. Установите fio
sudo apt update && sudo apt install fio -y
# 4. Запустите стресс-тест
cd /mnt/stress
fio --name=hdd_kill \
--filename=./testfile \
--size=8G \
--rw=randwrite \
--bs=4k \
--direct=1 \
--sync=1 \
--iodepth=1 \
--runtime=900 \
--time_based
💡 Пояснение параметров:
randwrite+bs=4k— худший сценарий для HDD (много seek-ов)direct=1— обход кэша ядраsync=1— каждая запись синхронизируется → максимальная задержка
Шаг 4: Мониторинг
Внутри ВМ:
iostat -x 1
dmesg -T | tail -30 # ищите "blocked for more than"
На хосте Proxmox:
iostat -x 1
dmesg | grep -i timeout
Ожидаемый результат
- Высокий
await(>1000 мс) - Сообщения о блокировке задач в
dmesg - Возможное "зависание" ВМ до разблокировки I/O
🔒 После теста не забудьте удалить временные файлы и отключить диск от ВМ.
Комментарии
Пока нет комментариев. Будьте первым!