Ситуация знакома? Уже не первый раз такое, вероятно криво диск настроен. Внезапно все виртуалки, использующие общий data-диск (например, /mnt/data или LVM-том), перестают работать. В логах хоста — I/O error, файловая система перемонтирована в read-only или вовсе отмонтирована. При этом:
- Диски не умирают — SMART в порядке,
- После простой перезагрузки — всё снова работает.
Значит, проблема не в железе, а в том, как Linux обрабатывает задержки диска.
Почему ядро само отключает «живой» диск?
Linux защищает данные. Если диск не отвечает дольше 30 секунд (таймаут по умолчанию), ядро решает: «Лучше отмонтировать, чем испортить данные». Это происходит даже если:
- Диск перегружен (много VM читают/пишут одновременно),
- Происходит TRIM на SSD,
- Диск «проснулся» после простоя и отвечает медленно,
- Или просто — дешёвый HDD с плохой прошивкой.
Результат: EXT4-fs error → Remounting filesystem read-only → все VM, зависящие от этого тома, падают.
Как понять, что это «ложный» сбой?
Выполни на хосте сразу после отвала (до перезагрузки!):
dmesg | grep -i "timeout\|I/O error\|reset\|ata"
Если видишь строки вроде:
[12345.678] sd 2:0:0:0: [sdb] No CDB received; resetting controller [12346.123] EXT4-fs (sdb1): Remounting filesystem read-only
— значит, диск не сломан, он просто не уложился в таймаут.
Как починить (и не перезагружать каждый раз)
Для диска
sdb:
echo 180 > /sys/block/sdb/device/timeoutЧтобы настройка применялась автоматически, создай файл:
/etc/udev/rules.d/99-disk-timeout.rules
ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{device/timeout}="180"
В
/etc/fstab укажи:
/dev/sdb1 /mnt/data ext4 defaults,noatime,commit=60,data=ordered 0 2Не используй
data=writeback и discard на HDD или старых SSD.
Если не используешь SSD или TRIM не нужен — убери опцию
discard из fstab и отключи fstrim.timer.
А как насчёт ZFS или LVM?
- ZFS: очень чувствителен к таймаутам. Даже кратковременная задержка → диск помечается как
FAULTED. Решение — те же таймауты + избыточность (mirror/raidz). - LVM: если PV недоступен — все LV исчезают. Убедись, что диск стабильно определяется (
pvscanпосле переподключения).
Итог
Если:
- диск жив,
- SMART чист,
- и после перезагрузки всё работает —
значит, виноват не диск, а защитный механизм ядра.
Не перезагружай — настрой таймауты! Это сэкономит тебе время и нервы.
P.S. Проверяй логи до перезагрузки — так ты точно поймёшь, «умер» диск или просто «зевнул».
Комментарии
Пока нет комментариев. Будьте первым!