10 февр. 2014 г.

LVM Thin Provisioned, тонкие (разреженные) тома

RedHat (и CentOS) начиная с версии 6.4 поддерживают Thin provisioned storage - разряженные тома. Основная мысль похожа на разреженные (sparce) файлы. Том выглядит большим, но на самом деле занимает мало места - только то, которое нужно для хранения данных.

1. Уже должна существовать группа дисков (VG) и в ней должно быть свободное место, например storage
2. Создается пул разреженных томов, например на 100Гб. Эти 100Гб сразу отмечаются в VG как занятые и их нельзя исползовать под обычные LVM-разделы. Разреженные тома создаются внутри этого пула. Пул разреженных томов нигде симлинками не отмечен и напрямую не используется.

lvcreate -T -L 100G storage/thin

3. Создается разреженный том. Видимый размер разреженного тома может быть больше чем доступное место в пуле и даже больше размера самого пула, пока данные фактически могут поместиться в пул. Для разреженного тома так же как и для обычного создается симлинк (/dev/storage/test) и далее с ним можно работать как с обычным LVM-томом.

lvcreate -T -V 200G storage/thin -n test


Просмотр фактически занятого места в пуле и на томе:

lvs


Если место в пуле будет полностью израсходовано и кто-то в этот момент попробует записать данные на диск - операция ввода/вывода будет приостановлена пока в пуле не появится место (можно что-то удалить или расширить пул через lvextend), после появления места операция записи будет завершена.

Кроме постепенного выделения места поддерживается и освобождение в пуле места которое раньше было занято, но теперь не нужно. Например на каком-то разделе потребовалось место чтобы создать/распаковать большой архив. А потом архив удаляется. Освобождение места поддерживается через механизм TRIM (аналогично очистке места на SSD) и в LVM называется discard_data.

освобождать место можно двумя путями:
1. Вручную, командой fstrim - место освобождается только при запуске команды в указанной точке монтирования

fstrim /mnt/data

2. монтировать файловую систему с опцией discard. например - тогда место освобождается сразу после удаления данных с диска. (прим. XFS активно кеширует все изменения, так что в случае использования XFS нужно сделать sync если нужно очистить место быстро, либо подождать несколько минут пока изменения фактически применятся на диск сами).

mount /dev/storage/test /mnt/data -o discard
 

Комментариев нет:

Отправить комментарий