I. Обзор
Обычно инструменты для создания разделов, которые мы используем, представляют собой
fdisk
команды, но поскольку поддерживаютсяfdisk
только разделы MBR , а таблица разделов MBR поддерживает диски размером до 2T, невозможно разделить разделы размером более 2T. Инструментparted
может разделить один раздел размером более 2T в формате GPT , а также может разделить обычные разделы MBR .
Команда parted — это мощный инструмент для разметки диска и изменения размера разделов, разработанный организацией GNU. Диск формата GPT эквивалентен 416 байтам исходных 4 таблиц разделов, зарезервированных на исходном диске MBR, зарезервированы только первые 16 байтов, аналогично расширенному разделу, реальная таблица разделов находится после 512 байт, а раздел GPT В методе нет ограничения на четыре основных раздела, **до 128 основных разделов**. Давайте посмотрим на использование команды parted.
1.1 Грамматическая структура
parted [选项]… [设备 [命令 [参数]…]…]
2. Опции
选项 描述
-h –help 显示此求助信息
-l –list 列出所有设别的分区信息
-i –interactive 在必要时,提示用户
-s –script 从不提示用户
-v –version 显示版本
3. Команда операции
parted交互命令 说 明
check NUMBER 做一次简单的文件系统检测
cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER 复制文件系统到另一个分区
help [COMMAND] 显示所有的命令帮助
mklabel,mktable LABEL-TYPE 创建新的磁盘卷标(分区表)
mkfs NUMBER FS-TYPE 在分区上建立文件系统
mkpart PART-TYPE [FS-TYPE] START END 创建一个分区
mkpartfs PART-TYPE FS-TYPE START END 创建分区,并建立文件系统
move NUMBER START END 移动分区
name NUMBER NAME 给分区命名
print [devices|free|list,all|NUMBER] 显示分区表、活动设备、空闲空间、所有分区
quit 退出
rescue START END 修复丢失的分区
resize NUMBER START END 修改分区大小
rm NUMBER 删除分区
select DEVICE 选择需要编辑的设备
set NUMBER FLAG STATE 改变分区标记
toggle [NUMBER [FLAG]] 切换分区表的状态
unit UNIT 设置默认的单位
Version 显示版本
4. Пример интерактивной работы
3.1 Выберите раздел жесткого диска
Во-первых, аналогично fdisk, сначала выберите жесткий диск, который нужно разбить, вот /dev/hdb: ((parted) указывает на команду, введенную в parted, а другая информация печатается автоматически)
[root@my-linux ~]# parted /dev/hdb
GNU Parted 1.8.1
Using /dev/hdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
3.2 Создание разделов
Мы выбрали /dev/hdb в качестве диска, с которым мы работаем, а затем нам нужно создать таблицу разделов (вы можете использовать команду help для вывода справочной информации в parted):
(parted) mklabel
New disk label type? gpt (我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车)
3.3 Завершите операцию раздела
После создания таблицы разделов можно выполнить следующую операцию с разделами: выполните команду mkpart и введите имя раздела, файловую систему, а также начальное и конечное расположение раздела соответственно.
(parted) mkpart
Partition name? []? dp1
File system type? [ext2]? xfs
Start? 0 (可以用百分比表示,比如Start? 0% , End? 50%)
End? 500GB
3.4 Проверка информации о разделе
После разделения вы можете использовать команду печати для печати информации о разделе.Ниже приведен пример печати
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdb: 3841GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500GB 500GB dp1
3.5 Пример удаления раздела
Если раздел неверный, вы можете использовать команду rm для удаления раздела, например, мы хотим удалить указанный выше раздел, а затем распечатать результат после удаления.
(parted)rm 1 #rm后面使用分区的号码,就是用print打印出来的Number
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdb: 3841GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
3.6 Операция форматирования
В интерактивном состоянии после завершения мы можем использовать quit
команду для выхода из parted и использовать системную mkfs
команду для форматирования раздела.
[root@my-linux ~]# fdisk -l
WARNING: GPT (GUID Partition Table) detected on '/dev/hdb'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/hdb: 3841.0 GB, 3841022206976 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 1 267350 2147482623+ ee EFI GPT
[root@my-linux ~]# mkfs.xfs /dev/hdb1
[root@my-linux ~]# mkfs.xfs /dev/hdb2
[root@my-linux ~]# mkdir /data1 /data2
[root@my-linux ~]# mount /dev/hdb1 /data1
[root@my-linux ~]# mount /dev/hdb2 /data2
3.7 Полный пример интерактивного создания разделов
Разделите весь жесткий диск на зоны по вышеуказанной методике, ниже пример после деления
(parted) mkpart
Partition name? []? dp1
File system type? [ext2]? xfs
Start? 0
End? 500GB
(parted) mkpart
Partition name? []? dp2
File system type? [ext2]? xfs
Start? 500GB
End? 3841GB
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/hdb: 3841GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 500GB 500GB dp1
2 500GB 3841GB 1699GB dp2
5. Неинтерактивный режим
5.1 Создать таблицу разделов
parted /dev/sdl mklabel gpt
5.2 Выделите всю емкость жесткого диска основному разделу
parted /dev/sdl mkpart primary 0% 100%
5.3 Запрос существующих разделов диска
parted /dev/sdl print
5.4 Запрос раздела жесткого диска
fdisk -l
or
lsblk
5.5 Форматирование раздела
mkfs -t xfs /dev/sdl1
Отличие файловой системы EXT3, EXT4 и XFS:
EXT3
(1) Он может поддерживать только файловую систему размером 32 ТБ и файл размером не более 2 ТБ, и он может поддерживать только файловую систему 2 ТБ и файл размером 16 ГБ (2)
Ext3 в настоящее время поддерживает только 32 000 подкаталогов
(3) Ext3 файловая система использует 32-битные записи пространства Количество блоков и количество i-узлов
(4) Когда данные записываются в файловую систему Ext3, распределитель блоков данных Ext3 может выделить только один блок размером 4 КБ за
раз
. log файловая система в системе Linux и представляет собой файл EXT3. Последующая версия системы.
(1) Емкость файловой системы Ext4 достигает 1 ЭБ, а емкость файла достигает 16 ТБ
(2) Теоретически поддерживает неограниченное количество подкаталогов
(3) Файловая система Ext4 использует 64-битное пространство для записи количества блоков и i-узлов
(4) Ext4 Многоблочный распределитель поддерживает один вызов для выделения нескольких блоков данных.
XFS
(1) быстро восстанавливает содержимое файлов на диске за короткий период времени в соответствии с записанным журналом
(2) использует оптимизированный алгоритм и влияние записи журнала для общей файловой операции очень малы
(3) Это полноценная 64-битная файловая система, которая может поддерживать миллионы терабайт дискового пространства
(4) Она может хранить данные с производительностью, близкой к необработанному вводу-выводу устройства
5.6 Запрос blkid /dev/sdl1
blkid /dev/sdl1
5.7 Изменить /etc/fstab
vi /etc/fstab
Отредактировано /etc/fstab
, чтобы загрузка знала о смонтированной файловой системе.
5.8 Монтировать файловую систему, запрос
mount -a
df -h
6. Пример неинтерактивного режима
6.1 Создать таблицу разделов gpt
[root@my-linux ~]# parted /dev/sdb mklabel gpt
Information: You may need to update /etc/fstab.
6.2 Разделить на 3 раздела
[root@my-linux ~]# parted /dev/sdb mkpart primary 0% 27%
Information: You may need to update /etc/fstab.
[root@my-linux ~]# parted /dev/sdb mkpart primary 27% 54%
Information: You may need to update /etc/fstab.
[root@my-linux ~]# parted /dev/sdb mkpart primary 54% 81%
Information: You may need to update /etc/fstab.
6.3 Раздел печати
[root@my-linux ~]# parted /dev/sdb print
Model: HP LOGICAL VOLUME (scsi)
Disk /dev/sdb: 3841GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2097kB 1037GB 1037GB primary
2 1037GB 2074GB 1037GB primary
3 2074GB 3111GB 1037GB primary
6.4 Удалить раздел
В команде удаления раздела parted /dev/sdb rm 1
последняя цифра 1 представляет номер раздела.
[root@my-linux ~]# parted /dev/sdb rm 1
Information: You may need to update /etc/fstab.
[root@my-linux ~]# parted /dev/sdb rm 2
Information: You may need to update /etc/fstab.
[root@my-linux ~]# parted /dev/sdb rm 3
Information: You may need to update /etc/fstab.
[root@my-linux ~]# parted /dev/sdb print
Model: HP LOGICAL VOLUME (scsi)
Disk /dev/sdb: 3841GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
[root@my-linux ~]#
Один MBR и GPT
MBR: Всем знакома таблица разделов MBR (то есть главная загрузочная запись). Максимальный поддерживаемый объем: 2T, и существуют ограничения на разделы: до 4 основных разделов или 3 основных раздела плюс дополнительный раздел.
GPT: GPT (то есть таблица разделов GUID). Это более новый стандарт структуры таблицы разделов диска, основанный на стандарте EFI, и является основной формой будущих разделов диска. По сравнению с методом раздела MBR он имеет следующие преимущества. Преодолевая ограничение MBR в 4 основных раздела, каждый диск поддерживает до 128 разделов. Поддерживает разделы размером более 2 ТБ, а самый большой объем может достигать 18 ЭБ.
Восемь, ошибка выравнивания разделенного раздела
При использовании parted
для создания раздела генерируется предупреждающее сообщение: «Предупреждение: результирующий раздел не выровнен должным образом для обеспечения наилучшей производительности».
На официальном сайте Redhat есть анализ этой проблемы: https://access.redhat.com/mt/zh-hans/solutions/184143
8.1 Вопросы
(parted) mkpart primary 128 1048575
Warning: You requested a partition from 128s to 1048575s.
The closest location we can manage is 128s to 1048542s.
Is this still acceptable to you?
Yes/No? Yes
Warning: The resulting partition is not properly aligned for best performance. <-----
Ignore/Cancel? C
Игнорирование этого предупреждения позволяет создать раздел в обычном режиме, но это повлияет на производительность диска. Так как же создать правильно выровненный раздел?
8.2 Решения
8.2.1 Процент
Вообще говоря, эту проблему можно решить, если выбрать правильную начальную позицию раздела, но необходимо запросить и рассчитать соответствующие параметры. Часто проще выровнять разделы с процентами, чем с явными начальными и конечными позициями.
mkpart primary 0% 100%
или mkpart primary 0% 320GB
создает один раздел, или mkpart primary 0% 50%
и mkpart primary 50% 100%
создает два раздела одинакового размера.
8.2.2 Смещение 1 МБ
Как правило, для большинства дисков размер выравнивания по умолчанию составляет 1 МБ, поэтому в большинстве случаев mkpart
выровненный раздел можно создать, используя МБ в качестве единицы раздела. Поскольку первый МБ на диске включает устаревшую основную загрузочную запись (MBR) в секторе 0, за которой следует главная таблица gpt (если тип gpt), первый МБ на диске необходимо пропустить и начать разбиение с 1 МБ:
mkpart primary 1MiB 100%
Например, создать один раздел.
8.2.3 Расчет смещения #
Если использование процентов или смещений в 1 МБ не работает, требуемое выравнивание можно рассчитать напрямую, запросив соответствующую запись sysfs устройства,
чтобы получить следующее значение:
# cat /sys/block/sdb/queue/optimal_io_size
# cat /sys/block/sdb/alignment_offset
# cat /sys/block/sdb/queue/physical_block_size
Получение правильного количества секторов смещения заключается в сложении optimal_io_size
и alignment_offset
делении на physical_block_size
.
Например:
optimal_io_size = 1310720
alignment_offset = 0
physical_block_size = 512
i.e 1310720+0/512 = 2560
Теперь команда для создания раздела может быть:
(parted) mkpart primary 2560 100% OR
(parted) mkpart primary 2560 1000G