zfs - файловая система будущего

35
Git in Sky, 2013 ZFS — файловая система будущего

Upload: alex-chistyakov

Post on 16-Jun-2015

655 views

Category:

Technology


0 download

DESCRIPTION

Доклад на конференции "Использование технологий ОС Solaris в облачной инфраструктуре"

TRANSCRIPT

Page 1: ZFS - файловая система будущего

Git in Sky, 2013

ZFS — файловая система будущего

Page 2: ZFS - файловая система будущего

Git in Sky, 2013

Пара слов о будущем

● Первый релиз ZFS был в 2005-м● 2005-й — не совсем «будущее»● «Конверсионные военные технологии»?● «Нанопокрытие» в «Телемагазине»?● «Парадокс близнецов»:● Пока коллеги несли вахту в космосе, здесь,● на Земле, многое изменилось

Page 3: ZFS - файловая система будущего

Git in Sky, 2013

Итак, кто я?

● Ваш проводник по современной Земле● (Веб) разработчик с большим стажем● Инженер по эксплуатации веб-проектов с большим стажем

● Инженер компании Git in Sky● ZFS-аддикт● ^ а можно ли верить словам наркомана?

Page 4: ZFS - файловая система будущего

Git in Sky, 2013

Кто вы?

● Вернувшиеся на Землю космо(астро?)навты● Архитекторы программных систем● CIO, CTO● Веб-разработчики● Системные администраторы (инженеры)

Page 5: ZFS - файловая система будущего

Git in Sky, 2013

Зачем?

● Файловая система хранит данные● Хорошая файловая система обеспечивает быстрый доступ и быструю модификацию

● UNIX way:● Файловая система хранит данные● Менеджер томов управляет томами● fdisk создает разделы на дисках● <другая программа> делает бэкапы● Engineer's way:● challenge the UNIX way

Page 6: ZFS - файловая система будущего

Git in Sky, 2013

В чем проблема?

● Языков программирования — 100 и больше● Современных FS — 10 и вряд ли больше ● http://en.wikipedia.org/wiki/Memory_hierarchy● Rotational media — медленно● Non-rotational media — дорого, относительно ненадежно, относительно ново

● Нужен компромисс● ^ (пока еще)

Page 7: ZFS - файловая система будущего

Git in Sky, 2013

Немного истории

● FAT — 1977● HFS — 1985● JFS — 1990● VxFS — 1991● ext2 — 1993● NTFS — 1993● ReiserFS — 2001● ZFS — 2005● btrfs — 2009

Page 8: ZFS - файловая система будущего

Git in Sky, 2013

Возможности ZFS

● Управление томами● Управление разделами● Двухуровневое кэширование● Контроль целостности данных● Сжатие данных● Дедупликация● Снэпшоты● (псевдо)Репликация

Page 9: ZFS - файловая система будущего

Git in Sky, 2013

Словарик

● «физический том» - «пул»● «раздел» - «дейтасет»● «логический том» - «ZVOL»● «RAID1» - «mirror»

● «RAID5» ~ «raidz», «raidz1»● «RAID6» ~ «raidz2»● ^ нет времени объяснять, создавайте пул!● Бывает также «raidz3»● ^ цифра — просто число parity disks

Page 10: ZFS - файловая система будущего

Git in Sky, 2013

Создание пула

● zpool create <name> <vdev1> ... <vdevN>● vdev - <type> <dev1> ... <devN> ● vdev types: «disk», «file», «mirror», «raidz», «raidz2», «raidz3», «spare», «log», «cache»

● «raidz» - это такой RAID5 без проблемы «RAID5 write hole»

● vdevs не могут быть вложенными (нельзя сделать зеркало зеркал и т.п.)

● Про «log» и «cache» поговорим отдельно

Page 11: ZFS - файловая система будущего

Git in Sky, 2013

Операции с пулом

● zpool destory - никогда так не делайте!● zpool export - «отключить» пул● zpool import - «подключить» пул● zpool replace <name> <dev1> <dev2> - заменить устройство dev1 устройством dev2

● ^ при этом выполнится операция «resilvering», при которой вся занятая часть пула прочитывается и перераспределяется с учетом добавленного устройства

● Это еще не всё!

Page 12: ZFS - файловая система будущего

Git in Sky, 2013

Управление дейтасетами

● pool0 исходно смонтирован в /pool0● /etc/fstab по умолчанию не используется● точка монтирования — свойство раздела● zfs create pool0/nfs-exports● ^ точка монтирования наследуется и будет /pool0/nfs-exports

● zfs set mountpoint=/var/lib/nfs-exports pool0/nfs-exports

● ^ установим другую точку монтирования (целевой каталог обязательно должен быть пустым!), изменения мгновенны

Page 13: ZFS - файловая система будущего

Git in Sky, 2013

Управление дейтасетами

● zfs umount <name>● zfs mount <name>● zfs rename <oldname> <newname>

● zfs userspace <name>● zfs groupspace <name>● ^ показывают, сколько места занимают файлы пользователей/групп

Page 14: ZFS - файловая система будущего

Git in Sky, 2013

Управление дейтасетами

● zfs set userquota@name=size ● ^ ограничивает выделенное пространство

Page 15: ZFS - файловая система будущего

Git in Sky, 2013

Свойства дейтасетов

● zfs get all zpool/live● пул свойство значение происхождение● zpool/live quota 3.91T local● zpool/live recordsize 128K default● zpool/live compression lz4 local● zpool/live primarycache all default● zpool/live secondarycache all default● zpool/live sync disabled local● И это еще не всё!

Page 16: ZFS - файловая система будущего

Git in Sky, 2013

Кэширование

● ARC (adaptive replacement cache) — одна из главных составляющих ZFS

● Кэширует frequently used и recently used records, динамически распределяя память между ними

● L2ARC — кэш второго уровня (тип vdev «cache», обычно используется SSD)

● Необходимо помнить, что при использовании L2ARC из ARC выделяется память под headers, что сказывается на эффективном размере ARC

Page 17: ZFS - файловая система будущего

Git in Sky, 2013

Размер ARC в памяти

Page 18: ZFS - файловая система будущего

Git in Sky, 2013

Сколько отдать под ARC?

● MRU Ghost / MFU Ghost — «уже были в кэше, но быливытеснены,и попалив негоопять»

● меньше - лучше

Page 19: ZFS - файловая система будущего

Git in Sky, 2013

Размер L2ARC

Page 20: ZFS - файловая система будущего

Git in Sky, 2013

Снова свойства дейтасетов

● zpool/live primarycache all default● zpool/live secondarycache all default● Варианты вместо «all»:● «metadata» - только метаданные● «none» - вообще ничего● По умолчанию - «all», что означает «кэшировать всё»

Page 21: ZFS - файловая система будущего

Git in Sky, 2013

Снова операции с пулом

● Контроль целостности данных:● zpool scrub pool0 — запустить проверку● zpool scrub -s pool0 — прервать проверку● ZFS хранит контрольные суммы каждой записи и проверяет их соответствие

● В связи с тем, что под действием злых сил из космоса битики протухают — это очень здравая идея

● А иногда и космос не при чем● zpool status <name>

Page 22: ZFS - файловая система будущего

Git in Sky, 2013

Иногда протухает сама железка

● Да, я уже заказал новую

Page 23: ZFS - файловая система будущего

Git in Sky, 2013

Сжатие данных

● zpool/live compression lz4 local● compression: «on», «off», «lzjb», «gzip-N» (1-9), «gzip» (6), «zle», «lz4»

● Раньше default был «lzjb», сейчас — «lz4»● Каждый record сжимается отдельно, чем больше recordsize, тем лучше сжатие

● Я включаю сжатие всегда — чем меньше данных на диске, тем быстрее они читаются

● Если данные уже сжаты — можно отключать● zroot/nfs/old-mysql refcompressratio 2.49x

Page 24: ZFS - файловая система будущего

Git in Sky, 2013

Дедупликация?

● Нет, не слышал!● Сравниваются контрольные суммы записей, если совпадают — вторая копия не хранится

● Не бесплатно — таблицы дедупликации хранятся в RAM (есть патчи для хранения их на SSD, но они не в открытом доступе)

● ^ вот поэтому я ее никогда не использую — RAM более дорогой ресурс, чем пространство на диске

Page 25: ZFS - файловая система будущего

Git in Sky, 2013

Снэпшоты

● Снэпшот — мгновенное состояние системы● ZFS работает при помощи механизма CoW — данные никогда не перезаписываются

● Создание снэпшота происходит мгновенно● Практически не потребляют ресурсов (кроме места на диске)

● Проблемы начинались при 3000-6000 снэпшотов

● Сравните с LVM!● Но чудес не бывает — удаление снэпшотов достаточно ресурсоемко

Page 26: ZFS - файловая система будущего

Git in Sky, 2013

Работа со снэпшотами

● zfs snapshot <dataset>@<snapshot_name>● zfs snapshot zroot/vbox-images/client@clean ● Снэпшоты можно только читать● ^ на самом деле, их можно клонировать● zfs clone zroot/vbox-images/client@clean zroot/vbox-images/client-2

● Клоны снэпшотов — обычные дейтасеты (r/w)● Иерархия — дерево

Page 27: ZFS - файловая система будущего

Git in Sky, 2013

Сценарий использования №1

● Снэпшоты — отличная защита от логического сбоя («хакер удалил весь контент»)

● Их можно делать хоть каждый час● Восстановление:● zfs rollback <snapshot_name>● ^ я никогда не использовал, деструктивно, убьет все более поздние данные

● zfs set mountpoint=/tmp1 zroot/orig_ds● zfs clone zroot/orig_ds@snap zroot/new_ds● zfs set mountpoint=/orig zroot/new_ds● ^ так мне нравится гораздо больше

Page 28: ZFS - файловая система будущего

Git in Sky, 2013

Сценарий использования №2

● Окружения разработчиков — большой дамп базы, нужен каждому свежий

● 10 окружений — 10 баз● 10 раз вливать дамп?● Дамп вливается один раз, после чего zfs snapshot, zfs clone и ряд других манипуляций

● ^ очень сильно экономятся время и место

Page 29: ZFS - файловая система будущего

Git in Sky, 2013

Репликация

● zfs send <snap_name> | zfs receive <name>● send читает данные с диска и пишет в stdout, receive — с stdin пишет на диск

● Это не было бы похоже на репликацию, если бы не

● zfs send -i <base_snapshot> <target_snapshot>● ^ генерит инкрементальные апдейты● Их можно пересылать по сети● Чтобы применять инкрементальные апдейты, целевой дейтасет должен быть немодифицированным (я ставлю в r/o)

Page 30: ZFS - файловая система будущего

Git in Sky, 2013

ZFS не умеет

● Наливать пиво● Работать на low-end железе● Быть кластерной файловой системой● Поддерживать флаг O_DIRECT вызова open()● ^ cache=none для KVM не работает● innodb_flush_method=O_DIRECT не работает

● ^ свойство sync=disabled — это то же самое

Page 31: ZFS - файловая система будущего

Git in Sky, 2013

ZFS бывает под

● Oracle Solaris 11● OpenSolaris — Illumos — Illumos-based distros (тысячи их!)

● FreeBSD● NetBSD (не пытайтесь дома)● MacOS X● Linux:● ZFS-FUSE● ZoL — kernel module● нельзя включить в ядро, CDDL — GPL

Page 32: ZFS - файловая система будущего

Git in Sky, 2013

В ZFS нельзя

● Начинать использование, не настраивая:● Нужно понимать характер нагрузки● Базы данных и системы виртуализации требуют recordsize=8k, а не 128k default

● Разделу, экспортированному по NFS, лучше поставить sync=disabled, иначе высокое latency

● Занимать пул более чем на 70-80%● ^ помните, у меня стояла quota? Специально поставлена!

Page 33: ZFS - файловая система будущего

Git in Sky, 2013

Бывают ли проблемы?

● http://goo.gl/GulrMQ — пишут , что нет (врут)● http://goo.gl/AUguXi — восстановление пула после сбоя вручную (ZFS не была причиной сбоя)

● За два года использования у меня был один сбой (ZFS не была причиной сбоя)

● Я поступил как читер — вместо ручного восстановления просто импортировал пул в Solaris 11, в версии ZFS которого проблема уже была исправлена

Page 34: ZFS - файловая система будущего

Git in Sky, 2013

Выводы

● ZFS — отличный продукт инженерной мысли● Вы можете не использовать ZFS, но теперь, после того, как я вам все рассказал,

● Вы должны придумать ответ на вопрос:● «Почему я еще не использую ZFS?»● (И это должен быть не стыдный ответ)

Page 35: ZFS - файловая система будущего

Git in Sky, 2013

Обязательный слайд

● Спасибо! С вами был● Александр Чистяков, инженер● Компания Git in Sky● [email protected]