Библиотека сайта rus-linux.net
Администрирование систем Linux. Разделы жестких дисков
Оригинал: Disk partitions
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 29 марта 2015 г.
Глава 5. Разделы жестких дисков
В данной главе будет продолжено рассмотрение приемов работы с жесткими дисками
, которые были подготовлены нами в предыдущей главе. На этот раз мы займемся созданием разделов
на этих жестких дисках.
Прочитав данную главу, вы будете подготовлены к чтению следующей главы, в которой будет описываться процесс создания файловых систем
в подготовленных разделах.
5.1. Информация о разделах жестких дисков
5.1.1. Первичные, расширенные и логические разделы
Для корректного функционирования дистрибутива Linux вам потребуется создать один или несколько разделов
(partitions) на жестком диске. Далее будут приведены подробные пояснения относительно создания и использования разделов жестких дисков.
Геометрия раздела
(geometry), а также его размер обычно описываются с помощью номеров начального и конечного цилиндра (а иногда начального и конечного сектора). Разделы могут быть первичными
(primary, максимум четыре), расширенными
(extended, максимум один) или логическими
(logical, размещаются внутри расширенного раздела). Каждый раздел имеет поле типа, которое содержит соответствующий код. Данный код позволяет идентифицировать операционную систему компьютера или файловую систему раздела.
Таблица 5.1. Первичные, расширенные и логические разделы
Тип раздела | Порядковый номер |
---|---|
Первичный (максимум 4) | 1-4 |
Расширенный (максимум 1) | 1-4 |
Логический | 5- |
5.1.2. Имена файлов устройств, соответствующих разделам
Ранее мы говорили о том, что имена файлов устройств жестких дисков соответствуют шаблону /dev/hdx или /dev/sdx, причем x является буквенным символом, зависящим от аппаратной конфигурации. После этого символа должен следовать порядковый номер раздела, причем отсчет должен начинаться с числа 1. Следовательно, для обозначения четырех (возможных) первичных разделов могут использоваться числа от 1 до 4. Отсчет порядковых номеров логических разделов всегда начинается с 5. Таким образом, файл устройства /dev/hda2 представляет второй раздел на первом жестком диске с интерфейсом ATA, а файл /dev/hdb5 - первый логический раздел на втором жестком диске с интерфейсом ATA. Аналогичным образом происходит и присваивание имен и файлам устройств, соответствующих жестким дискам с интерфейсом SCSI. Например, файл устройства /dev/sdb3 соответствует третьему разделу второго жесткого диска с интерфейсом SCSI.
Таблица 5.2. Имена файлов устройств, соответствующих разделам
Раздел | Устройство |
---|---|
/dev/hda1 | Первый первичный раздел на устройстве, представленном файлом /dev/hda |
/dev/hda2 | Второй первичный раздел или расширенный раздел на устройстве, представленном файлом /dev/hda |
/dev/sda5 | Первый логический раздел на устройстве, представленном файлом /dev/sda |
/dev/sdb6 | Второй логический раздел на устройстве, представленном файлом /dev/sdb |
На рисунке ниже представлены схематичные изображения двух жестких дисков (с вращающимися шпинделями) с разделами. Обратите внимание на то, что расширенный раздел выступает в роли контейнера, содержащего логические разделы.
5.2. Обнаружение разделов жестких дисков
5.2.1. Команда fdisk -l
Рассмотрев приведенный в примере ниже вывод команды fdisk -l
, вы можете обнаружить, что на жестком диске, представленном файлом устройства /dev/sdb
, существуют два раздела. Первый раздел размещается до 31 цилиндра и является разделом подкачки Linux. Второй раздел имеет гораздо больший размер.
root@laika:~# fdisk -l /dev/sdb Disk /dev/sdb: 100.0 GB, 100030242816 bytes 255 heads, 63 sectors/track, 12161 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 31 248976 82 Linux swap / Solaris /dev/sdb2 32 12161 97434225 83 Linux root@laika:~#
5.2.2. Файл /proc/partitions
Файл /proc/partitions
содержит таблицу с основными и дополнительными номерами файлов устройств, соответствующих разделам жестких дисков, количеством блоков в рамках этих разделов и именами файлов устройств, расположенных в директории /dev
. Изучив содержимое файла /proc/devices
, убедитесь в том, что в данном списке содержатся основные номера, соответствующие типу каждого из устройств.
paul@RHELv4u4:~$ cat /proc/partitions major minor #blocks name 3 0 524288 hda 3 64 734003 hdb 8 0 8388608 sda 8 1 104391 sda1 8 2 8281507 sda2 8 16 1048576 sdb 8 32 1048576 sdc 8 48 1048576 sdd 253 0 7176192 dm-0 253 1 1048576 dm-1
Основной
номер устройства соответствует типу устройства (или драйверу) и может быть обнаружен в файле /proc/devices
. В данном случае основной номер устройства 3 соответствует устройству с интерфейсом IDE
, а 8 - устройству с интерфейсом SATA
. Основной
номер устройства описывает драйвер
, который должен использоваться для взаимодействия с данным устройством.
Дополнительный
номер устройства является уникальным идентификатором экземпляра устройства данного типа. Файл devices.txt
в дереве исходного кода ядра Linux содержит полный список основных и дополнительных номеров устройств.
5.2.3. Parted и другие утилиты
Вас могут заинтересовать такие альтернативные утилите fdisk
инструменты, как parted
, cfdisk
, sfdisk
и gparted
. При этом для осуществления манипуляций с разделами жестких дисков в рамках данного курса будет использоваться главным образом утилита fdisk
.
Утилита parted
рекомендуется разработчиками некоторых дистрибутивов Linux для работы с дисками, содержащими таблицы разделов формата GPT
, а не MBR
.
Ниже приведен пример использования утилиты parted
при работе с дистрибутивом CentOS.
[root@centos65 ~]# rpm -q parted parted-2.1-21.el6.x86_64 [root@centos65 ~]# parted /dev/sda GNU Parted 2.1 Используется /dev/sda Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд. (parted) print Модель: ATA VBOX HARDDISK (scsi) Диск /dev/sda: 42.9GB Размер сектора (логич./физич.): 512B/512B Таблица разделов: msdos Номер Начало Конец Размер Тип Файловая система Флаги 1 1049kB 525MB 524MB primary ext4 загрузочный 2 525MB 42.9GB 42.4GB primary lvm (parted)
5.3. Создание разделов на новых дисках
В примере ниже будет рассматриваться ситуация покупки нового жесткого диска для нашей системы. После корректного подключения нового аппаратного обеспечения вы можете использовать утилиты fdisk
и parted
для создания необходимых разделов. В данном примере используется утилита fdisk
, но утилита parted
в подобной ситуации также является вполне подходящим инструментом.
5.3.1. Обнаружение жесткого диска
В первую очередь мы должны удостовериться в том, что ядро Linux имеет доступ к новому жесткому диску с помощью команды fdisk -l
. Да, новый жесткий диск представлен файлом устройства /dev/sdb, но на нем пока не создано каких-либо разделов.
root@RHELv4u2:~# fdisk -l Disk /dev/sda: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1566 12474472+ 8e Linux LVM Disk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table
5.3.2. Открытие дискового устройства с помощью утилиты fdisk
После этого мы можем приступить к созданию раздела на жестком диске, представленном файлом устройства /dev/sdb, с помощью утилиты fdisk. Для начала мы должны передать путь к файлу устройства /devsdb в качестве параметра утилиты fdisk. Следует проявить крайнюю осторожность и убедиться еще раз в том, что вы создаете раздел именно на новом диске!!
root@RHELv4u2:~# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI... Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected...
5.3.3. Пустая таблица разделов
Работая с инструментом fdisk, вы можете выполнить команду p
для того, чтобы ознакомиться с текущей таблицей разделов диска.
Command (m for help): p Disk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System
5.3.4. Создание нового раздела
На данный момент на диске не существует разделов, поэтому мы должны выполнить команду n
для создания нового раздела. Мы будем вводить символ p для создания первичного раздела и число 1 в качестве номера раздела, а также число 1 в качестве номера начального цилиндра и число 14 в качестве номера конечного цилиндра.
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-130, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): 14
Теперь мы снова можем выполнить команду p для проверки внесенных нами изменений, причем эти изменения еще не записаны на диск, поэтому мы все еще можем отменить эту операцию! Так как внесенные изменения кажутся нам корректными, мы можем выполнить команду w
для записи изменений на диск с последующим завершением работы утилиты fdisk.
Command (m for help): p Disk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 14 112423+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. root@RHELv4u2:~#
5.3.5. Вывод информации о новом разделе
Давайте снова проверим с помощью команды fdisk -l
, совпадает ли реальность с нашими ожиданиями. Разумеется, в примере ниже приводится информация о разделе на диске, представленном файлом устройства /dev/sdb.
root@RHELv4u2:~# fdisk -l Disk /dev/sda: 12.8 GB, 12884901888 bytes 255 heads, 63 sectors/track, 1566 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1566 12474472+ 8e Linux LVM Disk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 14 112423+ 83 Linux root@RHELv4u2:~#
5.4. О таблице разделов
5.4.1. Основная загрузочная запись
Информация из таблицы разделов
(об основных и расширенных разделах) записывается в основную загрузочную запись
(Master Boot Record или MBR). Вы можете использовать утилиту dd
для копирования данных из основной загрузочной записи в файл.
В данном примере осуществляется копирование основной загрузочной записи с первого жесткого диска с интерфейсом SCSI.
dd if=/dev/sda of=/SCSIdisk.mbr bs=512 count=1
Этот же инструмент также может использоваться для удаления всей информации о разделах на диске. В данном примере область основной загрузочной записи заполняется нулевыми байтами.
dd if=/dev/zero of=/dev/sda bs=512 count=1
Или удаления всей информации из раздела на жестком диске или со всего диска.
dd if=/dev/zero of=/dev/sda
5.4.2. Утилита partprobe
Не забывайте о том, что после восстановления основной загрузочной записи
с помощью утилиты dd
вам придется сообщить ядру ОС о необходимости повторного чтения таблицы разделов жесткого диска с помощью утилиты partprobe
. После запуска утилиты partprobe
разделы жесткого диска могут снова использоваться.
[root@RHEL5 ~]# partprobe [root@RHEL5 ~]#
5.4.3. Логические разделы
Таблица разделов
жесткого диска не содержит информации о логических разделах
. Следовательно, резервная копия основной загрузочной записи, созданная с помощью утилиты dd
, будет содержать информацию исключительно о первичных и расширенных разделах жесткого диска. Для создания резервной копии основной загрузочной записи с информацией о логических разделах жесткого диска вы можете воспользоваться утилитой sfdisk
.
В данном примере показана методика создания резервной копии таблицы всех разделов жесткого диска, включая логические, с записью данных в файл.
sfdisk -d /dev/sda > parttable.sda.sfdisk
А в данном примере осуществляется копирование основной загрузочной записи
и информации обо всех логических разделах
с устройства, представленного файлом /dev/sda, на устройство, представленное файлом /dev/sdb.
sfdisk -d /dev/sda | sfdisk /dev/sdb
5.5. Практическое задание: разделы жестких дисков
-
1. Используйте команду
fdisk -l
для вывода списка существующих разделов жестких дисков с информацией об их размерах. -
2. Используйте команду
df -h
для вывода списка существующих разделов жестких дисков с информацией об их размерах. -
3. Сравните вывод утилиты
fdisk
с выводом утилитыdf
. -
4. Создайте основной раздел размером в 200 МБ на жестком диске малого объема.
-
5. Создайте основной раздел размером в 400 МБ и два логических раздела размером в 300 МБ каждый на жестком диске большого объема.
-
6. Используйте команды
df -h
иfdisk -l
для проверки корректности выполненных вами действий. -
7. Снова сравните вывод утилиты
fdisk
с выводом утилитыdf
. Присутствует ли в выводах обоих утилит информация о новых разделах? -
8. С помощью утилиты
dd
создайте резервную копиюосновной загрузочной записи
, которая содержит информацию о вашем основном разделе размером в 200 МБ. -
9. Создайте резервную копию таблицы разделов, содержащей информацию о вашем первичном разделе размером в 400 МБ и о логических разделах размером в 300 МБ каждый. Убедитесь в том, что информация о логических разделах добавлена в файл резервной копии таблицы разделов.
-
10. (дополнительное задание). Удалите информацию обо всех ваших разделах с помощью утилиты fdisk. После этого восстановите ее из файлов резервных копий.
5.6. Корректная процедура выполнения практического задания: разделы жестких дисков
-
1. Используйте команду
fdisk -l
для вывода списка существующих разделов жестких дисков с информацией об их размерах. -
С использованием учетной записи пользователя root:
# fdisk -l
-
2. Используйте команду df -h для вывода списка существующих разделов жестких дисков с информацией об их размерах.
-
df -h
-
3. Сравните вывод утилиты fdisk с выводом утилиты df.
-
Информация о некоторых разделах жестких дисков будет присутствовать в выводах обоих утилит (возможно, одним из таких разделов будет раздел, представленный файлом устройства /dev/sda1 или /dev/hda1).
-
4. Создайте основной раздел размером в 200 МБ на жестком диске малого объема.
-
Выберите один из добавленных ранее дисков (в данном примере используется диск, представленный файлом устройства /dev/sdc).
root@rhel53 ~# fdisk /dev/sdc ... Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-261, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): +200m Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
-
5. Создайте основной раздел размером в 400 МБ и два логических раздела размером в 300 МБ каждый на жестком диске большого объема.
-
Выберите один из добавленных ранее дисков (в данном примере используется диск, представленный файлом устройства /dev/sdb).
fdisk /dev/sdb
при работе с утилитой fdisk :
n p 1 +400m enter --- n e 2 enter enter --- n l +300m (дважды)
-
6. Используйте команды
df -h
иfdisk -l
для проверки корректности выполненных вами действий. -
fdisk -l ; df -h
-
7. Снова сравните вывод утилиты
fdisk
с выводом утилитыdf
. Присутствует ли в выводах обоих утилит информация о новых разделах? -
Созданные разделы обнаруживаются с помощью утилиты
fdisk
.При этом эти же разделы не обнаруживаются с помощью утилиты
df
. -
8. С помощью утилиты
dd
создайте резервную копиюосновной загрузочной записи
, которая содержит информацию о вашем основном разделе размером в 200 МБ. -
dd if=/dev/sdc of=bootsector.sdc.dd count=1 bs=512
-
9. Создайте резервную копию
таблицы разделов
, содержащую информацию о вашем первичном разделе размером в 400 МБ и о логических разделах размером в 300 МБ каждый. Убедитесь в том, что информация о логических разделах добавлена в файл резервной копии таблицы разделов. -
sfdisk -d /dev/sdb > parttable.sdb.sfdisk
-
10 (дополнительное задание). Удалите информацию обо всех ваших разделах с помощью утилиты fdisk. После этого восстановите ее из файлов резервных копий.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 4. Дисковые устройства | Глава 6. Файловые системы |