суббота, 18 июля 2009 г.

Взбивая масляную ФС - интервью с Крисом Мэйсоном о Btrfs

На этот раз интервью Джефа Лэйтона с Крисом Мэйсоном (Chris Mason) - главой разработки ядра Linux в компании Oracle, зачинателем и главным разработчиком Btrfs. (Название интервью намекает на шуточную расшифровку "Btrfs - Масляная ФС", хотя основной вроде как является "ФС основанная на B-деревьях")

Джефф Лэйтон Чем мотивировалась разработка Btrfs? Был ли это ответ на ZFS от компании Sun?

Крис Мэйсон Начало разработки Btrfs было не так связано с ZFS, как с необходимостью для Linux иметь возможность работать с большими устройствами хранения, которые появятся в ближайшие десять лет.
Основная цель - гибкое управление хранением и предоставление возможности выполнять все стандартные задачи по администрированию системы в режиме online.

ДЛ Какими ключевыми особенностями обладает Btrfs, которые нужны людям?

КМ Одной из важнейших особенностей разработки Btrfs было то, что мы хотели сфокусироваться на возможностях, а не на одной только производительности. Это очень важно, что производительность у нас на уровне, но мы хотели быть уверенными, что в Btrfs есть средства, которые другие файловые системы Linux не могут с лёгкостью предоставить.
Одной из главных таких возможностей является снятие снимков путём копирования при записи, которое является базисом для большинства других продвинутых возможностей файловой системы. Снимки в Btrfs изменяемы и с них могут быть сняты другие снимки.
Также ключевой частью администрирования являются контрольные суммы данных и метаданных. Мы должны быть в состоянии обнаружить, когда диск отдаёт нам неверные данные и попытаться откорректировать их, прочитав их с другого зеркала (снимка) или отправив на дисковый массив запрос другой копии. Такой команды еще не существует, но мы планируем добавить её хотя бы в программный raid в Linux. Управление множеством устройств в рамках файловой системы - это то, что обеспечивает гибкость управления хранением данных в Btrfs. Эти устройства могут различаться по скорости и объему, и в долгосрочном периоде Btrfs сделает так, чтобы оптимизировать доступ к нем. Уровни raid также могут смешиваться, используя различные для данных и метаданных и проч.


ДЛ Вы, конечно, могли и не следить за развитием ZFS, но мне было бы интересно - не делали ли Вы сравнений её с Btrfs?

КМ Я еще не делал никаких сравнений производительности. При том, что у наших систем есть некоторые общие свойства, общий дизайн их обеих совершенно разный. Я не смотрел в код ZFS, но я надеюсь сделать сравнение на уровне дизайна в ближайшие месяцы.

ДЛ Одна из интересных особенностей Btrfs в том, как она работает с RAID - таким образом, что нам необязательно нужно использовать md. Можете сказать что-нибудь о RAID и Btrfs?

КМ Сейчас Btrfs может помещать на RAID и данные и метаданные. В данный момент эта возможность ограничена RAID-0, RAID-1, и RAID-10. Чтобы получить другие уровни RAID, Вам придётся использовать MD в Linux. Но RAID-5 и RAID-6 будут возможны в Btrfs в будущем.
Btrfs поверх MD будет работать просто как любое другое устройство хранения. По-умолчанию она будет зеркалировать метаданные, как если бы они находились на одном шпинделе, и Btrfs будет поддерживать только одну копию данных. Пока Btrfs еще не предоставляет RAID5 и RAID6, люди могут потестировать с MD для получения их свойств.
Основное отличие между raid из Btrfs и raid от MD в том, что Btrfs может отследить поврежденные данные, возвращённые устройством, при помощи контрольных сумм. Даже если мы не получим ошибку ввода-вывода, Btrfs будет знать, является ли блок данных корректным.
Во время перестройки RAID Btrfs может перестраивать только те блоки, которые используются файловой системой. Это приносит свои плоды в скорости перестройки. (Примечение Джеффа - такая возможность предполагает длительную разработку, которую не стоит недооценивать. С ростом объема дисков неимоверно возрастает возможность получения поврежденных блоков. Снижение времени перестройки снижает риск наткнуться на еще один повреждённый блок, что означает необходимость восстановления из резервной копии.)
С точки зрения управления, Btrfs размечает пространство на дисках на большие ломти (блоки) и потом использует эти ломти для создания конкретных уровней RAID. Это значит, что Ваш уровень RAID не завязан на количество устройств, используемых файловой системой, и это делает процесс добавления, удаления или замены гораздо более лёгким. (Прим. Джеффа - это ещё одно огромное преимущество Btrfs перед другими файловыми системами. Возможность лёгкого добавления или удаления устройств описана в Btrfs wiki - на английском.)

ДЛ С текущей версий возможно что-то наподобие?

mkfs.btrs /dev/sda /dev/sdb /dev/sdc /dev/sdd -R raid10

КМ Сегодня Вы можете сделать так:

mkfs.btrfs -m raid1 -d raid10 /dev/sda /dev/sdb /dev/sdc /dev/sdd

И Вы получите метаданные на raid1, а данные на raid10. raid10 будет использовать все четыре диска, а raid1 будет одновременно использовать два. Да, Btrfs позволяет задавать различные значения для данных и метаданных.
Идея состоит в том, чтобы raid5 и raid6 могли работать точно также.

ДЛ Не думали ли Вы о прямой "стыковке" Btrfs и md таким образом, что нам можно будет делать это проще, чем сначала использовать md и потом строить файловую систему на md-устройстве?

КМ Кристоф Хелвиг (Christoph Hellwig) работает над абстрагированием некоторых частей MD, но он начинает с интегрирования их в модули DM. В долгосрочной перспективе я хочу, чтобы Btrfs использовала как можно больше кода из MD, но наиболее разумное место для такое использования - это xor-вычисления.

ДЛ Какова самая большая конфигурация Btrfs о тесте который Вы знаете сегодня?

КМ HP тестировала на 40TB raid-массиве, и я думаю это самый большой случай. У IBM также было объёмное оборудование для тестов, но они ограничили размер файловой системы во время тестов, чтобы все сравнить все файловые системы из Linux.

ДЛ Так как сейчас Btrfs уже в ядре, множество людей может протестировать её. Какого рода тестирование Вам бы хотелось видеть и каким наилучшим образом людям сообщать о проблемах и результатах?

КМ Я был бы счастлив видеть Btrfs в тестах всех активно используемых конфигураций. В настоящее время у нас возникли проблемы с задачами, связанными с базами данных, но мы надеемся исправить это к 2.6.31.

ДЛ Какие рекомендации для настройки Btrfs на наилучшую производительность Вы бы дали с оглядкой на то, что она всё ещё находится в экспериментальной стадии?

КМ Btrfs использует алгоритм crc32c для контрольных сумм данных, так как некоторые процессоры могут вычислять по нему непосредственно в железе. Ядро уже поддерживает это на процессорах Nehalem, если скомпилирован модуль crc от Intel. Это очень существенно влияет на работу.
Для всех, тестирующих на SSD рекомендую использовать "mount -o ssd". Это сделает запись гораздо быстрее, особенно на SSD с высоким пенальти за случайную запись.




Также на эту тему:
Интервью с Валери Авророй - разработчиком ChunkFS (и его продолжение).
blog comments powered by Disqus