Введение в терминологию и понятия хранения в Linux

Вступление

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

Что такое блочное хранилище?

Блочное хранилище - это еще одно имя для того, что ядро ​​Linux называет блочным устройством. block device - это аппаратное обеспечение, которое можно использовать для хранения данных, например, традиционный вращающийся жесткий диск (HDD), твердотельный накопитель (SSD), флэш-память и т. Д. Это называется блочным устройством, потому что ядро ​​взаимодействует с оборудованием, ссылаясь на блоки фиксированного размера или куски пространства.

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

Что такое разделы диска?

Дисковые разделы - это способ разбить накопитель на более мелкие используемые единицы. Раздел - это раздел накопителя, который можно обрабатывать так же, как и сам накопитель.

Разбиение позволяет сегментировать доступное пространство и использовать каждый раздел для разных целей. Это дает пользователю большую гибкость, позволяя им потенциально сегментировать свою установку для простого обновления, нескольких операционных систем, пространства подкачки или специализированных файловых систем.

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

MBR против GPT

При разбиении диска на разделы важно знать, какое разбиениеformat будет использоваться. Обычно это сводится к выбору между MBR (основная загрузочная запись) и GPT (таблица разделов GUID).

MBR - это традиционная система разделения, которая используется более 30 лет. Из-за своего возраста у него есть некоторые серьезные ограничения. Например, его нельзя использовать для дисков размером более 2 ТБ, и он может содержать не более четырех основных разделов. Из-за этого четвертый раздел обычно устанавливается как «расширенный раздел», в котором могут быть созданы «логические разделы». Это позволяет вам подразделить последний раздел, чтобы эффективно разрешить дополнительные разделы.

GPT - это более современная схема разделения, которая пытается решить некоторые проблемы, присущие MBR. Системы с GPT могут иметь гораздо больше разделов на диск. Обычно это ограничивается только ограничениями самой операционной системы. Кроме того, ограничение размера диска не существует с GPT, и информация таблицы разделов доступна в нескольких местах для защиты от повреждения. GPT также может написать «защитную MBR», которая сообщает инструментам только для MBR, что диск используется.

В большинстве случаев, GPT является лучшим выбором, если ваша операционная система или инструменты не мешают вам его использовать.

Форматирование и файловые системы

Хотя ядро ​​Linux может распознавать сырой диск, диск нельзя использовать как есть. Чтобы использовать это, это должно быть отформатировано. Formatting - это процесс записи файловой системы на диск и ее подготовки к файловым операциям. filesystem - это система, которая структурирует данные и управляет тем, как информация записывается на базовый диск и извлекается с него. Без файловой системы вы не могли бы использовать устройство хранения для каких-либо операций, связанных с файлами.

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

Вот некоторые из наиболее популярных файловых систем для Linux:

  • Ext4: Самая популярная файловая система по умолчанию - Ext4 или четвертая версия расширенной файловой системы. Файловая система Ext4 хранится в журнале, обратно совместима с унаследованными системами, невероятно стабильна и имеет развитую поддержку и инструментарий. Это хороший выбор, если у вас нет специализированных потребностей.

  • XFS: XFS специализируется на производительности и больших файлах данных. Он быстро форматируется и имеет хорошие пропускные характеристики при работе с большими файлами и при работе с большими дисками. Он также имеет функции мгновенного снимка. XFS использует ведение журнала метаданных, а не ведение как метаданных, так и данных. Это приводит к высокой производительности, но потенциально может привести к повреждению данных в случае внезапной потери питания.

  • Btrfs: Btrfs - это современная, многофункциональная файловая система с функцией копирования при записи. Эта архитектура позволяет интегрировать некоторые функции управления томами на уровне файловой системы, включая моментальные снимки, клонирование, тома и т. Д. Btrfs все еще сталкивается с некоторыми проблемами при работе с полными дисками. Есть некоторые споры о его готовности к рабочим нагрузкам, и многие системные администраторы ждут, когда файловая система достигнет большей зрелости.

  • ZFS: ZFS - это файловая система и менеджер томов копирования при записи с надежным и продуманным набором функций. Он имеет отличные функции обеспечения целостности данных, может работать с большими размерами файловой системы, имеет типичные функции томов, такие как моментальные снимки и клонирование, и может организовывать тома в RAID и RAID-подобные массивы в целях резервирования и повышения производительности. С точки зрения использования в Linux ZFS имеет противоречивую историю из-за проблем с лицензированием. Тем не менее, Ubuntu теперь поставляет для него бинарный модуль ядра, а Debian включает исходный код в свои репозитории. Поддержка других дистрибутивов еще не определена.

Как Linux управляет устройствами хранения

Файлы устройств в / dev

В Linux почти все представлено файлом. Это включает в себя оборудование, такое как накопители, которые представлены в системе как файлы в каталоге/dev. Обычно файлы, представляющие устройства хранения, начинаются сsd илиhd, за которым следует буква. Например, первый диск на сервере обычно выглядит как/dev/sda.

В разделах на этих дисках также есть файлы в пределах/dev, представленные добавлением номера раздела в конец имени диска. Например, первый раздел на диске из предыдущего примера будет/dev/sda1.

Хотя файлы устройств/dev/sd* и/dev/hd* представляют собой традиционный способ обращения к дискам и разделам, использование этих значений отдельно от них имеет существенный недостаток. Ядро Linux решает, какое устройство получит какое имя при каждой загрузке, так что это может привести к запутанным сценариям, когда ваши устройства меняют узлы устройства.

Чтобы обойти эту проблему, каталог/dev/disk содержит подкаталоги, соответствующие различным, более постоянным способам идентификации дисков и разделов в системе. Они содержат символические ссылки, которые создаются при загрузке обратно на правильные файлы/dev/[sh]da*. Ссылки названы в соответствии с отличительной чертой каталога (например, по метке раздела в каталоге/dev/disk/by-partlabel). Эти ссылки всегда будут указывать на правильные устройства, поэтому они могут использоваться в качестве статических идентификаторов для областей хранения.

Некоторые или все из следующих подкаталогов могут существовать в/dev/disk:

  • by-label: Большинство файловых систем имеют механизм маркировки, который позволяет назначать произвольные пользовательские имена для диска или раздела. Этот каталог состоит из ссылок, названных в честь этих пользовательских меток.

  • by-uuid: UUID или универсальные уникальные идентификаторы - это длинная уникальная строка букв и цифр, которая может использоваться в качестве идентификатора для ресурса хранения. Как правило, они не очень удобочитаемы, но гарантированно уникальны даже для разных систем. Таким образом, было бы неплохо использовать идентификаторы UUID для ссылки на хранилище, которое может мигрировать между системами, поскольку конфликты именования менее вероятны.

  • by-partlabel иby-partuuid: таблицы GPT предлагают собственный набор меток и UUID, которые также можно использовать для идентификации. Это работает так же, как и в предыдущих двух каталогах, но использует специфичные для GPT идентификаторы.

  • by-id: Этот каталог содержит ссылки, созданные собственными серийными номерами оборудования и оборудованием, к которому они подключены. Это не совсем постоянный процесс, потому что способ, которым устройство подключено к системе, может изменить его имяby-id.

  • by-path: Как иby-id, этот каталог зависит от подключения устройств хранения к самой системе. Ссылки здесь построены с использованием системной интерпретации аппаратного обеспечения, используемого для доступа к устройству. Это имеет те же недостатки, что иby-id, поскольку подключение устройства к другому порту может изменить это значение.

Обычноby-label илиby-uuid - лучшие варианты для постоянной идентификации определенных устройств.

Note

[.note] # Тома блочного хранилища DigitalOcean контролируют серийные номера устройств, сообщаемые операционной системе. Это позволяет категоризацииby-id быть надежно постоянной на этой платформе. Это предпочтительный метод обращения к томам DigitalOcean, поскольку он является постоянным и предсказуемым при первой загрузке.
#

Монтажные устройства

Файл устройства в/dev используется для связи с драйвером ядра для рассматриваемого устройства. Однако для того, чтобы рассматривать устройство как сегмент доступного пространства, необходима более полезная абстракция.

В Linux и других Unix-подобных операционных системах вся система, независимо от того, сколько физических устройств задействовано, представлена ​​одним унифицированным файловым деревом. Таким образом, когда файловая система на диске или разделе должна использоваться, она должна быть подключена к существующему дереву. Mounting - это процесс присоединения отформатированного раздела или диска к каталогу в файловой системе Linux. Доступ к содержимому диска можно получить из этого каталога.

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

Filesystem Hierarchy Standard рекомендует использовать/mnt или подкаталог в нем для временно смонтированных файловых систем. Если это соответствует вашему варианту использования, это, вероятно, лучшее место для его установки. Он не дает рекомендаций о том, где монтировать более постоянное хранилище, поэтому вы можете выбрать любую схему, которая вам больше нравится. Во многих случаях подкаталоги/mnt или/mnt также используются для более постоянного хранения.

Как сделать монтирование постоянным с / etc / fstab

Системы Linux просматривают файл с именем/etc/fstab (таблица файловой системы), чтобы определить, какие файловые системы следует монтировать во время процесса загрузки. Файловые системы, для которых нет записи в этом файле, не будут автоматически монтироваться (исключение составляют те, которые определены в файловых модулях systemd.mount, хотя в настоящее время они не распространены).

Файл/etc/fstab довольно прост. Каждая строка представляет отдельную файловую систему, которая должна быть смонтирована. В этой строке указывается блочное устройство, точка подключения, к которой он подключен, формат диска и параметры подключения, а также некоторые другие сведения.

Более сложное управление хранением

В то время как в большинстве простых вариантов использования не требуются дополнительные структуры управления, более сложные парадигмы управления могут обеспечить большую производительность, избыточность или гибкость.

Что такое RAID?

RAID обозначаетrосадокarrayindependentdisks. RAID - это технология управления хранилищем и виртуализации, которая позволяет группировать диски и управлять ими как единым целым с дополнительными возможностями.

Характеристики массива RAID зависят от его уровня RAID, который в основном определяет, как диски в массиве связаны друг с другом. Выбранный уровень влияет на производительность и избыточность набора. Некоторые из наиболее распространенных уровней:

  • RAID 0: этот уровень указывает на чередование дисков. Это означает, что когда данные записываются в массив, они разделяются и распределяются между дисками в наборе. Это обеспечивает повышение производительности, поскольку несколько дисков могут записываться или считываться одновременно. Недостатком является то, что сбой одного диска может привести к потере всех данных во всем массиве, поскольку ни один диск не содержит достаточно информации о содержимом для восстановления.

  • RAID 1: RAID 1 - это в основном зеркалирование дисков. Все, что записано в массив RAID 1, записывается на несколько дисков. Основным преимуществом является избыточность данных, которая позволяет выживать данным, теряя жесткий диск по обе стороны зеркала. Поскольку несколько дисков содержат одни и те же данные, полезная емкость уменьшается вдвое.

  • RAID 5: RAID 5 распределяет данные по нескольким дискам, аналогично RAID 0. Однако этот уровень также реализует распределенный паритет по дискам. По сути, это означает, что в случае сбоя диска оставшиеся диски могут перестроить массив, используя информацию о четности, которую они разделяют. Информации о четности достаточно для восстановления любого диска, а это означает, что массив может пережить потерю одного диска. Информация о четности уменьшает доступное пространство в массиве на емкость одного диска.

  • RAID 6: RAID 6 имеет те же свойства, что и RAID 5, но обеспечивает двойную четность. Это означает, что массивы RAID 6 могут противостоять потере любых двух дисков. На емкость массива снова влияет величина четности, что означает, что полезная емкость уменьшается на два дисковых пространства.

  • RAID 10: RAID 10 представляет собой комбинацию уровней 1 и 0. Сначала делаются два набора зеркальных массивов. Затем данные чередуются между ними. Это создает массив, который имеет некоторые характеристики избыточности, обеспечивая при этом хорошую производительность. Однако для этого требуется немало дисков, а общая емкость составляет половину объединенного дискового пространства.

Что такое LVM?

LVM илиLogicalVolumeManagement - это система, которая абстрагирует физические характеристики базовых запоминающих устройств, чтобы обеспечить повышенную гибкость и мощность. LVM позволяет создавать группы физических устройств и управлять ими, как если бы это был один блок пространства. Затем вы можете сегментировать пространство по мере необходимости на логические тома, которые функционируют как разделы.

LVM реализован поверх обычных разделов и обходит многие ограничения, присущие классическим разделам. Например, используя тома LVM, вы можете легко расширять разделы, создавать разделы, охватывающие несколько дисков, делать моментальные снимки разделов и перемещать тома на разные физические диски. LVM может использоваться в сочетании с RAID для обеспечения гибкого управления с традиционными характеристиками производительности RAID.

Куда пойти дальше?

Если у вас есть новое устройство хранения, которое вы хотите использовать в своей системе Linux,this article проведет вас через базовый процесс разбиения на разделы, форматирования и монтирования вашей новой файловой системы. Этого должно быть достаточно для большинства случаев, когда вас больше всего интересует добавление дополнительной емкости. Чтобы узнать, как выполнять основные задачи администрирования хранилища, ознакомьтесь сthis article.

Related