LINUX.ORG.RU

ZFS, MDRAID, или LVM?

 , , , ,


0

1

Доброе утро, ЛОР!

Есть три жестких диска: 2 по 1,5ТБ и один на 3ТБ. Из этого добра я хочу сделать себе «нехилый пулец» для хранения всего подряд, в том числе образа\тома с оффтопиком для KVM. Также есть диск на 320GB, на котором на данный момент живёт хостовая система (Gentoo ~amd64). Споткнулся я на вопросах «какую схему массива использовать» и «чем создавать пул»:

  • ZFS:
    • ++ ZVOL показался очень крутым и не особо тормозным решением для VM;
    • ++ ARC это офигенно (если докупить оперативки, чтоб и для VM хватило);
    • ++ Управляет массивами сама;
    • ?? Можно расшаривать тома по NFS или iSCSI средствами самой ZFS;
    • ?? ФС использует доп.прослойку в виде куска ядра Solaris;
    • -- RAIDZ требует дисков одинакового размера, и его потом (как я понял) невозможно нарастить.
    • -- Развитие ZFS on Linux остановилось на Zpool версии 28 (где-то прочитал, что Oracle начали жадничать).
  • LVM:
    • ++ Нативное линуксовое решение, включен в ядро;
    • ++ Для каждого тома можно задать нужную конфигурацию stripes/mirrors отдельно;
    • ++ Можно использовать LV как блочное устройство (для VM);
    • ?? Не ФС, а просто менеджер томов, фичи вроде сжатия зависят от выбора ФС;
    • -- Говорят, что LVM коряво работает с RAID (например, не читает данные параллельно с зеркала), сам не проверял.
  • MDRAID:
    • ++ Проверенное «веками» продакшна и энтерпрайза нативное решение для RAID, делает то, что от него требуется;
    • -- Поверх всё равно придётся поднимать LVM или ZFS.

С таким набором дисков не получится собрать прекрасный RAID10, поэтому в голове родилась адовая схема:

|-------------[RAID 1]-------------|
||------[RAID 0]------|            |
||[-1.5TiB-][-1.5TiB-]|[---3TiB---]|

В идеале, при такой схеме я получу скорость чтения трёх дисков (параллельное чтение) и скорость записи чуть выше, чем у одного (3ТБ-зеркало будет тормозить, конечно же). Однако, ни ZFS, ни MDRAID не умеют добавлять единичное зеркало к целому RAID0, им подавай зеркало к каждому из дисков. Родилась не менее адовая схема:

|----------[zpool mirror]----------|
||-----[/dev/md0]-----|            |
||[-1.5TiB-][-1.5TiB-]|[---3TiB---]|
Вроде бы то, что мне нужно, но так я потеряю фичу ZFS со stripe'ами переменного размера.

Что же делать, как же быть? Пилить 3ТБ-диск на два раздела, и каждый раздел делать зеркалом? Достать из загашника аналогичный 1,5ТБ-диск и собрать-таки RAIDZ, забыв при этом про 3ТБ-диск? Городить схему «MDRAID+ZFS», или вовсе делать RAID5 на LVM? Отрезать 1,5ТБ от большого диска под LVM для хостовой системы (с потенциальной потерей производительности у ZFS)?

Вообще, пул планируется использовать для хранения образа VM, всякого кина и музыки, торрентов, и местами более-менее критичной инфы.

★★★

Ответ на: комментарий от ptah_alexs

У btrfs нет возможности сделать subvolume доступным системе, как блочное устройство, на манер тома LVM или ZVOL, поэтому она пока отходит на второй план. :(

spijet ★★★ ()
Ответ на: комментарий от chaos_dremel

Смущает такой подход тем, что скорее всего будет очень страдать скорость записи (из-за попыток параллельной записи в один диск), да и скорость чтения тоже прихрамывать будет (хотя вряд ли упадёт сильно ниже схемы с тремя дисками). Схему не смог прочитать, потерялся тег code :)

spijet ★★★ ()
Ответ на: комментарий от spijet

Линух разберется как его писать). Вот схема:

|-------------[RAID 0]-------------|
||---[RAID 1]----||----[RAID 1]---||
||[-1.5TiB-][---3TiB---][-1.5TiB-]||

chaos_dremel ★★ ()
Ответ на: комментарий от dvrts

В его конфигурации? Мог бы и проще написать s/ZFS/ПНХ/

anonymous ()
Ответ на: комментарий от dvrts

Начни с команды zpool create

Какие ваши предложения?

anonymous ()
Ответ на: комментарий от dvrts

Я уже успел попробовать ZVOL на одном диске с ARC, ограниченным в 2G, на чтение очень неплохо, но запись так себе. Завтра попробую собрать по схеме, предложенной chaos_dremel.

spijet ★★★ ()

делай softraid+lvm+xfs для виртуалок, тюнь xfs, выравнивай всё и вся по инстукциям из гугля, и не мусори на форуме миллионной темой об одном и том же

anonymous ()
Ответ на: комментарий от anonymous

С XFS придётся использовать образы, а этого (по крайней мере для оффтопика) я хотел бы избежать. ZVOL тут привлекателен тем, что для него работает ARC.

spijet ★★★ ()
Ответ на: комментарий от spijet

softraid+lvm+xfs

lvm же, или ты из тех кто сразу все место выделяет под один lv, а потом удивляется для чего нужен lvm

anonymous ()
Ответ на: комментарий от spijet

zfs тут привлекателен тем, что ты купишь 70гб оперативки, а образы гораздо эффективнее в работе чем lv

anonymous ()

И напоследок

при такой схеме я получу скорость чтения трёх дисков (параллельное чтение)

Забудь! Скорость одного диска (для одного потока).

Закинув все диски в lvm получаешь макс. гибкость:

1. Вот этот lv не важный располагается на одном диске и не имеет зеркальных копий

2. Вот этот lv на двух дисках — одна копия — задействованы 2 диска на выбор

3. А вот этот lv особо важен — две копии — задействованы все 3 диска

anonymous ()
Ответ на: комментарий от spijet

Полностью соглашусь с анонимусом про LVM и XFS. LVM позволяет выделять KVM-вирткалкам LV-разделы, а они его уже форматят как хотят. Очень быстро и удобно. А на линухе я ратую за XFS, благо KVM позволяет отключить кеш (cache=off).

Подробности тут: http://xfs.org/index.php/XFS_FAQ#Q:_Which_settings_are_best_with_virtualizati...

chaos_dremel ★★ ()

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

Изменить кол-во дисков - нет, заменить их большим размером - да.

Развитие ZFS on Linux остановилось на Zpool версии 28 (где-то прочитал, что Oracle начали жадничать).

Читай ещё.
Тебе может подойти вариант - сделать из этих дисков один raid0 пул zfs и выставить кол-во копий 2 тогда каждый объект будет продублирован на любом из дисков пула, ну или lvm, как тут выше написали.

EvgGad_303 ★★★★★ ()
Последнее исправление: EvgGad_303 (всего исправлений: 1)
Ответ на: комментарий от chaos_dremel

В принципе такую схему я смогу получить и с помощью ZVOL, но при этом останутся фичи вроде контрольных сумм и ARC (если их не выключить для пула\zvol). С другой стороны, минус два не-совсем-родных слоя, может взлететь лучше. Попробую завтра оба варианта.

Забудь! Скорость одного диска (для одного потока).

Упор на многопоточное чтение-запись (внутри VM будет оффтопик же!).

spijet ★★★ ()
Ответ на: комментарий от spijet

а с многопоточным чтением запись лучше всех сладит xfs, кроме того, тебе надо колом по голове постучать, чтобы ты прочитал наконец о потребности zfs в памяти для нормальной работы

anonymous ()
Ответ на: комментарий от EvgGad_303

выставить кол-во копий 2

Если так сделать, то копии каждого блока будут так же чередоваться, или просто страйп запишется N раз подряд на те же самые диски? Сдаётся мне, что даже с таким хитрым ходом raid0 умрёт, если отвалится один из дисков.

spijet ★★★ ()
Ответ на: комментарий от spijet

колом, только колом по голове, иначе в гугль ты не пойдёшь, и будешь читать сказки о крутости zfs от местных фанбоев: If you plan to use your server for home use, you can often soften the rule of thumb of 1 GB of RAM for every 1 TB of storage, though 8 GB of RAM is still the minimum. If performance is inadequate you should consider adding more RAM as a first remedy. The sweet spot for most users in home/small business is 16GB of RAM.

anonymous ()
Ответ на: комментарий от anonymous

8GiB для VM, 6GiB под ARC, 2GiB для хостовой системы, не? Откуда такое маниакальное желание бить людей колом по голове? :)

spijet ★★★ ()
Ответ на: комментарий от spijet

4 гб оперативы на каждый тб пространства, считай.

erzent ☆☆ ()

MDRaid 5 или вообще 1E, нахер емкость. Поверх него - LVM. Половину трехтерабайтника - под помойку.

thesis ★★★★★ ()
Ответ на: комментарий от spijet

от их нежелания гуглить и читать, всё не проходит, кстати

anonymous ()

У меня подобная ситуация.

Определись с тем, что тебе нужно: скорость или защищенность (ты что-то говорил про критические данные).

Лично мне нужна защищенность, ибо у меня нет приложений критичных к скорости. А с точки зрения защищенности для домашнего тазика RAID0 не самое лучшее решение.

Я взял два маленьких диска (1.5T в твоем случае) и вынес в NAS, который поставил в чулане. Связь по NFSv4. Периодический rsync. Можно было сделать RAID0, но обошелся без этого: при выходе из строя одного диска легче будет восстанавливать. Пока не было NAS, просто отключал диски по питанию/SATA. Надежней только в банке датацентре.

Kroz ★★★★★ ()

Update #1

...у меня нет приложений критичных к скорости.
...для домашнего тазика RAID0 не самое лучшее решение.

В рассматриваемых вариантах у меня либо RAID5 (RAIDZ), либо эдакий нечестный RAID10 — переживёт падение одного из дисков.

...и вынес в NAS

Сам так хотел сделать, но у меня на роль NAS есть только старенький Athlon 64 X2 с, вроде бы, 512М DDR1, да и тот без кулера и нормального (живого) БП. Да и для KVM такое хранилище не очень сгодится.

--------------------

Сегодня пока собирался начать эксперименты, вспомнил, что один из 1,5TiB-дисков, вообще-то, занят (три раздела разной степени важности). Самым лучшим решением посчитал перенести эти разделы на то место, которое при использовании 3TiB-диска останется невостребованным (если не пилить его пополам и каждую половину делать зеркалом).

Теперь вырисовывается более простая и уже всполне осуществимая схема: RAID 5 (RAIDZ) из трёх дисков по 1,5 TiB + 1,5TiB места под старые разделы и прочую всячину.

Сегодня данные переносятся, завтра после работы начну издевательстваиспытания.

spijet ★★★ ()
Ответ на: Update #1 от spijet

Идея с RAID-5 хороша со всех сторон, при условии что нет затыка по процу. Но тут однозначно лучше LVM+mdraid, ибо RAID-Z тормозной очень.

З.Ы. Ждем результатов. Кастаните когда они будут, плиз.

chaos_dremel ★★ ()

Что же делать, как же быть?

используй zvol под виртуалки, raidz не советую,в пуле используй сдвоенное или строенное зеркало это аналог рейд10, гонево про производительность zfs не слушай, ее просто нельзя сравнивать с другими ФС, кроме того у zfs куча настроек значительно влияющие на ее производительность и аппаратная начинка (память, диски) также влияет на скорость ее работы. Память под zfs нужна с корекцией ошибок и 8 гигов это слишком мало, на моих серверах где 20-40 виртуалок памяти от 64Гб. Диски zfs нужно отдавать целиком без всяких разделов, при создании zvol задавай правильный блоксайз, дефолтное значение маленькое и приводит к нехилым тормозам.

axelroot ()
Ответ на: комментарий от conspirators

Я бегло погуглил, нашёл инфу, что ZoL гораздо быстрее работает с блоксайзом в 64к. Пока не проверял (много работы), думаю, завтра смогу опробовать наконец.

spijet ★★★ ()
Ответ на: комментарий от spijet

по дефолу при создании zvol используется volblocksize=8k, размер блока следует выбирать в зависимости от того как организован сам пул, если он представляет собой страйп из двух зеркал (raid10) то оптимальным будет блок в 64k, а на страйпе из 4-х объектов (зеркал или дисков) оптимальный блок уже 32k.

советую здесь почитать про sync, zil, zfs - http://forum.ixbt.com/post.cgi?id=print:11:44215

да и при создании пула не используйте имена устройств типа sda, sdb, sdd и т.п.

при создании пула также не забывайте про ashift

здесь небольшой примерчик - qcow2 верхом на zvol для kvm без кеша.

axelroot ()
Ответ на: комментарий от axelroot

по дефолу при создании zvol используется volblocksize=8k, размер блока следует выбирать в зависимости от того как организован сам пул, если он представляет собой страйп из двух зеркал (raid10) то оптимальным будет блок в 64k, а на страйпе из 4-х объектов (зеркал или дисков) оптимальный блок уже 32k.

Каких только городских легенд про ZFS не встретишь в этих ваших интернетах. Ты только что расписался в полном непонимании того, как и почему именно так работает динамическое чередование в ZFS.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.