вторник, 20 января 2009 г.

LVM2 и снапшоты

Мало где говорится о том, что при использовании снапшота в LVM используется неразмеченное пространство в данном томе (Volume), хотя это совсем неочевидно. Т.е. имея 1Gb неразмеченного пространства мы можем сделать снапшот размером до 1G (т.е. и -L1G), но что будет, если мы при этом сделаем снапшот размером 2G и дождёмся, пока он заполнится больше чем на 1Gb?

UPD: снапшот можно сделать размером не более чем неразмеченное пространство в томе, иначе получим "Insufficient free extents".

6 комментариев:

tamerlan311 комментирует...

Например мы создаем снапшот размером в 1 гигабайт, теперь все изменения которые происходят в файловой системе записываются в область отведенную для снапшота. Если измененных данных станет больше чем мы отвели для создания снапшота - то снапшот просто разрушается.

LVM же создает блоки данных (по 32 метра помойму, точно не помню) которые никак не привязаны с физическому размещению. Поэтому при создании снапшота эти блоки замораживаются а под изменяемые данные выделяются новые блоки. После удаления снапшопа старые замороженные блоки которые не нужны основному разделу удаляются.

tamerlan311 комментирует...

пардон, 4мб.
http://xgu.ru/wiki/LVM

GiNeR комментирует...

Вы, кажется, неверно истолковали мой вопрос. К тому же это "поэтому при создании снапшота эти блоки замораживаются а под изменяемые данные выделяются новые блоки" не совсем верно, если я вас правильно понял.
"If a block is to be changed on the origin, it is first copied to the snapshot, marked as copied in the exception table, and then the new data is written to the original volume."
http://www.tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html

Livid комментирует...

"Мало где говорится о том, что при использовании снапшота в LVM используется неразмеченное пространство в данном томе"
Эээ... С чего Вы взяли?
Приоритетно - возможно, а вообще - любое свободное место.

GiNeR комментирует...

Вопрос отпал сам собой. Если создавать snapshot не имея неразмеченного пространства в томе, то получим: Insufficient free extents (0) in volume group TESTVOL: 128 required. Вот только в документации об этом напрямую не говорится, как буд-то это очевидно :)

GiNeR комментирует...

Нужно посмотреть как снапшоты реализованы в UFS, т.к. в он не требует дополнительного неразмеченного пространства для создания снапшота.