Блокировка программного RAID 1 Linux в режиме только для чтения
Настройка:
Centos 5.2, 2 sata диска по 320 ГБ в RAID 1.
Все файловые системы, кроме swap, являются ext3
У нас были проблемы в нескольких системах, где сбой на одном диске заблокировал корневую файловую систему как доступную только для чтения, что, очевидно, вызывает проблемы.
[root@myserver /]# mount | grep Root
/dev/mapper/VolGroup00-LogVolRoot on / type ext3 (rw)
[root@myserver /]# touch /foo
touch: cannot touch `/foo': Read-only file system
Я вижу, что один из разделов в массиве неисправен:
[root@myserver /]# mdadm --detail /dev/md1
/dev/md1:
[...]
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
[...]
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 18 1 active sync /dev/sdb2
2 8 2 - faulty spare /dev/sda2
Перемонтировать как rw не удается:
[root@myserver /]# mount -n -o remount /
mount: block device /dev/VolGroup00/LogVolRoot is write-protected, mounting read-only
Инструменты LVM выдают ошибку, если не используется --ignorelockingfailure (потому что они не могут писать в / var), но показывают группу томов как rw:
[root@myserver /]# lvm vgdisplay
Locking type 1 initialisation failed.
[root@myserver /]# lvm pvdisplay --ignorelockingfailure
--- Physical volume ---
PV Name /dev/md1
VG Name VolGroup00
PV Size 279.36 GB / not usable 15.56 MB
Allocatable yes (but full)
[...]
[root@myserver /]# lvm vgdisplay --ignorelockingfailure
--- Volume group ---
VG Name VolGroup00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
[...]
[root@myserver /]# lvm lvdisplay /dev/VolGroup00/LogVolRoot --ignorelockingfailure
--- Logical volume ---
LV Name /dev/VolGroup00/LogVolRoot
VG Name VolGroup00
LV UUID PGoY0f-rXqj-xH4v-WMbw-jy6I-nE04-yZD3Gx
LV Write Access read/write
[...]
В этом случае / boot (отдельное метаустройство RAID) и / data (другой логический том в той же группе томов) по-прежнему доступны для записи. Из предыдущих событий я знаю, что перезапуск восстановит систему с корневой файловой системой чтения / записи и правильно деградированным массивом RAID.
Итак, у меня два вопроса:
1) Когда это произойдет, как я могу вернуть корневую файловую систему для чтения / записи без перезапуска системы?
2) Что нужно изменить, чтобы остановить эту блокировку файловой системы? При отказе RAID 1 на одном диске мы не хотим, чтобы файловые системы зависали, мы хотим, чтобы система продолжала работать, пока мы не заменим неисправный диск.
Изменить: я вижу это в выводе dmesg - это указывает на сбой / dev / sda, а затем на отдельный сбой на / dev / sdb, который приводит к тому, что файловая система настроена только на чтение?
sda: Current [descriptor]: sense key: Aborted Command
Add. Sense: Recorded entity not found
Descriptor sense data with sense descriptors (in hex):
72 0b 14 00 00 00 00 0c 00 0a 80 00 00 00 00 00
00 03 ce 85
end_request: I/O error, dev sda, sector 249477
raid1: Disk failure on sda2, disabling device.
Operation continuing on 1 devices
ata1: EH complete
SCSI device sda: 586072368 512-byte hdwr sectors (300069 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write back
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:1, o:0, dev:sda2
disk 1, wo:0, o:1, dev:sdb2
RAID1 conf printout:
--- wd:1 rd:2
disk 1, wo:0, o:1, dev:sdb2
ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata2.00: irq_stat 0x40000001
ata2.00: cmd ea/00:00:00:00:00/00:00:00:00:00/a0 tag 0
res 51/04:00:34:cf:f3/00:00:00:f3:40/a3 Emask 0x1 (device error)
ata2.00: status: { DRDY ERR }
ata2.00: error: { ABRT }
ata2.00: configured for UDMA/133
ata2: EH complete
sdb: Current [descriptor]: sense key: Aborted Command
Add. Sense: Recorded entity not found
Descriptor sense data with sense descriptors (in hex):
72 0b 14 00 00 00 00 0c 00 0a 80 00 00 00 00 00
01 e3 5e 2d
end_request: I/O error, dev sdb, sector 31677997
Buffer I/O error on device dm-0, logical block 3933596
lost page write due to I/O error on dm-0
ata2: EH complete
SCSI device sdb: 586072368 512-byte hdwr sectors (300069 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
ata2.00: exception Emask 0x0 SAct 0x1 SErr 0x0 action 0x0
ata2.00: irq_stat 0x40000008
ata2.00: cmd 61/38:00:f5:d6:03/00:00:00:00:00/40 tag 0 ncq 28672 out
res 41/10:00:f5:d6:03/00:00:00:00:00/40 Emask 0x481 (invalid argument) <F>
ata2.00: status: { DRDY ERR }
ata2.00: error: { IDNF }
ata2.00: configured for UDMA/133
sd 1:0:0:0: SCSI error: return code = 0x08000002
sdb: Current [descriptor]: sense key: Aborted Command
Add. Sense: Recorded entity not found
Descriptor sense data with sense descriptors (in hex):
72 0b 14 00 00 00 00 0c 00 0a 80 00 00 00 00 00
00 03 d6 f5
end_request: I/O error, dev sdb, sector 251637
ata2: EH complete
SCSI device sdb: 586072368 512-byte hdwr sectors (300069 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
Aborting journal on device dm-0.
journal commit I/O error
ext3_abort called.
EXT3-fs error (device dm-0): ext3_journal_start_sb: Detected aborted journal
Remounting filesystem read-only
Ваш dmesg
вывод должен дать вам представление о том, почему он сигнализирует об отказе PV; этого не должно происходить. Что касается того, чтобы снова сделать систему доступной для записи, перевод VG и LV в режим только для чтения, а затем обратно в режим чтения-записи работает из памяти, но реальное решение - заставить md перестать беспокоить LVM без необходимости.