Всем привет! Кто-нибудь уже пробовал LizardFS () в качестве альтернативной распределённой файловой системы? Выглядит перспективно и, на первый взгляд, менее сложный, чем Ceph, ведь похоже, что его можно запустить всего на двух узлах. Просто интересно, можно ли его как-нибудь связать с ZFS... Есть какие-нибудь отзывы?
casalicomputers
Guest
0
28.04.2015 17:29:00
Серьезно, совсем никого? Насколько мне известно, это форк MooseFS... Прежде чем начну с ним возиться, хотелось бы узнать, кто-нибудь вообще его с Proxmox (или чем-то еще) использовал и как он себя показывает.
blackpaw
Guest
0
05.12.2015 09:52:00
Я сейчас сам разбираюсь, так что пока не могу ответить на твой вопрос. А ты попробовал?
Erk
Guest
0
06.12.2015 00:52:00
LizardFS получает положительные отзывы за производительность, функциональность и стабильность, но пока я не могу найти много документации. По-моему, LizardFS появилась на основе MooseFS, когда она стала открытой в мае 2008 года, и документация для MooseFS должна быть применимой. Не знаю, почему LizardFS отделилась от MooseFS.
blackpaw
Guest
0
06.12.2015 02:01:00
Ха! Мне кажется, с moose отказоустойчивости или резервного копирования на основном сервере метаданных нет, если ты не купишь подписку, так что если он упадет, ты в большой беде. Немного беспокоюсь, можно ли мне запускать chunk и metadata сервера прямо на нодах Proxmox, требования к памяти и CPU, вероятно, слишком высоки. Список пользователей кажется очень тихим, всего несколько постов в месяц — не очень хороший знак.
morph027
Guest
0
16.12.2016 09:11:00
Хм, тоже заинтересован. Возможно, настрою тестовую среду и попробую сломать кое-что.
blackpaw
Guest
0
19.12.2016 13:51:00
Наконец-то добрался до настройки тестовой среды. 3 контейнера Debian (по одному на каждый узел Proxmox) – 256 ГБ хранилища, основанного на ZFS RAID10 – 2 ГБ ОЗУ – 2 ядра – 1 мастер, 2 сервер-тени – chunkserver – веб-сервер. 1 Гбит Ethernet. Запустил fuse-клиент на proxmox-сервере (3 узла). Потребовалось несколько часов, чтобы привыкнуть к компонентам системы. Как только разберешься, все становится логичным. Гораздо проще, чем Ceph, немного сложнее, чем Gluster. Документация значительно улучшилась по сравнению с тем, когда я в последний раз её смотрел. В следующий раз все пройдет гораздо быстрее. Провел первичное тестирование с парой ВМ, производительность оказалась на удивление хорошей. Запись – 110 МБ/с на реплике 2, 80 МБ/с на реплике 3. Непосредственное чтение было абсурдно высоким – более 2800 МБ/с, IOPS тоже неплохие. Инструменты для проверки статуса вполне приличные – командная строка и неплохая веб-страница, отображающая серверы, диски и статус chunk. Легко перезапустить chunkserver и наблюдать за процессом восстановления. Мастер-метасервер является единой точкой отказа, и его ручное продвижение сервер-теней – настоящая морока. Я настроил собственное HA-решение, как описано здесь: с использованием ucarp и скриптов включения/выключения сети. На самом деле, работает довольно хорошо. Убейте или перезапустите мастер-сервер, записи приостанавливаются на несколько секунд, а затем происходит прозрачный переход на другой узел. Несколько раз мне удавалось запустить два мастер-сервера, но использовался только один. Цели просто потрясающие – гибкие и полезные – можно задавать отдельные уровни репликации для отдельных файлов и каталогов, так что ВМ в одном кластере могут иметь реплику 2, 3, 4 и т. д. или различные EC-кодировки. И можно менять их на лету, *включая* изменение стандартной цели реплики на EC-цель. Система просто начинает копировать, кодировать и удалять chunk по мере необходимости для соответствия новым требованиям. Забавно наблюдать. Система также автоматически балансирует диски. Расширение хранилища и замена дисков – пустяки, в отличие от Gluster, который может быть довольно болезненным. Кворум ... интересный, будет писать до тех пор, пока работает хотя бы мастер-метасервер. Согласно документации chunk версионируются, чтобы система знала, какие из них самые последние, когда chunkserver возвращаются в строй. Я заметил, что когда мне удалось создать блок "отсутствующих" chunk – т.е. принудительно записывать только на один chunkserver, а затем отключить его, система блокировала дальнейшие записи в эти chunk до тех пор, пока этот chunkserver не вернется в строй, поэтому я не смог создать split-brain. Слегка обеспокоен этим обзором на MooseFS: " MooseFS numbers are higher than is actually possible on the single GigE that client had. These numbers are supposed to include fsync time, and the GlusterFS numbers reflect that, but the MooseFS numbers keep going as data continues to be buffered in memory. That’s neither correct nor sustainable. The way that MooseFS ignores fsync reminds me of another thing I noticed a while ago: it ignores O_SYNC too. I verified this by looking at the code and seeing where O_SYNC got stripped out, and now my tests show the same effect " Это было в 2012 году, надеюсь, LizardFS улучшил этот код. Спрошу на userlist. Я, безусловно, заинтригован, думаю, весьма перспективно. Следующий шаг для меня – запуск chunkserver на реальном оборудовании и использование некоторых ВМ на нем в работе.
morph027
Guest
0
19.12.2016 13:59:00
Спасибо за отчет. Это только подогрело мой интерес, чтобы настроить тестовую среду.
blackpaw
Guest
0
19.12.2016 14:07:00
Круто, интересно будет узнать, что ты думаешь.
blackpaw
Guest
0
30.12.2016 11:42:00
Я провёл много тестов, и результаты оказались не очень хороши. Всё работает нормально, пока не возникают какие-то проблемы, но оказывается, что серверы метаданных очень нестабильные. Я могу надежно повредить каждую работающую VM, перезагрузив главный сервер метаданных. Цитата из моего сообщения в списке lizard:
********************************************************************************* Недавно закончил неделю стресс-тестирования lizardfs для обеспечения высокой доступности (HA) с разными конфигурациями, и результаты оказались не очень впечатляющие. Вкратце, при высокой нагрузке я наблюдаю потерю данных при имитации жёстких перезагрузок. Подробные результаты описаны ниже, вместе со скриптами HA.
Я не хочу критиковать lizardfs — я считаю его очень мощным и полезным и буду рад любым предложениям по улучшению. Я действительно хочу, чтобы он заработал для нас.
**Оборудование:** * 3 вычислительных узла, каждый с 3 ТБ WD Red * 4 в ZFS Raid 10 * Выделенное SSD-устройство для журналов (64 ГБ) * 1 ГБ * 2 Bond (balance-rr) выделен для lizardfs * 1 ГБ общедоступный IP * Я настроил плавающий IP для mfsmaster, который обрабатывается keepalived со скриптами для повышения/понижения уровня мастера. Keepalived хорошо справляется с IP, передавая его между узлами по мере необходимости и запуская скрипт повышения/понижения уровня. * Chunkserver работают хорошо, их можно включать/выключать, добавлять/удалять диски на ходу без проблем. Это действительно впечатляет.
Тем не менее, серверы метаданных кажутся довольно хрупкими. Несколько раз я наблюдал исчезновение фрагментов, когда главный сервер отключился, и его заменил резервный, а высокая нагрузка на ввод-вывод кажется самым большим показателем этого. Кроме того, они регулярно не запускаются после перезагрузки узла, даже после "mfsmetarestore -a". Я регулярно вижу эту ошибку:
``` mfsmaster[6453]: connected to Master mfsmaster[6453]: metadata downloaded 364545B/0.003749s (97.238 MB/s) mfsmaster[6453]: changelog.mfs.1 downloaded 1143154B/0.024354s (46.939 MB/s) mfsmaster[6453]: changelog.mfs.2 downloaded 0B/0.000001s (0.000 MB/s) mfsmaster[6453]: sessions downloaded 2762B/0.000365s (7.567 MB/s) mfsmaster[6453]: opened metadata file /var/lib/mfs/metadata.mfs mfsmaster[6453]: loading objects (files,directories,etc.) from the metadata file mfsmaster[6453]: loading names from the metadata file mfsmaster[6453]: loading deletion timestamps from the metadata file mfsmaster[6453]: loading extra attributes (xattr) from the metadata file mfsmaster[6453]: loading access control lists from the metadata file mfsmaster[6453]: loading quota entries from the metadata file mfsmaster[6453]: loading file locks from the metadata file mfsmaster[6453]: loading chunks data from the metadata file mfsmaster[6453]: checking filesystem consistency of the metadata file mfsmaster[6453]: connecting files and chunks mfsmaster[6453]: calculating checksum of the metadata mfsmaster[6453]: metadata file /var/lib/mfs/metadata.mfs read (26 inodes including 13 directory inodes and 13 file inodes, 10548 chunks) mfsmaster[6453]: running in shadow mode - applying changelogs from /var/lib/mfs terminate called after throwing an instance of 'std::invalid_argument' what(): stoull Aborted ```
Оказывается, единственный способ остановить это — перезапустить *мастер*, к которому он подключается. В худшем случае — имитировать катастрофическое отключение электроэнергии, что я и сделал, вызвав жёсткую перезагрузку каждого сервера ("echo b > /proc/sysrq-trigger"). Я выполнил это с системой lizardfs, полностью восстановившейся с 1 мастером и двумя резервными копиями. На каждом узле работали 3 VM — лёгкая нагрузка для нашей системы. После перезагрузки резервный мастер не запустился, и пропало 683 фрагмента, диапазон от каждой работающей VM.
В текущем состоянии это непригодно для производственной системы с нашей точки зрения. Мы не можем вручную контролировать службы и восстанавливать резервные копии каждый раз, когда узел падает, даже в лучшем из центров обработки данных, не говоря уже о небольшом SMB, как мы. Как мне кажется, серверы метаданных, возможно, и chunkserver, не должным образом сбрасывают данные на диск. Это хорошо для производительности, но плохо для целостности данных.
Я не упомянул в списке кое-что, потому что показалось не совсем уместным, что тот же кластер еще и запускал том Gluster 3.8.7, шардированный, с репликами 3. Он выдержал все те же стресс-тесты и ни разу не подвел. Виртуальные машины, размещенные на нем, все автоматически запускались, а он сам восстанавливался в течение нескольких минут после перезагрузок. Может, пора снова взглянуть на sheepdog.
Alessandro 123
Guest
0
07.04.2017 08:49:00
Привет! Можешь скинуть ссылку на твою переписку в lizard mailing list? Я все еще оцениваю gluster и lizard, и заметил серьезные недостатки в обеих системах. У lizard нет HA, а master-серверы кажутся ненадежными. Gluster в версии 3, но в нем есть ошибки, связанные с потерей данных, которые неприемлемы для софта версии 3. Они были бы неприемлемы даже для бета-версии (расширить общий том нельзя, не испортив файлы).
blackpaw
Guest
0
08.04.2017 00:07:00
Sourceforge, к сожалению: Обсуждений там на самом деле довольно мало, большинство — на их странице GitHub issues: Они вроде как начали свои собственные форумы: Но там тихо.
Я сделал ощутимый прогресс в создании надежного HA-решения с помощью скриптов keepalived, оно хорошо пережило жёсткие сбросы и перезагрузки основных серверов.
Пока что остаюсь с Gluster: подход Gluster к мета-серверам в режиме active/active *очень* надежен. Даже с keepalived, shadow-серверами и meta-логгерами, я не готов доверять одному главному мета-серверу, failover всё ещё кажется немного ненадежным. Gluster демонстрирует гораздо лучшее быстродействие при записи на реплике 3 и IOPS.
Но мои потребности довольно специфические — SMB с тремя смешанными вычислительными/хранилищными серверами, что идеально подходит для Gluster rep 3 volume. Если бы мне нужно было запускать больше узлов и динамически изменять хранилище, я бы всерьез рассматривал LizardFS/MooseFS, они безумно гибкие в этом отношении, и я обнаружил, что они очень надёжны при добавлении дисков и изменении целей файлов. Gluster, в свою очередь, очень негибок в отношении геометрии узлов/brick, и, честно говоря, мысль о добавлении дополнительных brick на узел вызывает у меня страх.
Прежде чем кто-то упомянет Ceph — производительность на небольших кластерах отстой, сложный в администрировании, и кажется, что в текущих релизах у OSD и мониторов регулярно "слетают" под нагрузкой. У нас нет неограниченных средств на покупку памяти, CPU и высокопроизводительных IBM SSD.
Видать, команда LizardFS работает над прямым интерфейсом QEMU, что должно улучшить производительность — больше никаких fuse. Но опять же, там тишина.
Alessandro 123
Guest
0
09.04.2017 14:29:00
Моя главная проблема с LizardsFS/MooseFS в том: когда клиент пишет на один chunkserver, а затем этот chunkserver реплицирует данные на другой, что произойдет в случае сбоя "первичного" chunk server между записью клиента и первой репликацией? Клиент получит ACK от chunk server (потому что запись прошла успешно), но после этого chunk server упал, и данные еще не реплицированы. Это означает потерю данных, и никто об этом не знает (нет ошибки ввода-вывода на клиенте, потому что данные были записаны, и клиент отключился).
guletz
Guest
0
12.06.2018 17:44:00
... но данных не так много. Если я правильно понимаю документацию, то потери данных не будет: когда клиенту нужно что-то записать, он получит все чанк-серверы и inode, куда данные будут отправлены. Так что, если клиент получит эту информацию, то при выключении мастера потери данных не произойдет. Только новые задачи на запись будут отложены до тех пор, пока не будет продвинут один из shadow-серверов в мастера. Как я уже говорил, это всего лишь мои предположения, но на этой неделе я собираюсь протестировать этот сценарий. В остальном, я думаю, что LizardFS – это интересный вариант. Я начал тестировать LizardFS и на первый взгляд, это очень удобный инструмент для меня. Если кому-то еще это интересно, дайте знать, чтобы я мог поделиться своим опытом.
arglebargle
Guest
0
19.04.2019 05:28:00
Извините, что воскрешаю такую старую тему, но только сейчас настраиваю несколько распределённых файловых систем для тестирования, и lizardfs в списке. Официальные пакеты 3.13 RC1 немного сломаны, так что вчера я потратил время на слияние PR с исправлениями и сборку неофициальных debian пакетов. Если кому-нибудь будет интересно ещё раз посмотреть на lizardfs теперь, когда доступна нормальная отказоустойчивость, я выложил .debs на GitHub под foundObjects/lizardfs. Судя по тому, что я читаю, их система HA работает довольно хорошо, а производительность файловой системы отличная. Сейчас просто настраиваю всё, пройдет какое-то время, прежде чем я смогу сделать какие-либо сравнения с gluster, ceph или moosefs.
arnaudd
Guest
0
23.04.2019 01:19:00
Привет, был бы заинтересован протестировать твои DEB-пакеты и самому немного потестировать.
blackpaw
Guest
0
09.04.2017 15:01:00
Думаю, запись считается завершенной только после записи всех фрагментов, но я не уверен на 100%. Кстати, с erasure coding клиент записывает на все chunkservers одновременно, а не последовательно, как со стандартной репликацией.
Alessandro 123
Guest
0
09.04.2017 15:18:00
Не люблю EC. Слишком сложно при аварийном восстановлении. Приходится восстанавливать файл из фрагментов и кодов стирания.
Alessandro 123
Guest
0
09.04.2017 18:53:00
И что произойдет в случае катастрофического сбоя master во время записи? Тень, возможно, немного устареет, и это может привести к потере данных.