Часть 5: Работа с дисковой подсистемой CentOS. Отображение в системе, монитрование, создание файловой системы, LVM - github2wiki/SPBSUT_KURS GitHub Wiki
Как говорилось в предыдущих частях, в Linux все, в том числе внешние устройства логически представляются в виде файлов, другими словами все подключенные накопители — это просто файлы в каталоге /dev/. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0,и т.д.
Рассмотрим более подробно структуру каталога /dev/, а именно, его часть, связанную с дисковой подсистемой.
Название | Описание |
---|---|
sda | Первый жесткий диск |
sdb | Второй жесткий диск |
sda1 | Первый раздел на первом жестком диске |
sdb7 | Седьмой раздел на втором жестком диске |
sr0 | Первый CD-ROM |
sr1 | Второй CD-ROM |
cdrom | Символическая ссылка на привод CD-ROM |
В таблице приведены примеры наименований разных устройств, и пояснения, что они значат. Из примеров нетрудно выявить закономерность, как именуются дисковые устройства в CentOS. Но, все-же, стоит пояснить дополнительно. Диски в linux именуются как sda, sdb, sdc и т.д. применительно к SATA/SCSI HDD и hda, hdb, hdc для IDE устройств. При добавлении нового устройства меняется последняя буква.
На новых Linux-ядрах >=2.6.21 для некоторых чипсетов может действовать новая система именования IDE-дисков, при которой IDE-устройства именуются также как и SATA/SCSI.
Имена разделов диска получаются добавлением к имени диска десятичного числа: sda1 и sda2 представляют первый и второй разделы на первом диске SCSI в системе.
Также, в работе могут пригодиться /dev/null и /dev/zero. Все, что записывается в /dev/null , исчезает. Например,
echo "string" > /dev/null
Команда echo
используется для отправки вывода в stdout
. Обычно это ваш терминал, но может быть перенаправлен и в другие потоки вывода. В данном случае мы это и делаем, с помощью оператора перенаправления >
мы перенаправляем "string" в другой поток.
Из /dev/zero можно бесконечно читать нули. При записи на это устройство работает как /dev/null, но может для использоваться создания файла заданного размера (например, для размещения там образа файловой системы). Например, для создания файла image.iso размером 100 кБ можно выполнить команду
dd if=/dev/zero of=image.iso bs=1024 count=100
/dev/zero можно использовать как источник информации для перезаписи устройств и файлов (например, для безвозвратного удаления всех данных с жёсткого диска).
Также, существуют устройства /dev/random и /dev/urandom. Они предоставляют интерфейс к системному генератору случайных чисел, который выводит шум из драйверов устройств и других источников в «хаотичный» пул (англ. entropy pool). Генератор также сохраняет необходимое количество битов шума в этом пуле и формирует из него случайную либо псевдослучайную последовательность чисел. Их можно использовать как замену /dev/zero, но они будут выдавать уже не нули, и случайные числа. /dev/zero, /dev/random и /dev/urandom используют также при шифровании диска, чтобы скрыть, в какой части диска находится зашифрованная информация (/dev/zero не рекомендуется для этих целей, так как пространство будет забито нулями, и все равно легко будет определить, что представляет собой реальные данные).
Разделы
Ранее мы узнали, что имена разделов диска получаются добавлением к имени диска десятичного числа. Например, sda1. Но как же создавать разделы?
Раздел - это часть памяти накопителя, логически выделенная для удобства рботы. Информация о размещении разделов на жестком диске хранится в таблице разделов. Тут мы должны познакомиться с MBR и GPT.
Для чего нужны GPT и MBR?
Прежде чем использовать диск, его необходимо разбить на разделы. MBR (Главная загрузочная запись) и GPT (Таблица разделов GUID) представляют собой два различных способа хранения информации о разделах диска. Сюда входят данные о начале и конце разделов, чтобы система знала, к какому разделу принадлежит каждый сектор, и какой раздел является загрузочным. Вот почему вы должны выбрать MBR или GPT перед созданием разделов на диске.
Ограничения MBR
Аббревиатура MBR расшифровывается как Главная загрузочная запись. Этот стандарт был представлен в 1983 году вместе с DOS 2.0 для IBM PC.
Он называется главная загрузочная запись, так как MBR - это специальный загрузочный сектор, расположенный в начале диска. Этот сектор содержит загрузчик для установленной операционной системы, а так же информацию о логических разделах диска. Загрузчик - это небольшой кусок кода, который обычно используется для загрузки большого загрузчика с другого раздела или диска. Если на вашем компьютере установлен Windows, здесь будут находиться начальные элементы загрузчика Windows. Именно поэтому вам приходится восстанавливать MBR, если он был перезаписан и Windows не загружается. Если у вас установлен Linux, MBR чаще всего будет содержать загрузчик GRUB.
MBR работает с дисками объёмом до 2 ТБ, но он может справиться и с дисками большего размера. Кроме этого MBR поддерживает не более 4 основных разделов. Если вам нужно больше, придётся сделать один из основных разделов «расширенным разделом» и разместить в нём логические разделы. Впрочем, чаще всего вам этот трюк не потребуется.
MBR стал индустриальным стандартом, который все использовали для создания разделов на дисках и загрузки с них. С того самого момента некоторые разработчики начали полагаться на трюки вроде расширенных разделов.
Преимущества GPT
GPT означает Таблица разделов GUID. Это новый стандарт, который постепенно приходит на смену MBR. Он является частью UEFI, а UEFI заменяет старый BIOS так же, как GPT заменяет MBR на что-то более современное. Он называется таблицей разделов GUID, поскольку каждому разделу на вашем диске присваивается «уникальный глобальный идентификатор» или GUID - случайная строка такой длины, что каждый GPT раздел на Земле, скорее всего, обладает уникальным идентификаторов.
У этой системы нет ограничений в отличии от MBR. Диски могут быть гораздо объёмнее, а ограничение на размер будет зависеть от операционной и файловой систем. GPT позволяет создавать практически неограниченное количество разделов. Всё будет зависеть от вашей операционной системы. К примеру, в Windows можно создать до 128 разделов на GPT диске, так что вам больше не придётся возиться с расширенными разделами.
На MBR диске данные о разделах и загрузочная информация хранятся в одном месте. Если эти данные повреждены или перезаписаны, у вас проблемы. GPT же хранит несколько копий этих данных по всему диска, поэтому работает гораздо быстрее и позволяет восстановить повреждённую информацию. GPT так же хранит значения циклического избыточного кода (CRC), чтобы точно знать, что данные нетронуты. Если информация повреждена, GPT замечает проблему и пытается восстановить повреждённые данные с другого места на диске. MBR не может узнать о повреждении информации. Вы увидите, что возникла проблема, только если не сможете загрузить систему или один из разделов диска исчезнет.
Создание раздела
Для создания раздела в CentOS можно использовать два инструмента: fdisk или parted.
Cоздание раздела с помощью fdisk.
fdisk - это общее название системных утилит для управления разделами жёсткого диска. Широко распространены и имеются практически в любой операционной системе, но работают по-разному. Используют текстовый интерфейс пользователя.
У fdisk есть два режима: командный и интерактивный.
Их разница в том, что в командном режиме можно выполнять лишь одно действие за раз, а в интерактивном режиме мы создаем разметку, выполняя при этом множество операций, и после записываем изменения. При запуске интерактивного режима нужно в качестве аргумента передать путь к файлу устройства в каталоге /dev.
sudo fdisk /dev/sda
Для того, чтобы посмотреть, какие диски подключены, можно запустить fdisk с флагом l (эль).
sudo fdisk -l
В выводе можно узнать, какие диски подключены, тут же просмотреть информацию о них, какие разделы есть на этих дисках, и увидеть, какие есть LVM разделы (Про LVM мы узнаем позже).
Для того, чтобы узнать про все возможности fdisk, используйте флаг -h.
sudo fdisk -h
Выше упоминался интерактивный режим. Давайте посмотрим, что это. Интерактивный режим представляет собой диалог. Для того, чтобы узнать, что мы можем сделать, наберите m
. Приведем здесь список комманд:
a установить/сброосить флаг загрузки на раздел
b редактировать вложенную BSD метку диска
c установить/сброосить флагсовместимости с dos(MBR)
d удалить раздел
g создать новую пустую таблицу разделов GPT
G создать новую пустую таблицу разделов SGI (IRIX)
l выдать таблицу известных типов разделов
m распечатать список команд
n распечатать список команд (эта справка)
o создать новую пустую таблицу разделов DOS
p выдать список видимых разделов
q выйти без сохранения сделанных изминений
s создать новую пустую таблицу разделов Sun
t изменить тип раздела (идентификатор в 16-ной форме)
u изменить единицу измерения показываемых размеров
v проверить таблицу разделов
w записать таблицу разделов на диск и выйти
x дополнительные функции (экспертный режим)
Для создания раздела наимаем n. В конце записываем внесённые изменения, нажимая w, или q для выхода без сохранения. Более подробно с этой программой мы познакомимся в лабораторной работе.
Также существуют cfdisk и sfdisk. Они предоставляют другой интерфейс взаимодействия с программой.
Типы файловых систем
Linux поддерживает несколько различных файловых систем. Каждая из них имеет свои достоинства, недостатки и особенности. Важным отличительным свойством файловой системы является журналирование, позволяющее быстрее восстановить систему после сбоя. Как правило, если есть выбор, то лучше использовать журналируемую файловую систему. Также при выборе файловой системы вы можете обратить внимание на поддержку расширения Security Enhanced Linux (или SELinux) – Linux с улучшенной безопасностью. Далее мы кратко рассмотрим типы файловых систем, о которых необходимо знать.
Файловая система ext2
Файловая система ext2 (также известная как second extended filesystem – вторая расширенная файловая система) была разработана для устранения недостатков файловой системы Minix, использовавшейся в ранних версиях Linux. Она широко использовалась в Linux на протяжении многих лет. Файловая система ext2 не является журналируемой, и в настоящее время ей на смену пришла файловая система ext3.
Файловая система ext3
Файловая система ext3 дополняет стандартную систему ext2 возможностями журналирования (файловая система (ФС), в которой осуществляется ведение журнала, хранящего список изменений и, в той или иной степени, помогающего сохранить целостность файловой системы при сбоях.) и поэтому является эволюционным развитием очень стабильной файловой системы. Она обладает достаточной производительностью в большинстве ситуаций и в настоящее время продолжает совершенствоваться. Поскольку эта файловая система основана на проверенной временем системе ext2, то можно преобразовывать существующую файловую систему ext2 в ext3 и обратно в случае возникновения необходимости.
Файловая система ext4
Fourth extended file system (четвёртая расширенная файловая система (ФС)), сокр. ext4, или ext4fs — журналируемая ФС, используемая в ОС с ядром Linux. Основана на ФС ext3, ранее использовавшейся по умолчанию во многих дистрибутивах GNU/Linux. Был введён механизм пространственной (extent) записи файлов, уменьшающего фрагментацию и повышающего производительность. Суть механизма заключается в том, что новая информация добавляется в конец области диска, выделенной заранее по соседству с областью, занятой содержимым файла. Также были расширены максимальные объёмы одного раздела диска и одного файла.
Файловая система ReiserFS
ReiserFS – это файловая система на основе B-дерева, обладающая очень хорошей общей производительностью, в особенности при использовании большого числа маленьких файлов. Файловая система ReiserFS хорошо масштабируется и является журналируемой. Сейчас новые версии ReiserFS не разрабатываются, она не поддерживает возможности SELinux, и ей на смену пришла файловая система Reiser4.
Файловая система XFS
XFS – журналируемая файловая система, обладающая надежной функциональностью и оптимизированная для масштабирования. XFS активно кэширует в ОЗУ передаваемые данные, поэтому при ее использовании рекомендуется подключить компьютер к источнику бесперебойного питания.
Файловая система раздела подкачки
Дисковое пространство, выделенное под раздел подкачки, должно быть соответствующим образом отформатировано, но, как правило, раздел подкачки не рассматривается в качестве файловой системы.
Файловая система vfat
Эта файловая система (также известная как FAT32) не является журналируемой и не обладает многими возможностями, необходимыми для полноценной работы с файловыми системами в Linux. Полезное свойство FAT32 состоит в том, что эта файловая система может быть доступна как из Windows, так и из Linux, что делает ее подходящей для обмена данными между этими операционными системами. Не используйте эту файловую систему в Linux, если только вы не планируете организовывать обмен данными между Windows и Linux. Если распаковать gzip- или tar-архив Linux на диск с файловой системой vfat, то будут потеряны все файловые разрешения, например, разрешения на исполнение, а также все символические ссылки, которые могли храниться в архиве.
Создание файловых систем
Для создания файловых систем в Linux используется команда mkfs, а для создания области подкачки – команда mkswap. Фактически команда mkfs представляет собой внешний интерфейс к нескольким командам для работы с файловой системой, таким как mkfs.ext3 для ext3 и mkfs.reiserfs – для ReiserFS.
Чтобы узнать, какие файловые системы поддерживаются вашей системой, используйте команду ls /sbin/mk*
.
Для вызова справочных man-страниц по какой-либо определенной файловой системе используйте в качестве имени соответствующую команду mkfs, например, man mkfs.ext4
. Многие значения, выводимые в наших следующих примерах, могут управляться различными опциями mkfs.
Например, создание ext4 на /dev/sda4 выглядит так:
sudo mkfs.ext4 /dev/sda4
Одним из последних нововведений является универсальный уникальный идентификатор (Universally Unique Identifier, UUID), который используется вместо метки. UUID – это 128-битовый идентификатор, обычно отображаемый в виде 32 шестнадцатеричных цифр, разделенных дефисами. Для большинства файловых систем Linux UUID генерируется автоматически при их форматировании. Для просмотра UUID раздела, который мы только что отформатировали, используйте команду blkid
.
sudo blkid /dev/sda4
Монтирование раздела в CentOS 7.
Ранее мы разобрались, что представляет собой файловая структура в Linux. Выяснили, что в отличие от Windows, программа не находится в одной папке, а, как правило, распределена по корневой файловой системе. Теперь мы научимся сами монтировать разделы в корневой файловой системе.
Для того, чтобы примонтировать раздел /dev/sda4 к /mnt, нужно использовать команду:
sudo mount /dev/sda4 /mnt
Теперь в каталоге /mnt мы пожем получить доступ к разделу /dev/sda4. Чтобы отмонтировать раздел, можно обратиться либо к точке монтирования, либо непосредственно к самому разделу:
sudo umount /mnt
Либо
sudo umount /dev/sda4
Если мы хотим, чтобы раздел автоматически монтировался при загрузке системы, то нам необходимо отредактировать конфигурационный файл /etc/fstab. Синтаксис представлен в самом файле. Добавляем новую строку в таком формате:
[Что монтировать] [Куда монтировать] [Тип файловой системы] [Опции монтирования файловой системы] [Индикатор необходимости делать резервную копию (как правило не используется и равно 0)] [Порядок проверки раздела (0- не проверять, 1 - устанавливается для корня, 2 - для остальных разделов)]
Пример:
/dev/sda4 /mnt ext4 defaults 0 0
Logical Volume Manager (LVM)
Logical Volume Manager (LVM) - это очень мощная система управления томами с данными для Linux. Она позволяет создавать поверх физических разделов (или даже неразбитых винчестеров) логические тома, которые в самой системе будут видны как обычные блочные устройства с данными (т.е. как обычные разделы). Основные преимущества LVM в том, что во-первых одну группу логических томов можно создавать поверх любого количества физических разделов, а во-вторых размер логических томов можно легко менять прямо во время работы. Кроме того, LVM поддерживает механизм снапшотов, копирование разделов «на лету» и зеркалирование, подобное RAID-1.
Если планируются большие работы с LVM, то можно запустить специальную «оболочку» командой sudo lvm. Команда help покажет список команд.
Создание и удаление
Большинство команд требуют прав суперпользователя.
Как уже отмечалось, LVM строится на основе разделов жёсткого диска и/или целых жёстких дисков. На каждом из дисков/разделов должен быть создан физический том (physical volume). К примеру, мы используем для LVM диск sda и раздел sdb2:
pvcreate /dev/sda
pvcreate /dev/sdb2
На этих физических томах создаём группу томов, которая будет называться, скажем, vg1:
vgcreate -s 32M vg1 /dev/sda /dev/sdb2
Посмотрим информацию о нашей группе томов:
vgdisplay vg1
Групп можно создать несколько, каждая со своим набором томов. Но обычно это не требуется.
Теперь в группе томов можно создать логические тома lv1 и lv2 размером 20 Гбайт и 30 Гбайт соответствено:
lvcreate -n lv1 -L 20G vg1
lvcreate -n lv2 -L 30G vg1
Теперь у нас есть блочные устройства /dev/vg1/lv1 и /dev/vg1/lv2.
Осталось создать на них файловую систему. Тут различий с обычными разделами нет:
mkfs.ext4 /dev/vg1/lv1
mkfs.reiserfs /dev/vg1/lv2
Удаление LVM (или отдельных его частей, например, логических томов или групп томов) происходит в обратном порядке - сначала нужно отмонтировать разделы, затем удалить логические тома (lvremove), после этого можно удалить группы томов (vgremove) и ненужные физические тома (pvremove).
Добавление физических томов
Чтобы добавить новый винчестер sdc в группу томов, создадим физический том:
pvcreate /dev/sdc
И добавим его в нашу группу:
vgextend vg1 /dev/sdc
Теперь можно создать ещё один логический диск (lvcreate) или увеличить размер существующего (lvresize).
Удаление физических томов
Чтобы убрать из работающей группы томов винчестер sda сначала перенесём все данные с него на другие диски:
pvmove /dev/sda
Затем удалим его из группы томов:
vgreduce vg1 /dev/sda
И, наконец, удалим физический том:
pvremove /dev/sda
Вообще-то, последняя команда просто убирает отметку о том, что диск является членом lvm, и особой пользы не приносит. После удаления из LVM для дальнейшего использования диск придётся переразбивать/переформатировать.
Изменение размеров
LVM позволяет легко изменять размер логических томов. Для этого нужно сначала изменить сам логический том:
lvresize -L 40G vg1/lv2
а затем файловую систему на нём:
resize2fs /dev/vg1/lv2
Снапшоты
Одна из важнейших особенностей LVM - это поддержка механизма снапшотов. Снапшоты позволяют сделать мгновенный снимок логического тома и использовать его в дальнейшем для работы с данными.
Примеры использования
LVM активно используется, когда необходим механизм снапшотов. Например, этот механизм крайне важен при бекапе постоянно меняющихся файлов. LVM позволяет заморозить некоторое состояние ФС и скопировать с неё все нужные данные, при этом на оригинальной ФС останавливать запись не нужно.