Использование LVM thin
provisioning
В школе и дома
Александр Чистяков,
главный инженер Git in Sky,
2014
Зачем?
§ On-demand blocks allocation:
§ Старый добрый overselling
§ «Прозрачное» добавление ресурсов по необходимости
§ Побочный эффект — возможность создания снэпшотов в
«правильном» порядке
Использование LVM thin provisioning. 2014
Отсортируем в порядке важности для меня
§ Побочный эффект — возможность создания снэпшотов в
«правильном» порядке
§ «Прозрачное» добавление ресурсов по необходимости
§ Старый добрый overselling*
* Мы не оверселлим!
Использование LVM thin provisioning. 2014
Как снэпшоты работали раньше?
Использование LVM thin provisioning. 2014
Как снэпшоты работали раньше?
§ Доктор, откуда у вас такие картинки?
§ Это blktrace + iowatcher
§ По оси X — время, по оси Y — смещение относительно
начала диска
§ Исследуется запуск bonnie++ (последовательная запись,
потом перезапись записанного, потом случайное чтение,
потом создание большой пачки файлов)
Использование LVM thin provisioning. 2014
Как снэпшоты работали раньше?
§ Алгоритм последовательной записи:
§ Сначала читаются данные, которые были на разделе
исходно
§ Потом они записываются на отдельный раздел (кстати, он
может переполниться)
§ Потом, наконец, данные записываются куда следует
§ Вместо одной записи — чтение и две записи
Использование LVM thin provisioning. 2014
Как работает без снэпшотов?
Использование LVM thin provisioning. 2014
Как организовать LVM thin provisioning?
§ pvcreate и vgcreate — как обычно
§ lvcreate --size 1700G --type thin-pool --thinpool thin_pool vg0
§ ^ Создаем ThinPoolLV (ThinDataLV + ThinMetaLV)
§ Можно разбить на два этапа:
§ lvcreate -n pool0 -L 1600G vg0
§ lvcreate -n pool0meta -L 110M vg0
§ lvconvert --thinpool vg/pool0 --poolmetadata vg/pool0meta
Использование LVM thin provisioning. 2014
Как организовать LVM thin provisioning?
§ Создание thin provisioned томов:
§ lvcreate -V300G -T vg0/thin_pool --name var
§ lvcreate -V100G -T vg0/thin_pool --name home
§ Создание thin снэпшотов:
§ lvcreate -s -n home_`date +"%F-%H"` /dev/vg0/home
§ lvcreate -s -n var_`date +"%F-%H"` /dev/vg0/var
Использование LVM thin provisioning. 2014
Как теперь работает снэпшот?
§ Thin том (thin снэпшот) — это блоки данных и метаданные,
описывающие их принадлежность
§ Одна запись — это (почти) всегда одна запись, если не
считать метаданные
§ Новые данные пишутся последовательно, старые — в
зависимости от того, принадлежат или нет они какому-
нибудь снэпшоту
§ ^ Последовательная запись не всегда последовательна
§ Одновременная запись в два тома — тоже боль
Использование LVM thin provisioning. 2014
Совместимость с популярными сборками Linux
§ OpenSUSE, Gentoo, ArchLinux, ... - ???
§ Ubuntu 14.04 — LVM нужной версии, есть пакет thin-provisioning-tools,
без которого нельзя грузиться с thin LV и монтировать их через
fstab
§ Ubuntu 12.04 — LVM из бэкпортов, thin-provisioning-tools я собрал
статически:
§ http://ns2.1888.spb.ru/thin-provisioning-tools_0.2.8-1_amd64.deb
§ Для 14.04 и 12.04 нужны хуки для initramfs: http://goo.gl/2ckrdG
Использование LVM thin provisioning. 2014
О чем еще необходимо помнить
§ Область метаданных может переполниться
§ Чем больше снэпшотов — тем быстрее заполняется область
метаданных
§ Новые блоки данных заполняются нулями перед их отдачей в
thin LV, к счастью, это можно отключить командой
§ lvchange -Zn vg0/thin_pool (только вот в LVM 2.02.95 такой
команды еще нет)
Использование LVM thin provisioning. 2014
Выводы:
§ Пользователи Linux должны страдать
§ Варианты страдания различаются:
§ ZFSOnLinux
§ BTRFS
§ LVM thin provisioning
§ Но суть остается неизменной!
§ man lvmthin — отличное чтение на ночь
Использование LVM thin provisioning. 2014
Традиционный слайд
§ DevOps-40: Надо чаще встречаться!
Использование LVM thin provisioning. 2014
С вами был Александр Чистяков,
главный инженер Git in Sky
alex@gitinsky.com
http://gitinsky.com
http://meetup.com/DevOps-40
Пожалуйста, ваши вопросы.
Спасибо за внимание!

My talk on using LVM thin provisioning from SPbLUG/DevOps-40 meetup 25.06.14

  • 1.
    Использование LVM thin provisioning Вшколе и дома Александр Чистяков, главный инженер Git in Sky, 2014
  • 2.
    Зачем? § On-demand blocksallocation: § Старый добрый overselling § «Прозрачное» добавление ресурсов по необходимости § Побочный эффект — возможность создания снэпшотов в «правильном» порядке Использование LVM thin provisioning. 2014
  • 3.
    Отсортируем в порядкеважности для меня § Побочный эффект — возможность создания снэпшотов в «правильном» порядке § «Прозрачное» добавление ресурсов по необходимости § Старый добрый overselling* * Мы не оверселлим! Использование LVM thin provisioning. 2014
  • 4.
    Как снэпшоты работалираньше? Использование LVM thin provisioning. 2014
  • 5.
    Как снэпшоты работалираньше? § Доктор, откуда у вас такие картинки? § Это blktrace + iowatcher § По оси X — время, по оси Y — смещение относительно начала диска § Исследуется запуск bonnie++ (последовательная запись, потом перезапись записанного, потом случайное чтение, потом создание большой пачки файлов) Использование LVM thin provisioning. 2014
  • 6.
    Как снэпшоты работалираньше? § Алгоритм последовательной записи: § Сначала читаются данные, которые были на разделе исходно § Потом они записываются на отдельный раздел (кстати, он может переполниться) § Потом, наконец, данные записываются куда следует § Вместо одной записи — чтение и две записи Использование LVM thin provisioning. 2014
  • 7.
    Как работает безснэпшотов? Использование LVM thin provisioning. 2014
  • 8.
    Как организовать LVMthin provisioning? § pvcreate и vgcreate — как обычно § lvcreate --size 1700G --type thin-pool --thinpool thin_pool vg0 § ^ Создаем ThinPoolLV (ThinDataLV + ThinMetaLV) § Можно разбить на два этапа: § lvcreate -n pool0 -L 1600G vg0 § lvcreate -n pool0meta -L 110M vg0 § lvconvert --thinpool vg/pool0 --poolmetadata vg/pool0meta Использование LVM thin provisioning. 2014
  • 9.
    Как организовать LVMthin provisioning? § Создание thin provisioned томов: § lvcreate -V300G -T vg0/thin_pool --name var § lvcreate -V100G -T vg0/thin_pool --name home § Создание thin снэпшотов: § lvcreate -s -n home_`date +"%F-%H"` /dev/vg0/home § lvcreate -s -n var_`date +"%F-%H"` /dev/vg0/var Использование LVM thin provisioning. 2014
  • 10.
    Как теперь работаетснэпшот? § Thin том (thin снэпшот) — это блоки данных и метаданные, описывающие их принадлежность § Одна запись — это (почти) всегда одна запись, если не считать метаданные § Новые данные пишутся последовательно, старые — в зависимости от того, принадлежат или нет они какому- нибудь снэпшоту § ^ Последовательная запись не всегда последовательна § Одновременная запись в два тома — тоже боль Использование LVM thin provisioning. 2014
  • 11.
    Совместимость с популярнымисборками Linux § OpenSUSE, Gentoo, ArchLinux, ... - ??? § Ubuntu 14.04 — LVM нужной версии, есть пакет thin-provisioning-tools, без которого нельзя грузиться с thin LV и монтировать их через fstab § Ubuntu 12.04 — LVM из бэкпортов, thin-provisioning-tools я собрал статически: § http://ns2.1888.spb.ru/thin-provisioning-tools_0.2.8-1_amd64.deb § Для 14.04 и 12.04 нужны хуки для initramfs: http://goo.gl/2ckrdG Использование LVM thin provisioning. 2014
  • 12.
    О чем ещенеобходимо помнить § Область метаданных может переполниться § Чем больше снэпшотов — тем быстрее заполняется область метаданных § Новые блоки данных заполняются нулями перед их отдачей в thin LV, к счастью, это можно отключить командой § lvchange -Zn vg0/thin_pool (только вот в LVM 2.02.95 такой команды еще нет) Использование LVM thin provisioning. 2014
  • 13.
    Выводы: § Пользователи Linuxдолжны страдать § Варианты страдания различаются: § ZFSOnLinux § BTRFS § LVM thin provisioning § Но суть остается неизменной! § man lvmthin — отличное чтение на ночь Использование LVM thin provisioning. 2014
  • 14.
    Традиционный слайд § DevOps-40:Надо чаще встречаться! Использование LVM thin provisioning. 2014
  • 15.
    С вами былАлександр Чистяков, главный инженер Git in Sky alex@gitinsky.com http://gitinsky.com http://meetup.com/DevOps-40 Пожалуйста, ваши вопросы. Спасибо за внимание!