Linux

Как включить пул и зеркалирование хранилища с помощью Btrfs для Linux

Как включить пул и зеркалирование хранилища с помощью Btrfs для Linux

Если у вас есть несколько жестких дисков в вашей системе Linux, вам не нужно рассматривать их как разные устройства хранения. С Btrfs вы можете очень легко создать пул хранения из этих жестких дисков.

При определенных условиях вы можете даже включить зеркалирование, чтобы не потерять данные из-за сбоя жесткого диска. Когда все настроено, вы можете просто выбросить в пул все, что захотите, и максимально эффективно использовать имеющееся пространство хранения.

Нет утилиты конфигурирования GUI, которая могла бы сделать все это проще (пока), но это все же довольно легко сделать с помощью командной строки. Я проведу вас через простую настройку для использования нескольких жестких дисков вместе.

Что такое Btrfs?

Btrfs (называемая файловой системой B-tree, «Butter FS» или «Better FS») — это будущая файловая система который включает в себя множество различных функций на уровне файловой системы, обычно доступных только в виде отдельных пакетов программного обеспечения. В то время как Btrfs имеет много примечательных функций (таких как снимки файловой системы), в этой статье мы рассмотрим два аспекта: пул хранения и зеркалирование.

Если вы не уверены, что такое файловая система, посмотрите на это объяснение нескольких файловых систем для Windows Вы также можете проверить это хорошее сравнение различных файловых систем: чтобы получить лучшее представление о различиях между существующими файловыми системами.

Btrfs по-прежнему считается «нестабильным» для многих, но большинство функций уже достаточно стабильны для личного использования — это всего лишь несколько избранных функций, где вы можете столкнуться с непредвиденными результатами.

Хотя Btrfs и в будущем планирует стать файловой системой Linux по умолчанию, все же лучше использовать ext4 для установок с одним жестким диском или для установок, которые не нуждаются в пуле хранения и зеркалировании.

Объединение ваших дисков

Для этого примера мы собираемся использовать четыре жестких диска. Есть два жестких диска (/ dev / sdb и / dev / sdc) по 1 ТБ каждый и два других жестких диска (/ dev / sdd и / dev / sde) по 500 ГБ для четырех жестких дисков общим объемом 3 ТБ. хранения.

Вы также можете предположить, что у вас есть другой жесткий диск (/ dev / sda) произвольного размера, который содержит ваш загрузчик и операционную систему. Мы не заботимся о / dev / sda и объединяем только четыре других жестких диска для дополнительного хранения.

Создание файловой системы

btrfs_gparted
Чтобы создать файловую систему Btrfs на одном из ваших жестких дисков, вы можете использовать команду:

sudo mkfs.btrfs /dev/sdb

Конечно, вы можете заменить / dev / sdb на тот жесткий диск, который вы хотите использовать. Отсюда вы можете добавить другие жесткие диски в систему Btrfs, чтобы сделать ее одним разделом, охватывающим все добавляемые жесткие диски. Сначала подключите первый жесткий диск Btrfs с помощью команды:

sudo mount /dev/sdb /mnt

Затем выполните команды:

sudo mkfs.btrfs /dev/sdc mkfs.btrfs /dev/sdd mkfs.btrfs /dev/sde

Теперь вы можете добавить их на первый жесткий диск, используя команды:

sudo btrfs device add /dev/sdc /mnt btrfs device add /dev/sdd /mnt btrfs device add /dev/sde /mnt

Если у вас были данные, хранящиеся на первом жестком диске, вы хотите, чтобы файловая система сбалансировала их среди всех вновь добавленных жестких дисков. Вы можете сделать это с помощью команды:

sudo btrfs filesystem balance /mnt

В качестве альтернативы, если вы еще до начала знаете, что хотите, чтобы файловая система Btrfs распространялась на все жесткие диски, вы можете просто выполнить команду:

sudo mkfs.btrfs -d single /dev/sdb /dev/sdc /dev/sdd /dev/sde

Конечно, это намного проще, но вам нужно использовать метод, упомянутый выше, если вы не добавите их все за один раз.

Вы заметите, что я использовал флаг: «-d single». Это необходимо, потому что я хотел конфигурацию RAID 0 (где данные распределяются между всеми жесткими дисками, но зеркалирование не происходит), но «жесткий» профиль необходим, когда жесткие диски имеют разные размеры. Если бы все жесткие диски были одинакового размера, я мог бы вместо этого использовать флаг «-d raid0». Кстати, флаг «-d» обозначает данные и позволяет вам указать желаемую конфигурацию данных. Также есть флаг «-m», который делает то же самое для метаданных.

Помимо этого, вы также можете включить RAID 1 с помощью «-d raid1», который будет дублировать данные на всех устройствах, поэтому использование этого флага при создании файловой системы Btrfs, охватывающей все жесткие диски, будет означать, что вы получите только 500 ГБ доступного пространства, так как три других жестких диска используются для зеркалирования.

Наконец, вы можете включить RAID 10, используя «-d raid10». Это объединит RAID 0 и RAID 1, поэтому вам будет доступно 1,5 ТБ свободного пространства, так как два жестких диска по 1 ТБ спарены в зеркалировании, а два жестких диска по 500 ГБ спарены в зеркалировании.

Преобразование файловой системы

btrfs_harddiskstack
Если у вас есть файловая система Btrfs, которую вы хотите преобразовать в другую конфигурацию RAID, это легко сделать. Сначала смонтируйте файловую систему (если это еще не сделано) с помощью команды:

sudo mount /dev/sdb1 /mnt

Затем выполните команду:

sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

Это изменит конфигурацию на RAID 1, но вы можете заменить ее любой конфигурацией, которую вы хотите (если это действительно разрешено — например, вы не можете переключиться на RAID 10, если у вас нет как минимум четырех жестких дисков) , Кроме того, флаг -mconvert является необязательным, если вас интересуют только данные, а не метаданные.

Если происходит сбой жесткого диска

Если произойдет сбой жесткого диска, вам необходимо удалить его из файловой системы, чтобы остальные накопители работали правильно. Смонтируйте файловую систему с помощью команды:

sudo mount -o degraded /dev/sdb /mnt

Затем исправьте файловую систему с помощью:

sudo btrfs device delete missing /mnt

Если у вас не был включен RAID 1 или RAID 10, все данные, которые были на отказавшем жестком диске, теперь теряются.

Извлечение жесткого диска из файловой системы

Наконец, если вы хотите удалить устройство из файловой системы Btrfs, а файловая система смонтирована в / mnt, вы можете сделать это с помощью команды:

sudo btrfs device delete /dev/sdc /mnt

Конечно, замените / dev / sdc на жесткий диск, который вы хотите удалить. Эта команда займет некоторое время, потому что она должна удалить все данные с удаляемого жесткого диска, и также потерпит неудачу, если на других оставшихся жестких дисках недостаточно места.

Автоматический монтаж

btrfs_fstab
Если вы хотите, чтобы файловая система Btrfs была смонтирована автоматически, вы можете поместить ее в файл / etc / fstab:

sudo /dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde 0 0

Варианты монтирования

Еще один бонусный совет! Вы можете оптимизировать производительность Btrfs в файле / etc / fstab в разделе параметров монтирования для файловой системы Btrfs. Для больших массивов хранения эти параметры лучше всего подходят: compress-force=zlib,autodefrag,nospace_cache . В частности, compress = zlib сжимает все данные, чтобы вы могли максимально использовать пространство, которое у вас есть. Для записи пользователи SSD могут использовать следующие параметры: noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache . Эти параметры соответствуют спецификациям устройства, поэтому полная строка в / etc / fstab для пользователей SSD будет выглядеть так:

sudo /dev/sdb /mnt btrfs device=/dev/sdb,device=/dev/sdc,device=/dev/sdd,device=/dev/sde,
noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache 0 0

Насколько большой ваш пул хранения?

Btrfs — это фантастический вариант для организации пула и зеркалирования, который обязательно станет более популярным, когда он будет считаться полностью стабильным. Также не помешало бы наличие графического интерфейса для облегчения настройки (кроме некоторых установщиков дистрибутива), но команды, которые вы должны использовать в терминале, легко понять и применить.

Какой самый большой пул памяти вы можете сделать? Как вы думаете, пулы хранения стоят? Дайте нам знать об этом в комментариях!

Кредит Фотографии: Уильям Хук

Похожие посты
Linux

8 лучших окружений рабочего стола Linux

AndroidIphone и ipadLinuxWindows

Окончательное руководство по включению темного режима везде

LinuxКак сделать

Что такое Swappiness в Linux? (и как это изменить)

LinuxКак сделать

Как использовать команду ls для вывода списка файлов и каталогов в Linux