Разделы диска
Общая информация
Раздел — это логическое подмножество физического диска, а информация о разделах хранится в таблице разделов
MBR и GPT
Существует два основных способа хранения информации о разделах на жестких дисках. Первый — MBR (главная загрузочная запись), второй — GPT (таблица разделов GUID).
MBR - Это наследие ранних версий MS-DOS.
Таблица разделов хранится в первом секторе диска, который называется загрузочным сектором, вместе с загрузчиком, которым в системах Linux обычно является загрузчик GRUB.
Однако у MBR есть ряд ограничений, которые препятствуют ее использованию в современных системах. Например, она не поддерживает диски размером более 2 ТБ и позволяет создать только 4 основных раздела на диске.
Однако у MBR есть ряд ограничений, которые препятствуют ее использованию в современных системах. Например, она не поддерживает диски размером более 2 ТБ и позволяет создать только 4 основных раздела на диске.
аблица разделов GUID - система разбиения на разделы, устраняющая многие ограничения MBR. Нет практических ограничений по размеру диска, а максимальное количество разделов ограничено только возможностями самой операционной системы. Чаще всего используется на современных компьютерах с UEFI вместо старого BIOS.
Управление разделами MBR с помощью FDISK
Стандартная утилита для управления разделами MBR в Linux — это fdisk
Можно создавать, редактировать или удалять разделы по своему усмотрению, но ничего не будет записано на диск, пока вы не воспользуетесь командой write (w).
#Открыть диск с помощью fdisk
fdisk /dev/sda
#Печать таблицы раздела
Command (m for help): p
Disk /dev/sda: 64 GiB, 68719476736 bytes, 134217728 sectors
Disk model: VBOX HARDDISK
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: 0xbe866450
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 616447 614400 300M 83 Linux
/dev/sda2 616448 9005055 8388608 4G 82 Linux swap / Solaris
/dev/sda3 9005056 134217727 125212672 59.7G 83 Linux
Device Устройство, подключенное к разделу. Boot Показывает, является ли раздел загрузочным. Start Сектор, в котором начинается перегородка. End Сектор, где заканчивается перегородка. Sectors Общее количество секторов в разделе. Умножьте его на размер сектора, чтобы получить размер раздела в байтах. Size Размер раздела в «человекочитаемом» формате. В приведенном выше примере значения указаны в гигабайтах. Id Числовое значение, обозначающее тип раздела. Type Описание типа раздела.
Первичные и расширенные разделы
На MBR-диске может быть два основных типа разделов: основной(первичный) и расширенный. Как мы уже говорили, на диске может быть только 4 основных раздела, и если вы хотите сделать диск «загрузочным», то первый раздел должен быть основным.
Один из способов обойти это ограничение — создать расширенный раздел, который будет служить контейнером для логических разделов.
Например, у вас может быть основной раздел, расширенный раздел, занимающий оставшуюся часть дискового пространства, и пять логических разделов внутри него.
В таких операционных системах, как Linux, к основным и расширенным разделам относятся одинаково, поэтому нет никаких «преимуществ» в использовании одного из них.
Создание раздела
Чтобы создать раздел, используйте команду n . По умолчанию разделы создаются в начале нераспределенного пространства на диске. Вам будет предложено указать тип раздела (основной или расширенный), а также первый и последний секторы.
Для первого сектора обычно можно использовать значение по умолчанию, предложенное fdisk, если только вам не нужно, чтобы раздел начинался с определенного сектора.
Вместо указания последнего сектора можно указать размер, а затем добавить буквы K, M, G, T или P (кило, мега, гига, тера или пета). Например, если вы хотите создать раздел размером 1 ГБ, вы можете указать +1G в качестве Last sector, и fdisk определит соответствующий размер раздела
Проверка на наличие нераспределенного пространства
Command (m for help): F
Unpartitioned space /dev/sda: 0 B, 0 bytes, 0 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Удаление разделов
Имейте в виду, что при удалении расширенного раздела все логические разделы внутри него также будут удалены.
+700M
Значение выходит за пределы допустимого диапазона.
Это происходит потому, что самое большое непрерывное нераспределенное пространство на диске — это блок размером 512 МБ
Изменение типа раздела
Это делается с помощью команды t, за которой следует номер раздела, тип которого вы хотите изменить.
Тип раздела должен быть указан соответствующим шестнадцатеричным кодом. Список всех допустимых кодов можно посмотреть с помощью команды l.
Не путайте тип раздела с используемой в нем файловой системой. Хотя раньше между ними была связь, сегодня это не так. Например, раздел Linux может содержать любую файловую систему, совместимую с Linux, такую как ext4 или ReiserFS.
Разделы Linux имеют тип 83 (Linux). Разделы подкачки имеют тип 82 (Linux Swap).
Управление разделами GUID с помощью GDISK
Утилита gdisk является аналогом fdisk при работе с дисками с разделами GPT. По сути, ее интерфейс создан по образцу fdisk, с интерактивной командной строкой и теми же (или очень похожими) командами.
На GPT-дисках хранятся резервные копии заголовка GPT и таблицы разделов, что упрощает восстановление дисков в случае повреждения этих данных. gdisk предоставляет функции для решения таких задач, доступ к которым осуществляется с помощью команды r .
Вы можете восстановить поврежденный основной заголовок GPT или таблицу разделов с помощью b и c соответственно, либо использовать основной заголовок и таблицу для восстановления резервной копии с помощью d и e.
Кроме того, вы можете преобразовать MBR в GPT с помощью f и выполнить обратное преобразование с помощью g. Введите ? в меню восстановления, чтобы просмотреть список всех доступных команд восстановления и их описание.
#Для Linux Alpine
apk add gptfdisk
Создание файловых систем
Разбиение диска на разделы — это только первый шаг к его использованию. После этого вам нужно будет отформатировать раздел с помощью файловой системы, прежде чем использовать его для хранения данных.
Файловая система определяет способ хранения данных на диске и доступа к ним. Linux поддерживает множество файловых систем, в том числе собственные, такие как семейство ext (расширенная файловая система), а также файловые системы других операционных систем, например FAT из MS-DOS, NTFS из Windows NT, HFS и HFS+ из Mac OS и т. д.
Стандартным инструментом для создания файловой системы в Linux является mkfs, который существует во множестве «вариантов» в зависимости от того, с какой файловой системой ему нужно работать.
Создание файловой системы ext2/ext3/ext4
Расширенная файловая система (ext) была первой файловой системой для Linux. Со временем ее сменили новые версии — ext2, ext3 и ext4, которая в настоящее время является файловой системой по умолчанию для многих дистрибутивов Linux.
Утилиты mkfs.ext2, mkfs.ext3 и mkfs.ext4 используются для создания файловых систем ext2, ext3 и ext4
На самом деле все эти «утилиты» существуют только как символические ссылки на другую утилиту под названием mke2fs
mke2fs изменяет настройки по умолчанию в зависимости от того, как она называется
Вместо использования команды, соответствующей файловой системе, которую вы хотите создать, вы можете передать параметр -t в mke2fs, а затем указать имя файловой системы.
#Самая простая форма использования:
#TARGET — это имя раздела, на котором должна быть создана файловая система
mkfs.ext2 TARGET
#следующие команды эквивалентны и позволяют создать файловую систему ext4 на /dev/sdb1.
mkfs.ext4 /dev/sdb1
mke2fs -t ext4 /dev/sdb1
mke2fs поддерживает широкий спектр параметров и опций командной строки. Вот некоторые из наиболее важных. Все они также применимы к mkfs.ext2, mkfs.ext3 и mkfs.ext4:
-b SIZE - Устанавливает размер блоков данных в устройстве на уровне SIZE, который может составлять 1024, 2048 или 4096 байт на блок.
-c - Перед созданием файловой системы проверяет целевое устройство на наличие поврежденных блоков.
Вы можете выполнить тщательную, но более длительную проверку, дважды указав этот параметр, как в mkfs.ext4 -c -c TARGET.
-d DIRECTORY - Копирует содержимое указанного каталога в корневую папку новой файловой системы. Полезно, если вам нужно «предварительно заполнить» диск определенным набором файлов.
-F - Осторожно! Этот параметр заставит mke2fs создать файловую систему, даже если другие параметры, переданные в команду, или цель небезопасны или вообще бессмысленны. Если указать этот параметр дважды (как в -F -F), его можно будет использовать даже для создания файловой системы на подключенном или используемом устройстве, что очень, очень опасно.
-L VOLUME_LABEL - Присвоит метке тома значение, указанное в VOLUME_LABEL.
-n - Это действительно полезная опция, которая имитирует создание файловой системы и показывает, что было бы сделано, если бы команда выполнялась без опции n . Считайте, что это «пробный» режим. Полезно проверить все перед тем, как вносить изменения на диск.
-q - Тихий режим. mke2fs работает в обычном режиме, но не выводит данные на терминал. Полезно при запуске mke2fs из скрипта.
-U ID
Это позволит присвоить UUID (универсальный уникальный идентификатор) раздела значение, указанное в качестве ID. UUID — это 128-битные числа в шестнадцатеричной системе счисления, которые служат для уникальной идентификации раздела в операционной системе. Это число указывается в виде 32-значной строки в формате 8-4-4-4-12, то есть 8 цифр, дефис, 4 цифры, дефис, 4 цифры, дефис, 4 цифры, дефис, 12 цифр, например D249E380-7719-45A1-813C-35186883987E. Вместо идентификатора можно указать такие параметры, как clear для очистки UUID файловой системы, random для использования случайно сгенерированного UUID или time для создания UUID на основе времени.
-V - Подробный режим, при котором во время работы выводится гораздо больше информации, чем обычно. Полезно для отладки.
Создание файловой системы XFS
Инструменты для управления файловыми системами XFS входят в состав пакета xfsprogs
Файловые системы XFS состоят как минимум из двух частей: секции журнала, в которой ведется журнал всех операций с файловой системой (обычно называемый журналом), и секции данных.
Секция журнала может находиться внутри секции данных (по умолчанию) или даже на отдельном диске для повышения производительности и надежности.
Самая простая команда для создания файловой системы XFS — mkfs.xfs TARGET, где TARGET — это раздел, в котором вы хотите создать файловую систему. Например: mkfs.xfs /dev/sda1.
Как и в mke2fs, mkfs.xfs поддерживает ряд параметров командной строки.
:-b size=VALUE
Устанавливает размер блока в файловой системе в байтах равным значению, указанному в VALUE. Значение по умолчанию — 4096 байт (4 КиБ), минимальное значение — 512, максимальное — 65 536 (64 КиБ).
-m crc=VALUE
Параметры, начинающиеся с -m, — это параметры метаданных. Этот параметр включает (если VALUE равно 1) или отключает (если VALUE равно 0) использование проверок CRC32c для проверки целостности всех метаданных на диске. Это позволяет лучше выявлять ошибки и восстанавливаться после сбоев, связанных с аппаратными проблемами, поэтому по умолчанию эта функция включена. Влияние этой проверки на производительность должно быть минимальным, поэтому обычно ее не отключают.
-m uuid=VALUE
Устанавливает UUID раздела в соответствии с параметром VALUE
-f - Принудительно создать файловую систему на целевом устройстве, даже если на нем уже есть файловая система.
-l logdev=DEVICE
В этом случае раздел журнала в файловой системе будет находиться на указанном устройстве, а не в разделе данных.
-l size=VALUE
Это позволит установить размер раздела журнала, указанный в VALUE. Размер можно указать в байтах, а также использовать суффиксы m или g. Например, -l size=10m ограничит размер раздела журнала 10 мегабайтами.
Знакомство с файловой системой Btrfs
Btrfs (официальное название — файловая система B-Tree, произносится как «Butter FS», «Better FS» или даже «Butterfuss», на ваш выбор) — это файловая система, которая разрабатывается с 2007 года специально для Linux корпорацией Oracle и другими компаниями, в том числе Fujitsu, Red Hat, Intel, SUSE и другими.
Btrfs обладает множеством функций, которые делают ее привлекательной для современных систем с большими объемами хранения данных. Среди них поддержка нескольких устройств (в том числе чередование, зеркалирование и чередование с зеркалированием, как в RAID), прозрачное сжатие, оптимизация для твердотельных накопителей, инкрементное резервное копирование, создание снимков, онлайн-дефрагментация, офлайн-проверка, поддержка подтомов (с квотами), дедупликация и многое другое.
Поскольку это файловая система с копированием при записи, она очень устойчива к сбоям. Кроме того, Btrfs проста в использовании и хорошо поддерживается многими дистрибутивами Linux. А некоторые из них, например SUSE, используют ее в качестве файловой системы по умолчанию.
В традиционной файловой системе при перезаписи части файла новые данные записываются поверх старых, которые они заменяют. В файловой системе с копированием при записи новые данные записываются в свободное место на диске, затем исходные метаданные файла обновляются с указанием на новые данные, и только после этого старые данные освобождаются, поскольку в них больше нет необходимости. Это снижает вероятность потери данных в случае сбоя, поскольку старые данные удаляются только после того, как файловая система убедится, что они больше не нужны, а на их место пришли новые.
Создание файловой системы Btrfs
Утилита mkfs.btrfs используется для создания файловой системы Btrfs.
При использовании команды без каких-либо параметров создается файловая система Btrfs на указанном устройстве, например так:
С помощью -L можно задать метку (или имя) для вашей файловой системы
#Создание файловой системы на разделе
mkfs.btrfs /dev/sdb1
mkfs.btrfs -d single -m single /dev/sdb /dev/sdc
Файловые системы, охватывающие несколько разделов, как в примере выше, на первый взгляд могут показаться выгодными, но с точки зрения безопасности данных это не лучшая идея, поскольку выход из строя одного диска в массиве означает неизбежную потерю данных. Чем больше дисков вы используете, тем выше риск, поскольку увеличивается количество возможных точек отказа
Подтома — это как бы файловые системы внутри файловых систем
Представьте, что это каталог, который можно смонтировать как отдельную файловую систему (и использовать как таковую).
Подтома упрощают организацию и системное администрирование, поскольку для каждого из них можно установить отдельные квоты или правила создания снимков.
Подтома упрощают организацию и системное администрирование, поскольку для каждого из них можно установить отдельные квоты или правила создания снимков.
Подтома — это не разделы. Раздел выделяет фиксированное пространство на диске. Это может привести к проблемам в дальнейшем, например к нехватке места в одном разделе, в то время как в другом его предостаточно. С подтомами дело обстоит иначе: они «делят» свободное пространство с корневой файловой системой и увеличиваются по мере необходимости.
Предположим, у вас есть файловая система Btrfs, смонтированная на /mnt/disk, и вы хотите создать внутри нее подтом для хранения резервных копий. Назовем его BKP:
#Создать подтом
btrfs subvolume create /mnt/disk/BKP
#к подтомам можно получить доступ так же, как и к любому другому каталогу
ls -lh /mnt/disk/
всего 0
drwxr-xr-x 1 root root 0 13 июл 17:35 BKP
drwxrwxr-x 1 carol carol 988 13 июл 17:30 Images
#Мы можем проверить, активен ли подтом, с помощью команды:
btrfs subvolume show /mnt/disk/BKP/
Имя: BKP
UUID: e90a1afe-69fa-da4f-9764-3384f66fa32e
Родительский UUID: -
Полученный UUID: -
Время создания: 2019-07-13 17:35:40 -0300
Идентификатор вложенного объема: 260
Генерация: 23
Генерация при создании: 22
Родительский идентификатор: 5
Идентификатор верхнего уровня: 5
Флаги: -
Снимок (ы):
#подключить подтом к /mnt/BKP , передав параметр -t btrfs -o subvol=NAME в команду mount
#Параметр -t указывает тип монтируемой файловой системы
mount -t btrfs -o subvol=BKP /dev/sdb1 /mnt/bkp
Снимки — это то же самое, что и подтома, только они предварительно заполнены содержимым тома, из которого был сделан снимок.
После создания моментальный снимок и исходный том имеют абсолютно одинаковое содержимое.
Изменения, внесенные в исходный том (например, добавление, переименование или удаление файлов), не отразятся на моментальном снимке, и наоборот.
Помните, что моментальный снимок не дублирует файлы и изначально занимает почти нулевое дисковое пространство. Он просто дублирует дерево файловой системы, указывая на исходные данные.
Команда для создания снимка состояния такая же, как и для создания подтома, только после snapshot.btrfs subvolume нужно добавить параметр .
Приведенная ниже команда создаст снимок состояния файловой системы Btrfs, смонтированной в /mnt/disk в /mnt/disk/snap:
btrfs subvolume snapshot /mnt/disk /mnt/disk/snap
#можно создавать снимки только для чтения
btrfs subvolume snapshot -r /mnt/disk /mnt/disk/snap
Btrfs поддерживает прозрачное сжатие файлов с использованием трех различных алгоритмов. Это делается автоматически для каждого файла, если файловая система смонтирована с опцией -o compress . Алгоритмы достаточно интеллектуальны, чтобы распознавать несжимаемые файлы и не пытаться их сжимать, экономя системные ресурсы. Таким образом, в одном каталоге могут находиться как сжатые, так и несжатые файлы. По умолчанию используется алгоритм сжатия ZLIB, но также доступны LZO (быстрее, но с меньшей степенью сжатия) и ZSTD (быстрее, чем ZLIB, с сопоставимой степенью сжатия) с несколькими уровнями сжатия (см. соответствующую цель в параметрах монтирования).
GNU Parted
GNU Parted — это очень мощный редактор разделов (отсюда и название), с помощью которого можно создавать, удалять, перемещать, изменять размер, восстанавливать и копировать разделы. Он может работать как с дисками GPT, так и с дисками MBR и удовлетворит практически все ваши потребности в управлении дисками.
В отличие от fdisk и gdisk, parted вносит изменения в диск сразу после выполнения команды, не дожидаясь, пока другая команда запишет изменения на диск. Для тренировки лучше использовать пустой или резервный диск или флешку, чтобы не потерять данные в случае ошибки.
Самый простой способ начать работу с parted — ввести parted DEVICE, где DEVICE — устройство, которым вы хотите управлять (parted /dev/sdb). Программа запускает интерактивный интерфейс командной строки, похожий на fdisk и gdisk, с подсказкой (parted) для ввода команд.
Будьте внимательны! Если вы не укажете устройство, parted автоматически выберет для работы основной диск (обычно /dev/sda)
#Установка
apk add parted
#Подключение диска
parted /dev/sda
#Справка по командам
(parted) h
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all] display the partition table, or available devices, or free space, or all found partitions
quit exit program
rescue START END rescue a lost partition near START and END
resizepart NUMBER END resize partition NUMBER
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
type NUMBER TYPE-ID or TYPE-UUID type set TYPE-ID or TYPE-UUID of partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
#переключиться на другой диск
select /dev/sdb
#получить дополнительную информацию о текущем диске
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 68.7GB 64.1GB primary ext4
#получить список всех блочных устройств, подключенных к вашей системе
print devices
/dev/sda (68.7GB)
#получить информацию обо всех подключенных устройствах одновременно
(parted) print all
#узнать, сколько свободного места осталось на каждом устройстве
(parted) print free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 68.7GB 64.1GB primary ext4
Создание таблицы разделов на пустом диске
Чтобы создать таблицу разделов на пустом диске, используйте команду mklabel, а затем укажите тип таблицы разделов, который вы хотите использовать.
Существует множество поддерживаемых типов таблиц разделов, но основные типы, о которых вам следует знать, - это msdos который используется здесь для ссылки на таблицу разделов MBR и gpt для ссылки на таблицу разделов GPT.
#Чтобы создать таблицу разделов MBR
mklabel msdos
#чтобы создать таблицу разделов GPT
mklabel gpt
#Пример
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 68.7GB 64.1GB primary ext4
(parted) mklabel gpt
Warning: Partition(s) on /dev/sda are being used.
Ignore/Cancel? Ignore
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Yes
Error: Partition(s) 1, 2, 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s)
will remain in use. You should reboot now before making further changes.
Ignore/Cancel?
Создание раздела
Для создания раздела используется команда mkpart с синтаксисом mkpart PARTTYPE FSTYPE START END, где:
PARTTYPE - Тип раздела, который может быть представлен как primary, logical или extended в случае использования таблицы разделов MBR.
FSTYPE - Указывает, какая файловая система будет использоваться в этом разделе. Обратите внимание, что parted не создает файловую систему. Он просто устанавливает флаг в разделе, который сообщает ОС, какие данные следует ожидать.
START - Указывает точную точку на устройстве, с которой начинается раздел. Для указания этой точки можно использовать разные единицы измерения. 2s можно использовать для указания второго сектора диска, а 1m — для указания начала первого мегабайта диска. Другие распространенные единицы измерения — B (байты) и % (процент от объема диска).
END - Указывает конец раздела. Обратите внимание, что это не размер раздела, а точка на диске, где он заканчивается. Например, если вы укажете 100m, раздел закончится через 100 МБ после начала диска. Можно использовать те же единицы измерения, что и в параметре START .
#Пример создания раздела
#Создает основной раздел типа ext4, начиная с первого мегабайта диска и заканчивая 100-м мегабайтом
mkpart primary ext4 1m 100m
Удаление раздела
Чтобы удалить раздел, используйте команду rm, за которой следует номер раздела, который можно отобразить с помощью команды print . Таким образом, rm 2 удалит второй раздел на выбранном диске.
Восстановление разделов
С помощью parted можно восстановить удаленный раздел.
Чтобы восстановить раздел, вы можете использовать команду rescue с синтаксисом rescue START END, где START — это приблизительное местоположение начала раздела, а END — приблизительное местоположение его конца.
rescue может восстановить только разделы с установленной файловой системой. Пустые разделы не обнаруживаются.
#Посмотреть резделы
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 68.7GB 64.1GB primary ext4
#Удалить раздел
(parted) rm 3
#Восстановить раздел
(parted) rescue 4600m 68800m
Information: A ext4 primary partition was found at 4611MB -> 68.7GB. Do you want to add it to the partition table?
Yes/No/Cancel? Yes
(parted)
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 68.7GB 64.1GB primary ext4
Изменение размера разделов ext2/3/4
С помощью команды parted можно изменить размер разделов, увеличив или уменьшив их. Однако есть некоторые нюансы:
Во время изменения размера раздел не должен быть использован и должен быть размонтирован
Вам потребуется достаточно свободного места после раздела, чтобы увеличить его до нужного размера
Команда выглядит так: resizepart, за которой следует номер раздела и место, где он должен заканчиваться.
Попытка увеличить раздел 1 с помощью resizepart приведет к появлению сообщения об ошибке, поскольку при новом размере раздел 1 будет перекрывать раздел 2. Однако размер раздела 3 можно изменить, так как после него есть свободное пространство, что можно проверить с помощью команды print free
Будьте внимательны при уменьшении размера разделов. Если вы нарушите порядок действий, то потеряете данные!
#уменьшить размер раздела
(parted) print free
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 68.7GB 64.1GB primary ext4
(parted)
(parted)
(parted) resizepart
Partition number? 3
Warning: Partition /dev/sda3 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [68.7GB]? 65GB
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? Yes
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 68.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 316MB 315MB primary ext4 boot
2 316MB 4611MB 4295MB primary linux-swap(v1) swap
3 4611MB 65.0GB 60.4GB primary ext4
#Увеличение раздела
(parted) resizepart
Partition number? 3
Warning: Partition /dev/sda3 is being used. Are you sure you want to continue?
Yes/No? Yes
End? [65.0GB]? 68.7GB
Но изменение размера раздела — это только часть задачи. Вам также нужно изменить размер файловой системы, которая на нем размещена. Для файловых систем ext2/3/4 это делается с помощью команды resize2fs
Для изменения размера можно использовать команду resize2fs DEVICE SIZE, где DEVICE — это раздел, размер которого нужно изменить, а SIZE — новый размер. Если параметр размера не указан, будет использовано все доступное пространство раздела. Перед изменением размера рекомендуется отключить раздел.
apk add e2fsprogs-extra
resize2fs /dev/sdb3 68.7GB
Создание разделов подкачки
В Linux система может при необходимости переносить страницы памяти из оперативной памяти на диск, сохраняя их в отдельном пространстве, обычно реализованном в виде отдельного раздела на диске, который называется раздел подкачки или просто swap.
Этот раздел должен быть определенного типа и настроен с помощью соответствующей утилиты (mkswap), прежде чем его можно будет использовать.
Чтобы создать раздел подкачки с помощью fdisk или gdisk, действуйте так же, как при создании обычного раздела. В fdisk используйте команду t. Выберите раздел, который хотите использовать, и измените его тип на 82.
После создания и правильной идентификации раздела просто используйте mkswap и укажите устройство, представляющее раздел, который вы хотите использовать
mkswap /dev/sda2
#включить подкачку для этого раздела
swapon /dev/sda2
Linux также поддерживает использование своп-файлов файлов подкачки вместо разделов. Просто создайте пустой файл нужного размера с помощью dd, а затем используйте mkswap и swapon с этим файлом в качестве цели.
#Создайте файл подкачки
dd if=/dev/zero of=myswap bs=1M count=1024
#
mkswap myswap
#Включить подкачку
swapon myswap
if= — это входной файл, источник данных, которые будут записаны в файл. В данном случае это устройство /dev/zero, которое предоставляет столько NULL символов, сколько требуется. of= — это выходной файл, который будет создан. bs= — это размер блоков данных, указанный в мегабайтах, а count= — количество блоков, которые будут записаны в выходной файл. 1024 блока по 1 МБ каждый равны 1 ГБ.
И mkswap и swapon выдадут ошибку, если у вашего файла подкачки небезопасные права доступа. Рекомендуемый флаг прав доступа к файлу — 0600. Владелец и группа должны быть root.
Какая команда нужна для создания файловой системы ext3 с проверкой на наличие поврежденных блоков, с меткой MyDisk и случайным UUID на устройстве /dev/sdc1?
mkfs.ext3 -c -L MyDisk -U random /dev/sdc1
С помощью parted какой командой можно создать раздел ext4 размером 300 МБ, начиная с 500 МБ на диске?
Используйте mkpart primary ext4 500m 800m. Помните, что вам придется создать файловую систему с помощью mkfs.ext4, так как parted этого не делает.
Представьте, что у вас есть 2 раздела, один на /dev/sda1 и другой на /dev/sdb1, размером по 20 ГБ каждый. Как их можно использовать в одной файловой системе Btrfs таким образом, чтобы содержимое одного раздела автоматически зеркалировалось на другом, как в RAID-массиве? Какого размера будет файловая система? Используйте mkfs.btrfs /dev/sda1 /dev/sdb1 -m raid1. Полученная файловая система будет иметь размер 20 ГБ, поскольку один раздел является зеркальным отражением другого.
Рассмотрим диск объемом 2 ГБ с таблицей разделов MBR и следующей структурой: Диск /dev/sdb: 1,9 ГиБ, 1998631936 байт, 3903578 секторов Модель диска: DataTraveler 2.0 Единицы измерения: секторы по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер ввода-вывода (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0x31a83a48 Устройство Загрузочные начальные конечные сектора Размер Id Тип /dev/sdb1 2048 1050623 1048576 512M 83 Linux /dev/sdb3 2099200 3147775 1048576 512M 83 Linux Можно ли создать на нем раздел объемом 600 МБ? Зачем? Вы не можете этого сделать, потому что у вас недостаточно свободного места. Первый признак того, что что-то не так, — это список устройств: у вас есть /dev/sdb1 и /dev/sdb3, но нет /dev/sdb2. Значит, чего-то не хватает. Затем нужно посмотреть, где заканчивается один раздел и начинается другой. Первый раздел заканчивается в секторе 1050623, а второй начинается в 2099200. Это «пробел» в 1048577 секторов. При размере сектора в 512 байт это 536 871 424 байта. Если разделить это число на 1024, получится 524 288 килобайт. Снова разделите на 1024, и вы получите... 512 МБ. Это размер «пробела». Если объем диска составляет 2 ГБ, то после создания раздела 3 у нас останется максимум 512 МБ. Даже если в общей сложности у нас останется около 1 ГБ нераспределенного пространства, максимальный непрерывный блок составляет 512 МБ. Таким образом, места для раздела объемом 600 МБ не хватит.
На диске /dev/sdc у нас есть первый раздел размером 1 ГБ с файловой системой ext4 и 241 МБ файлов. Как с помощью parted уменьшить его размер, чтобы в нем осталось только место для файлов? Это многоэтапная операция. Сначала нужно уменьшить размер файловой системы с помощью resize2fs. Вместо того чтобы указывать новый размер напрямую, можно использовать параметр -M, чтобы он был просто «достаточно большим». Итак: resize2fs -M /dev/sdc1. Затем измените размер самого раздела с помощью parted, используя resizepart. Поскольку это первый раздел, можно предположить, что он начинается с нуля и заканчивается на отметке 241 МБ. Таким образом, команда выглядит так: resizepart 1 241M.
Представьте, что у вас есть диск по адресу /dev/sdb, и вы хотите создать в его начале раздел размером 1 ГБ. С помощью parted вы создаете раздел с помощью mkpart primary linux-swap 0 1024M. Затем вы включаете подкачку на этом разделе с помощью swapon /dev/sdb1, но получаете следующее сообщение об ошибке: swapon: /dev/sdb1: read swap header failed Что пошло не так? Вы создали раздел нужного типа (linux-swap), но помните, что mkpart не создает файловую систему. Прежде чем использовать раздел, не забудьте настроить его как пространство подкачки с помощью mkswap.
В ходе этого урока вы опробовали несколько команд в parted но по ошибке удалили третий раздел на жестком диске. Вы знаете, что он располагался после раздела EFI размером 250 МБ и раздела подкачки размером 4 ГБ и занимал 10 ГБ. Какую parted команду можно использовать для его восстановления? Не паникуйте, у вас есть вся необходимая информация для восстановления раздела. Просто используйте rescue и посчитайте. До этого у вас было 250 МБ + 4,096 МБ (4*1024), так что начальная точка должна быть примерно на 4346 МБ. Плюс 10,240 МБ (10*1024), итого 14,586 МБ. Так что rescue 4346m 14586m должно сработать. Возможно, вам придется немного «подстраховаться» и начать немного раньше, а закончить немного позже, в зависимости от геометрии вашего диска.
Представьте, что у вас есть неиспользуемый раздел объемом 4 ГБ на /dev/sda3. С помощью fdisk выполните следующие действия, чтобы превратить его в активный раздел подкачки. Сначала измените тип раздела на «Linux Swap» (82), запишите изменения на диск и выйдите из программы. Затем с помощью mkswap настройте раздел как область подкачки. Затем с помощью swapon включите ее.






