В любой операционной системе диск необходимо разбить на разделы, прежде чем его можно будет использовать. Раздел — это логическое подмножество физического диска, а информация о разделах хранится в таблице разделов. Эта таблица включает информацию о первом и последнем секторах раздела и его типе, а также дополнительные сведения о каждом разделе.
Содержание
В любой операционной системе диск необходимо разбить на разделы, прежде чем его можно будет использовать. Раздел — это логическое подмножество физического диска, а информация о разделах хранится в таблице разделов. Эта таблица включает информацию о первом и последнем секторах раздела и его типе, а также дополнительные сведения о каждом разделе.
Обычно каждый раздел рассматривается операционной системой как отдельный «диск», даже если все они находятся на одном физическом носителе. В системах 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
- описание типа раздела.
Первичные и расширенные разделы
На 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 entrie
s. Правильно, на 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
.
Введите ?
в режиме восстановления, чтобы получить список всех доступных команд восстановления и описания того, что они делают.