Lvm, mdadm, btrfs, ZFS, в каких случаях, что лучше использовать?
Я не особо продвинутый пользователь Linux, по этому как доходит дело до выбора файловой системы, возникают мысли, что я делаю что то не так)))
Постараюсь сначала описать, применение (с вопросами) и разделить по темам, что бы не было каши как у меня в голове)))
Btrfs:
В жизни приходилось использовать Btrfs, это был не сервер а рабочая станция, что понравилось и что использовал:
1. Устанавливал среднее сжатие данных, так как диск был SSD всего на 128 гигабайт, а процессор I7? было довольно не плохо)
2. Пользовался снапшотами, проблем не было, я ведь правильно понимаю, жаль, что для отката нужно перезагружать машину, но я так понимаю, что в любом случае, при откате со снапшота, нужно перезагружать машину?
ZFS:
Не использовал, но на сколько я понял, что основные отличия от Btrfs это:
1. RAID-Z и сразу вопрос правильно ли я понимаю, что RAID-Z, это по структуре тоже самое что RAID 5?
2. Пространство диска можно только расширять, а уменьшать нельзя.
LVM + mdadm, использовал на сервере, проблем нет, работает годами:
1. LVM делит диски, можно доставлять диски, убирать и расширять пространства на лету
2. Также в LVM использовал снапшоты и тут интересная реализация, для создания снапшота выделяется объем памяти и когда новые данные записанные на диск превысят этот объем, то снапшот автоматически удалится, правильно ли я это понимаю?
3. Еще я так и не понял, если я восстанавливаю снапшот системного диска, то в некоторых случаях, перезагрузка не требуется?
4. Еще момент, после того как создаешь снапшот с помощью LVM, это достаточно сильно напрягает компьютер, по сравнению со снапшотами созданными при помощи btrfs ?
5 Ну mdadm позволяет создать пул из нескольких дисков и писать данные на них параллельно, то есть делать копии данных на несколько носителей
Еще хотел бы услышать мнения, о том, что у Btrfs бывают проблемы в моменты когда становится мало памяти на диске?
Кто-то сталкивался с подобной проблемой?
Пишу не ответ на вопрос а просто некое частное мнение. ИМХО.
1. Устанавливал среднее сжатие данных, так как диск был SSD всего на 128 гигабайт, а процессор I7? было довольно не плохо)
Будь осторожен со сжатием. Оно эффективно только на определенном роде информации и на юзкейсе. Как только юз-кейс этой информации меняется (например решил обновлять на регулярной основе много документов) то может появится неконтролируемая нагрузка. И самое плохое что когда это случится - ты скорее всего забудешь о сжатии и не будешь понимать что происходит. Почему все стало медленно.
У меня стоит диск под бигдату. 3G. Учебные наборы данных. И он отформатирован под XFS. Если мне нужно сжать какой-то крупный dataset - то я его сжимаю bzip-ом. Взамен получаю splittable архив по которому биг-датавские фреймворки умеют бегать и работать с его частями независимо. Это опция только bzip2. Другие архивы эту опцию не поддерживают поэтому я их не использую. Данные не меняются в силу природы датасетов. Все работает хорошо.
Если-бы я сжимал на уровне ФС все подряд каким-то жлобским GZip или Snappy, то я-бы не получил этой возможности. Более того я мог-бы получить неконтролируемую просадку в производительности например на операциях многократного сохранения датасета в файл. А я люблю по много раз пересоздавать датасет-файл добиваясь толи индексирования толи еще чего.
По поводу Btrfs - это хорошая и умная система. Но ее возможности шире чем ты используешь. Она сильна снапшотами и программными рейдами. Но это все - фичи которые "дома" тебе практически никогда не потребуются. Более того. Если какая-то ситуация случается (что-то отмонтировалось) у тебя обычно нет времени и желания с этим разбираться глубоко. Если ты создавал снапшот для задач разработки а потом "забыл" его - то получишь невидимый технически долг на диске. В чем этот долг проявится - чорт его знает но обязательно он проявится. Вобщем мораль такова что если ты хочешь быть дежурным админом или девопсом - то ставь сложные файловые системы. Если просто надо работать - то ставь ext4 или xfs.
Zfs позволяет хранить частоиспольуемое в оперативке
Brtfs - для не критичных данных, либо конкретных для сжатия - типа мп3, фоток...
Mdadm - просто программная технология организации рейда
Lvm - по сути «разделы диска», как в винде, но с плюшками
Xfs - для хранения больших файлов
Как по мне - в линукс надо юзать etx4, если нет специфичечкой задачи
Для тех, кому в поиске этот вопрос выдаст и он прочитает комментарии.
ZFS на текущий момент может сокращаться. Раньше можно было только увеличивать. Сейчас излежащие физические разделы можно удалять из пула, если оставшиеся данные уместятся на оставшиеся физические разделы.
LVM сильно тупит, если начать двигать данные или же делать snapshot, но зато все это можно делать на живую без остановки. Грубо говоря, вы можете свой продуктовый оставить в доступе и переехать на новый диск, или перераспределить по дискам данные, при этом клиенты, пользователи ощутят тупняк, но работать будет. В каких-то случаех это удобно и нужно. В домашних условиях, когда можно и потерпеть, это не стоит того, т.к. работа замедляется существенно и проще остановить работу, быстро перенести, и вернуть устройство в рабочее состояние. Самый большой недостаток LVM это просадка в скорости работы ФС, если ваши разделы находятся на разных дисках. Есть в интернетах исследование, где человек обнаруживал падение производительнсти до 30% от нормальной скорости дисков. Это очень много.
ZFS лишена таких проблем, она работает быстро одинково всегда, при snapshot'ах, при нескольких дисках. Кстати с несколькими дисками она еще произодительней становится. Скорость проседает, когда больше 80% места пула занято. Если я правильно помню, то с LVM и KVM умудрялись без простоя передать работающую виртуальную машину с сервера на сервер. В ZFS так точно не получится. Если надо передать между дисками по сети данные, то все, что вы можете, это сделать снапшот, передать его в на другую машину, и потом завести на новой машине переданное с момента снапшота. Это существенный простой. В LVM вы пожете подцепить физический раздел по ISCSI перераспределить логические разделы туда, потом экспортировать эту группу томов, и импортировать на работающей удаленной системе. Простой будет составлять то время, как быстро вы нажете экспорт, и как быстро сделаете иморт и смонтируете это все на новой системе. Простой будет мизирным. Но вся эта магия на LVM при перемещении данных будет сопровождаться замедлением. Хотя, если LVM на RAID будет, то может и не так медленно будет.
В домашних и корпоративных сетях, где простои допустимы, лучше исползовать ZFS. В каких-нибудь облачных провайдерах, где простой должен быть предельно минимальным, а деградация сервиса допустима, то лучше LVM.
Собрали всё в кучу, это нормально, когда только постигаешь linux.
btrfs и zfs - файловые системы, буквы fs в аббревиатурах намекаю.
lvm и mdadm - не файловые системы, это технологии ниже файловых систем. lvm - менеджер логических томов, с его помощью вы создаете разделы на дисках, только функционал у него больше чем просто разделы на диске.
mdadm - ПО для создания raid - объединения дисков в отказоустойчивый кластер, скажем так.
получается следующее:
mdadm - уровень дисков
lvm - уровень разделов
btrfs,zfs и прочие fs - уровень файловой системы
Что применять и как - решать только Вам исходя из Ваших задач и желаний
Только вот ZFS это далеко не только файловая система. Там есть ZVOL, с помощью которого ты можешь получить блочное устройство и накатить свою файловую систему.