пятница, 17 июля 2009 г.

Евангелист файловых систем и лидер мнений Валери Аврора - Интервью (часть 1)

Совсем недавно Джефф Лэйтон взял интервью у Валери Авроры - разработчика файловых систем и евангелиста открытого кода. Поговорили на весьма широкий круг тем, включая её вклад в различные файловые система, о ChunkFS и Union file system, об экосистеме разработчиков файловых систем.




Есть много авторитетных людей в мире Linux. О многих знает и широкая публика, но многие остаются в тени и известны только в очень узком кругу. Валери Аврора - лидер мнений не только среди разработчиков Linux, но и в среде свободного и открытого программного обеспечения в целом. Она сделала весомый вклад в разработку ChunkFS и в разрабатываемую в данный момент Union file system для Linux ядра.

В течение нескольких последних лет разработка файловых систем для Linux напоминала болото. Сообществу хватало ext2 и ext3. Конечно, предпринимались попытки внести что-то новое с разработкой ReiserFS, но в целом разработка файловых систем в сообществе остановилась. Валери, понимая опасность такого застоя, организовала первый Linux File Systems Workshop (семинар, посвященный файловым системам для Linux). Кроме того она отметилась участием в Fast09.

Именно при её непосредственном участии сообщество осознало необходимость в продолжении разработки файловых систем. Представление об этом и о неслучайности её появления с такими идеями можно получить зайдя на её сайт (на английском).

Джефф Лэйтон Пожалуйста, представьте себя, расскажите немного о своей деятельности и о том, чем вы занимаетесь в данный момент.

Валери Аврора Я выросла в Нью-Мексико (такой штат между Техасом и Аризоной), выпасая коз и выращивая лошадей. Образование моё было нерегулярным, до такой степени, как это может быть у наименее религиозного ребёнка в округе, учащегося дома. Но при этом оно было достаточным для поступления в "не очень крутой" технический университет Нью-Мексико. Я получила диплом по специальностям компьютерные науки и математика и получила свою первую работу программиста, прочитав объявление в разделе "Требуется помощь" в журнале Albuquerque (самая крупная ежедневная газета штата).
На сегодняшний день я живу в жилом комплексе в деловой части Сан Франциско с двумя котами и Roomba. Будучи уникальной индивидуальностью, работаю неполный рабочий день в Red Hat, как разработчик файловых систем, а также как научно-популярный писатель и консультант по вопросам, связанным с Linux. Мне нравится иметь больше одной работы; скука - этой мой злейший враг и новое занятие каждую неделю удерживает меня в заинтересованном состоянии и развлекает.

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

ВА Наверное, это будет долго, но попробуем.
Я не была заинтересована в файловых системах до того момента, как я получила работу, связанную с разработкой одной из них - ZFS, в 2002. А так как я не очень много знала о файловых системах, я читала и перечитывала исследовательские статьи о файловых системах и посетила конференцию о файловых системах USENIX (ДЛ: Fast09 - последняя на сегодняшний день). В том малом числе хороших книг об операционных системах, которое я видела, говорится очень мало о файловых системах, и обычно описывается архитектура VFS в стиле Sun и дисковый формат типа FFS.
После SUN я перешла в IBM в группу Феодора Тс'О (Theodore Ts'o). Мы занимались в основном бесконечной поддержкой пользователей, что было довольно весело, так как в Sun мне вообще не приходилось общаться с клиентами. В свободной время я и Тед были поглощены безумными идеями добавить в ext2 и ext3 разные возможности, которые бы не требовали 20-30 лет для их разработки. В то время разработкой файловых систем для Linux занимались только в Namesys (компания Ганса Рейзера), и их бизнес-модель не казалось очень жизнеспособной.
Затем я перешла в Intel и у меня появилось время, чтобы воплотить все эти сумасшедшие идеи и прийти к множеству новых. Одной из них был грязный бит ext2, который позволял пропускать проверку после краха системы, если файловая система в тот момент находилась в режиме ожидания. Другой такой идеей было условное обновление времени последнего доступа, что теперь, три года спустя, является стандартным поведением системы. Обсуждая с Арианом ван де Веном вопрос, почему идея с грязным битом не сработала при групповой блокировке блоков системы, мы пришли к идее ChunkFS, над которой я и начала работать.
Это казалось бессмысленным, но при этом, как же Linux может оставаться конкурентоспособным в отсутствие разработчиков, работающих над файловыми системами для него полный рабочий день? Таким образом, вместе с Захом Брауном и Арианом, мы организовали первый малобюджетный семинар о файловых системах в Linux, державшийся на скотче, в надежде, что просто общение между существующими разработчиками файловых систем может привести нас к пути увеличения финансирования этой области. Не знаю, принесло ли это какую-то пользу, но если это так, то это можно назвать моим самым важным вкладом с разработку файловых систем для Linux.
Тогда я начала свой консультационный бизнес и сделала довольно много для chunkfs и ext2/3/4 (распараллеливание fsck), а сейчас работаю в Red Hat. В данный момент я работаю над union mounts вместе с Яном Бланком(Jan Blunck), это основанный на VFS подход к соединению различных файловых систем.
На своих компьютерах я всегда использую систему ext3 с опцией noatime, или относительным atime, если он доступен. Также я отключаю параноидальные проверки файловой системы командами "tune2fs -i 0″ и "tune2fs -c 0″. Еще я отключаю SELinux, который активно использует расширенные атрибуты да и вообще является весьма спорной технологией. Сейчас для моей работы над 64-битной версией ext4 я создаю большие распределенные 16TB+ файлы в XFS и монтирую уже их для получения устройства объемом 16TB+. (Вы, конечно, можете сделать это на ext4 при помощи md, но усилия не стоят того). В общем я использую ext3 как основную систему и XFS, если ext3 не может сделать то, что мне нужно. Когда я перейду на другую файловую систему, это будет btrfs.
После выходы 2.6.30 я также начала добавлять опцию data=ordered, так как сейчас базовое поведение для ext3 это data=writeback, что может вылиться в гаденькие повреждения файлов во время краха системы.

ДЛ Вы упомянули переход на btrfs. Люди всегда интересуются сравнениями между btrfs и ZFS и дискуссия обычно принимает очень острый оттенок, но может быть Вы скажете нам своё мнение об этих двух системах? Предполагаете ли Вы в ближайшем будущем какую-либо систему, которая будет "лучше" чем btrfs или ZFS (можете понимать под "лучше" что угодно).

ВА Почему-то файловые системы превратили всех нас в фанатиков. В старые времена, я поняла, что фанатизм - это очень утомительное дело, поэтому я предпочитаю конкретные факты.
ZFS и btrfs похожи как по структуре так и по целям. Общими свойствами можно назвать копирование при записи, контрольные суммы, изменяемые снапшоты, пулы для хранения информации, простое администрирование и еще много всего очень обсуждаемого в сообществе. При этом более интересны различия в архитектуре.
На самом высоком уровне ZFS использует концепцию плоских деревьев из указателей на блоки, стиль FFS и переменный размер блока, навеянный планировщиком памяти ядра SLAB. Btrfs использует использует дружественные к COW (копирование при записи) B-деревья (в том виде, в каком это представлено Охадом Родехом (Ohad Rodeh) на LSF ‘07) и экстенты. На самом деле btrfs ещё немного лучше, чем можно подумать: каждый кусок данных или метаданных в btrfs - это объект в B-дереве, и эти объекты группируются вместе вперемешку - без оглядки на их тип. ZFS сужает абстракцию всех метаданных и данных до объектов и относящихся к ним операций; btrfs сузила эту абстракцию до листьев B-дерева. После этого самым интересным стало решение проблемы присвоения ключей объектам этого дерева и их упорядочения.
Ну и сейчас я могу сказать своё личное/фанатичное мнение. С самого начала, я думала, что подход ZFS был проще и чище - в то время код для управления B-деревьями и экстентами был очень усложнён и добавление к нему копирования при записи и контрольных сумм скорее всего привело бы к взрыву мозга. Но после того, как Охад Родех упростил реализацию и сделал её более надёжной, а Крис Мэйсон (Chris Mason) представил свою концепцию "всё есть лист дерева", моё мнение изменилось. Я неофит этого подхода.

И вторая часть.

3 комментария:

  1. Анонимный18 июля 2009 г., 16:31

    Крутая тетя, а ещё блондинка!

    ОтветитьУдалить
  2. Еще эта крутая тетя написала весьма хорошее сравнение ZFS и BTRFS. Даром что блондинка, сравнение рулит. Урла на ее статью про это сравнение вставлена в подпись.

    ОтветитьУдалить
  3. Спасибо, как раз вчера читал. Там уж совсем ZFS опускается, а Btrfs "вся в масле" ;-)
    Например, если верить англовики, то ZFS не поддерживает контрольные суммы железно зашитые в Core i7, а так как контрольные суммы считаются просто на всё, то это в Btrfs даёт, наверное, очень неслабое увеличение производительности в восемь то потоков.

    ОтветитьУдалить