Я использую redhat 5.8 с зеркалом lvm, созданным с помощью следующей команды:
lvcreate -m1 --mirrorlog mirrored -n mirrorvol -L 10G myvg /dev/vdb /dev/vdc
Я хотел бы знать, когда я пишу, мне нужно подождать, пока запись поступит на оба устройства или только на одно?
Насколько я понял, зеркало lvm синхронно:
[root@02srv004x9 ~]# dmsetup ls
mpath2 (253, 2)
foo (253, 3)
vgmirror-oracle_BD2_mirrorlogAvol (253, 4)
VolGroup00-LogVol01 (253, 1)
VolGroup00-LogVol00 (253, 0)
vgmirror-oracle_BD2_mirrorlogAvol_mimage_1 (253, 6)
vgmirror-oracle_BD2_mirrorlogAvol_mimage_0 (253, 5)
dmsetup suspend /dev/mapper/vgmirror-oracle_BD2_mirrorlogAvol_mimage_1
Name: vgmirror-oracle_BD2_mirrorlogAvol_mimage_1
State: SUSPENDED
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 6
Number of targets: 1
UUID: LVM-c8xfdstj4tTpfV3LSIYat0wbKXpfb7kDefFId05lIJR2QV1ws7CBfkbC0Oc813d9
Теперь у меня есть вторичный образ в приостановленном состоянии, и я попытаюсь смонтировать файловую систему:
mount /dev/mapper/vgmirror-oracle_BD2_mirrorlogAvol /mnt
Здесь команда mount блокируется и остается в состоянии D.
Если вы пишете, запись будет происходить в блочный кеш в вашей оперативной памяти. Оттуда он будет синхронизирован, когда это будет оптимально.
Если вы сделаете sync
команда или fsync()
системный вызов, он запишет весь кеш записи. Кроме того, файловые системы ext2-3-4 стараются записывать в кэш записи почти так часто, как это возможно, другие файловые системы имеют лучшую эвристику.
Файловая система журналирования также регулярно выполняет частичную синхронизацию.
Если в зеркальный том происходит запись, она передаст две операции записи в логические подтомы на vdb и vdc. Нет никакой гарантии, что они будут фактически выполнены в одно и то же время, за исключением случаев, когда кто-то говорит об этом (это может быть периодическая синхронизация кэша записи, ведение журнала или замечательная функция синхронизации файловых систем ext2-3-4).
Приостановка не предназначена для имитации ошибок в физическом томе LVM. Приостановка заключается в внесении неатомарных изменений, которые кажутся элементарными для реальных пользователей. Во время приостановки каждая команда, использующая данный логический том, будет находиться в состоянии D, но она не должна ничего делать с кэшированием записи, это функция LVM.
Если вы хотите сымитировать аппаратную ошибку в зеркальном томе LVM, вам нужно найти альтернативные решения. Первый, который я думаю, работает, если вы отключите физический жесткий диск с помощью SMART.