Короткий ответ
Сначала слой: (1) физический диск/LUN write-protect, (2) RAID VD в безопасном режиме, (3) ФС сама ушла в ro после I/O error, (4) админ/политика (fstab, chattr, diskpart readonly). На Ubuntu findmnt + dmesg. На Windows — Disk Management «Read-only» vs NTFS dirty. На TrueNAS — dataset readonly=on vs пул FAULTED. Пока в dmesg живые I/O error, mount -o remount,rw только допишет порчу.
Плейсхолдеры: том на vd0, пул tank, хост NAS01.
Симптомы и как отличить
Типичная картина:
touch: Read-only file system;- Windows: «Диск защищён от записи», SQL в suspect;
- NFS клиент пишет, сервер
EROFS; - iSCSI LUN после thin full стал ro в госте.
| Слой | Признак | Не путать |
|---|---|---|
| Ядро ext4/xfs remount-ro | dmesg I/O, Buffer I/O error | chmod, NFS root_squash |
| ZFS readonly import | zpool get health, readonly=on | quota 100% (это ENOSPC, часто ещё rw попытки) |
| NTFS | fsutil volume diskfree, dirty bit | шара SMB read-only ACL |
| Hardware | storcli VD, disk lock | «файлы стали ro у пользователя» |
| Thin | ENOSPC на пуле, пауза VM | thin |
Возможные причины
- Media error, ядро
errors=remount-ro. - RAID контроллер: потеря BBU + политика force WT, или VD failed.
- LUN iSCSI/FC ушёл в read-only на СХД (реплика, snapshot, thin).
- Заполнен thin pool / ZFS 100% — часть стеков роняет запись.
zfs set readonly=on, TrueNAS replication target.- Windows:
diskpart attributes disk set readonly, USB write-protect, политика. - Гипервизор snapshot freeze «залип».
- Файловая система после crash ждёт fsck (не hw).
Диагностика
1. Ubuntu: опции монтирования и ядро
findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS /
findmnt /mnt/data
dmesg -T | grep -iE 'i/o error|read-only|ext4|xfs|nvme|sd ' | tail -n 60
lsblk -o NAME,RO,TYPE,FSTYPE,MOUNTPOINTRO=1 на блочном устройстве — слой диска/LUN, не только ФС. RO=0 + mount ro — ФС или fstab.
grep -v '^#' /etc/fstab
blockdev --getro /dev/sdX2. RAID / SMART
storcli /c0/vall show
storcli /c0/eall/sall showDgrd + I/O error: выпал диск. Optimal + I/O: кабель, кэш, конкретный LUN.
SMART: интерпретация.
3. ZFS
zpool status tank
zfs get mounted,readonly,canmount tank tank/data
zpool get health,readonly tankreadonly=on на pool — импорт в ro (часто после ошибок или вручную). Checksum — отдельная ветка.
4. Windows Server
Get-Disk | Format-Table Number, OperationalStatus, HealthStatus, IsReadOnly, Size
Get-Volume | Format-Table DriveLetter, FileSystem, HealthStatus, SizeRemaining
Get-Disk | Where-Object IsReadOnlyIsReadOnly на диске ≠ NTFS permissions. Diskpart: attributes disk. Для iSCSI: сессия жива? Target не отдал LUN в RO.
5. TrueNAS
Storage → Pools: FAULTED vs ONLINE. Dataset options Readonly. Services не пишут в /mnt/tank/... если export ro. Журнал: dmesg, zpool status.
Решение
Сценарий A. I/O error, hardware
Снимите нагрузку. Не remount rw. Backup с другого реплика/снимка. Чините путь диска/RAID. Когда dmesg тих и RAID Optl — umount, fsck на копии или в maintenance, затем rw.
Сценарий B. Только fstab/readonly флаг
Ubuntu: уберите ro из fstab, mount -o remount,rw если нет I/O error.
zfs set readonly=off tank/dataТолько если это политика, не защита после FAULT. TrueNAS GUI: снимите readonly на dataset-реплике, если это не target.
Сценарий C. Windows IsReadOnly
Set-Disk -Number 2 -IsReadOnly $falseПосле проверки, что это не корпоративный write-protect на реплике. Не на диске, который Disk Management показывает как чужой signature без нужды.
Сценарий D. Thin / место
Освободите пул, расширьте. Гости сами не «вылечат» RO, пока СХД не даёт write. См. ENOSPC статьи раздела.
Сценарий E. RAID cache / BBU
Контроллер мог отключить WB. Это не RO тома, но запись «как будто клинит». Смотрите WB/WT, не format C:.
Частый гибрид: Linux видит ro, Windows на iSCSI — «write protected». Это один SCSI sense с target. На TrueNAS проверьте, не сделали ли zvol/dataset readonly для реплики, не сел ли snapshot clone как prod path, не включили ли «Read Only» на iSCSI extent. Гость тогда честный: он не виноват.
Ещё слой — hypervisor freeze (VSS/fsfreeze) без thaw: диск гостя «застыл» на запись, хост жив. Смотрите задачи backup, зависшие agent. Remount rw внутри гостя не поможет, пока freeze не снимут.
Если NTFS dirty и Windows предлагает chkdsk при каждом boot, это не hardware RO, а журнал ФС. Сначала убедитесь, что LUN не 100% thin и RAID Optimal, затем штатный chkdsk в окне, не /r на 20 ТБ ночью без backup. Для Ubuntu xfs — xfs_repair только на umount; -L без копии не предлагайте.
Как проверить, что проблема устранена
touch / создание файла на томе. findmnt без ro. Windows: IsReadOnly False, SQL пишет. dmesg без новых I/O. ZFS readonly=off, zpool status ONLINE. Приложение (не только ping) записало данные и прочитало.
Если не помогло
- rw есть, приложение всё равно EROFS: другой mount (bind, overlay, NFS).
- Только один dataset ro: наследование ZFS, не весь tank.
- iSCSI: initiator RO из-за SCSI write protect sense — смотрите TrueNAS zvol readonly / snapshot clone.
- Кластер: том в RO на пассивной ноде — это норма до failover.
Профилактика
- Мониторинг remount-ro, SMART, VD, free space thin.
- UPS + CacheVault, не WB без батареи на учёте.
- Не
sync=disabledкак лечение RO. - Реплика tank на второй NAS.
- Документировать, какие dataset специально readonly.
FAQ
mount -o remount,rw сразу можно?
Только если причина — флаг, не I/O. Иначе нет.
Windows «write protected» на флешке и на vd0 — одно?
Нет. Аппаратный переключатель USB vs атрибут диска/политики. Для vd0 ищите Disk/IsReadOnly и SAN.
ZFS imported readonly — как вернуть rw?
Устраните причину FAULT, затем импорт без -o readonly=on. Не force с двух хостов.
Это защита от ransomware?
Иногда админы ставят ro на backup dataset — штатно. На проде SQL — нет, это авария.
Нужен ли chkdsk /r?
Не первым шагом на RAID-члене. Сначала слой блока. chkdsk на смонтированном системном томе — по процедуре Windows, не «на всякий с /r на ночь» без backup.