Создание раздела диска в Linux

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

Обычно каждый раздел рассматривается операционной системой как отдельный «диск», даже если все они находятся на одном физическом носителе. В системах Windows им присваиваются такие буквы, как C:(исторически основной диск) D:и так далее. В Linux каждый раздел назначается каталогу /dev, например /dev/sda1или /dev/sda2.

В этом уроке вы узнаете, как создавать, удалять, восстанавливать и изменять размер разделов с помощью трех наиболее распространенных утилит (fdisk, gdiskи parted). Как создавать и настраивать раздел подкачки или файл подкачки, которые используются как виртуальная память.

Понимание MBR и GPT

Существует два основных способа хранения информации о разделах на жестких дисках. Первый — MBR ( основная загрузочная запись ), а второй — GPT ( таблица разделов GUID ).

MBR

Это пережиток первых дней MS-DOS (точнее, PC-DOS 2.0 1983 года), который на протяжении десятилетий был стандартной схемой разбиения на ПК. Таблица разделов хранится в первом секторе диска, называемом загрузочным сектором, вместе с загрузчиком, которым в системах Linux обычно является загрузчик GRUB . Но MBR имеет ряд ограничений, которые препятствуют ее использованию в современных системах: невозможность адресации дисков размером более 2 ТБ и возможность создать только 4 первичных раздела на диске.

GUID

Система разделов, которая устраняет многие ограничения MBR. Практических ограничений на размер диска нет, а максимальное количество разделов ограничено только самой операционной системой. Чаще встречается на более современных машинах, использующих UEFI вместо старого BIOS.

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

Управление разделами MBR с помощью FDISK

Стандартной утилитой для управления разделами MBR в Linux является fdisk. Это интерактивная утилита с меню. Чтобы использовать его, введите, fdisk, а затем имя устройства, соответствующее диску, который вы хотите отредактировать. Например, такая команда

# fdisk /dev/sda

отредактирует таблицу разделов первого подключенного по SATA устройства (sda) в системе. Имейте в виду, что вам нужно указать устройство, соответствующее физическому диску, а не один из его разделов (например, /dev/sda1).

Все операции с дисками в этом уроке необходимо выполнять от имени пользователя root (системного администратора) или с привилегиями root, используя sudo.

При вызове fdisk покажет приветствие, затем предупреждение и будет ждать ваших команд.

# fdisk /dev/sda 
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):

Предупреждение важно. Вы можете создавать, редактировать или удалять разделы по своему усмотрению и ничего не будет записано на диск пока вы не используете команду записи w (write). Таким образом, вы можете «практиковаться» без риска потери данных. Чтобы выйти из fdisk без сохранения изменений, используйте команду q (quit).

При этом не следует практиковаться на важном диске, так как всегда есть риск. Вместо этого используйте запасной внешний диск или флэш-накопитель USB.

Печать текущей таблицы разделов

Команда p (print) используется для печати текущей таблицы разделов. Вывод примерно такой:

Command (m for help): p
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Disk model: CT120BX500SSD1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x97f8fef5

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1            4096 226048942 226044847 107.8G 83 Linux
/dev/sda2       226048944 234437550   8388607     4G 82 Linux swap / Solaris

Вот значение каждого столбца:

Device - устройство, назначенное разделу. Boot - показывает, является ли раздел «загрузочным» или нет. Start - сектор, с которого начинается раздел. End - сектор, где заканчивается раздел. Sectors - общее количество секторов в разделе. Умножьте его на размер сектора, чтобы получить размер раздела в байтах. Size - размер раздела в «удобочитаемом» формате. В приведенном выше примере значения указаны в гигабайтах. Id - числовое значение, представляющее тип раздела. Type - описание типа раздела.

Для получения аналогичной информации можно выполнить в консоли команду fdisk с опцией -l:

fdisk -l

Диск /dev/sda: 40 GiB, 42949672960 байт, 83886080 секторов
Disk model: VMware Virtual S
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x00000000

Первичные и расширенные разделы

На MBR-диске может быть 2 основных типа разделов: основной первичный (primary) и расширенный (extended). Если вы хотите сделать диск «загрузочным», первый раздел должен быть основным. И помните, что в таблице MBR может быть только 4 основных раздела на диске.

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

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

Создание раздела

Чтобы создать раздел, используйте команду n (new). По умолчанию разделы будут создаваться в начале нераспределенного пространства на диске. Вам будет предложено указать тип раздела (основной или расширенный), первый сектор и последний сектор.

Обычно для первого сектора используют значение по умолчанию, предложенное fdisk, если только вам не нужно, чтобы раздел начинался с определенного сектора. Вместо указания последнего сектора можно указать размер, за которым следуют буквы K, M, G, T или P (Kilo, Mega, Giga, Tera или Peta). Например, если нужно создать раздел размером 1 ГБ, то вместо последнего сектора укажите +1G . Ниже пример создания основного раздела:

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-3903577, default 2048): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3903577, default 3903577): +1G

Проверка нераспределенного пространства диска

Если вы не знаете сколько свободного места осталось на диске, то можете использовать команду F (free), чтобы показать нераспределенное пространство, например:

Command (m for help): F
Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

  Start     End Sectors  Size
2099200 3903577 1804378  881M

Удаление разделов

Чтобы удалить раздел, используйте команду d (delete). fdisk запросит номер раздела, который вы хотите удалить, если количество разделов больше одного. Если на диске всего один раздел, то он будет удален сразу.

Имейте в виду, что в случае удаления расширенного раздела, все логические разделы внутри него также будут удалены.

Учитывайте разрывы нераспределенного пространства

Имейте в виду, что при создании нового раздела с помощью fdisk максимальный размер будет ограничен максимальным объемом непрерывного свободного пространства на диске. Например, у вас на диске есть следующие разделы:

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdd1          2048 1050623 1048576  512M 83 Linux
/dev/sdd2       1050624 2099199 1048576  512M 83 Linux
/dev/sdd3       2099200 3147775 1048576  512M 83 Linux

Затем вы удаляете раздел 2 (/dev/sdd2) и проверяете наличие свободного места:

Command (m for help): F
Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

  Start     End Sectors  Size
1050624 2099199 1048576  512M
3147776 3903577  755802  369M

Суммарно у нас доступно 881 МБ нераспределенного пространства. Но посмотрите, что происходит, когда мы пытаемся создать раздел размером 700 МБ:

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2,4, default 2): 2
First sector (1050624-3903577, default 1050624):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-2099199, default 2099199): +700M
Value out of range.

"Value out of range" говорит о том, что допустимое значение размера раздела было превышено. Это происходит потому, что самым большим непрерывным нераспределенным пространством на диске является блок размером 512 МБ, который принадлежал разделу 2, а следующее нераспределенное пространство находится после раздела 3 (/dev/sdd3). Fdisk не может объединить нераспределенные участки. разделенные разделами.

Изменение типа раздела

Иногда вам может понадобиться изменить тип раздела, особенно при работе с дисками, которые будут использоваться в других операционных системах и платформах. Сделать это можно с помощью команды t (type), за которой следует номер раздела, который вы хотите изменить.

Тип раздела должен быть указан соответствующим шестнадцатеричным кодом. Посмотреть список всех допустимых кодов можно используя команду l (list).

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

Разделы Linux имеют тип 83(Linux). Разделы подкачки бывают типа 82(Linux Swap).

Управление разделами GUID с помощью GDISK

Утилита gdisk является эквивалентом fdisk при работе с дисками с разделением GPT. Интерфейс смоделирован аналогично fdisk, с интерактивной командной строкой и теми же (или очень похожими) командами.

Печать текущей таблицы разделов

Команда p используется для печати текущей таблицы разделов. Результат примерно такой:

Command (? for help): p
Disk /dev/sdb: 3903578 sectors, 1.9 GiB
Model: DataTraveler 2.0
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): AB41B5AA-A217-4D1E-8200-E062C54285BE
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3903544
Partitions will be aligned on 2048-sector boundaries
Total free space is 1282071 sectors (626.0 MiB)

Number Start (sector) End (sector) Size Code Name
 1 2048 2099199 1024.0 MiB 8300 Linux filesystem
 2 2623488 3147775 256.0 MiB 8300 Linux filesystem

И сразу же вы можете заметить некоторые особенности:

  • Каждый диск имеет уникальный идентификатор диска (GUID). Это 128-битное шестнадцатеричное число, назначаемое случайным образом при создании таблицы разделов. Поскольку существует 3.4 × 1038 возможных значений этого числа, вероятность того, что 2 случайных диска имеют один и тот же GUID, довольно мала. GUID можно использовать для определения того, какие файловые системы монтировать во время загрузки и где. Таким образом устраняется необходимость использования для этого пути устройства (например/dev/sdb).

  • См . фразу Partition table holds up to 128 entries. Правильно, на GPT-диске может быть до 128 разделов. Из-за этого нет необходимости в первичных и расширенных разделах.

  • Свободное место указано в последней строке, поэтому нет необходимости в эквиваленте команды F из fdisk.

Создание раздела

Для создания раздела используйте команду n, как и в fdisk. Основное отличие заключается в том, что во время создания вы также можете указать тип раздела, помимо номера раздела, первого и последнего сектора (или размера). Разделы GPT поддерживают гораздо больше типов, чем MBR. Вы можете проверить список всех поддерживаемых типов с помощью команды l.

Удаление раздела

Чтобы удалить раздел, введите команду d и номер раздела. В отличие fdisk первый раздел не будет удален автоматически, если он единственный на диске.

На GPT-дисках разделы можно легко переупорядочить или “отсортировать”, чтобы избежать пробелов в последовательной нумерации. Для этого просто используйте команду s. Например, представьте диск со следующей таблицей разделов:

Number Start (sector) End (sector) Size Code Name
 1 2048 2099199 1024.0 MiB 8300 Linux filesystem
 2 2099200 2361343 128.0 MiB 8300 Linux filesystem
 3 2361344 2623487 128.0 MiB 8300 Linux filesystem

Если вы удалите второй раздел, таблица станет:

Number Start (sector) End (sector) Size Code Name
 1 2048 2099199 1024.0 MiB 8300 Linux filesystem
 3 2361344 2623487 128.0 MiB 8300 Linux filesystem

Если вы используете команду s, она станет:

Number Start (sector) End (sector) Size Code Name
 1 2048 2099199 1024.0 MiB 8300 Linux filesystem
 2 2361344 2623487 128.0 MiB 8300 Linux filesystem

Обратите внимание, что третий раздел стал вторым.

Забудьте про разрывы нераспределенного пространства

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

Варианты восстановления

На GPT-дисках хранятся резервные копии заголовка GPT и таблицы разделов, что упрощает восстановление дисков в случае повреждения этих данных. В gdisk для доступа к функциям восстановления диска используйте команду r (recovery).

Вы можете восстановить поврежденный главный заголовок GPT или таблицу разделов с помощью команд b и c, соответственно. Или используйте главный заголовок и таблицу разделов для восстановления резервной копии с помощью команд d и e. Вы также можете преобразовать MBR в GPT с помощью f и наоборот g. Введите ? в режиме восстановления, чтобы получить список всех доступных команд восстановления и описания того, что они делают.

Last updated