Что вам нужно знать о дисках, чтобы успешно управлять системой Linux? Какие команды что делают? Как вы принимаете правильные решения о разделении? Какие инструменты для устранения неполадок доступны? С какими проблемами вы можете столкнуться? Эта статья охватывает широкий круг вопросов — от изучения основ файловых систем Linux до примеров некоторых очень полезных команд.
Дисковая технология
В первые дни существования В Unix и более поздних версиях Linux диски были физически большими, но очень маленькими по емкости. 300-мегабайтный диск в середине 90-х был размером с обувную коробку. Сегодня вы можете получить многотеррабайтные диски размером с кусок тоста.
Традиционно файлы располагались в файловых системах, которые располагались в разделах диска, которые сами по себе были просто частями дисков. Эта организация по-прежнему доминирует сегодня, хотя серверы в крупных центрах обработки данных часто имеют совершенно другую структуру.
////file //========= = //файловая система //================== /раздел диска /=============== ======= /disk /==========================
Этот упрощенный view по-прежнему работает для многих систем, но в наши дни существует множество сложностей, которые в некоторых отношениях усложняют управление дисками, а в других — упрощают. Файловая система может быть виртуальной — она больше не находится на одном диске и более сложна в управлении, но ее размер гораздо проще изменять по мере необходимости. Фактически, вся система может быть виртуальной. И то, чем мы могли бы управлять, как если бы это был один диск, на самом деле может быть некоторой частью очень большого дискового массива.
Управление дисками
Системным администраторам обычно приходится иметь дело с много проблем, когда дело доходит до управления дисками. К ним относятся:
- Разбиение дисков на разделы
- Создание файловых систем
- Монтирование файловых систем
- Совместное использование файловых систем
- Мониторинг свободного места в файловых системах
- Резервное копирование (а иногда и восстановление) файловых систем
Причины разделения диска включают:
- защита некоторых файловых систем от нехватки места (например, вы можете захотеть, чтобы раздел ОС был отделен от домашних каталогов или приложений, чтобы чтобы не повлиять на него, если файлы пользователей начнут занимать слишком много места на диске)
- повышение производительности
- выделение пространства подкачки
- облегчение обслуживания и резервного копирования (например,. , вы можете отключить/apps, если он не является частью/, и вы, возможно, захотите выполнять резервное копирование/home чаще, чем/usr)
- более эффективный (и целевой) fsck
- поддержание (особенно в тестовых системах) нескольких операционных систем
- резервирование достаточного дискового пространства для расширения файловой системы
- совместное использование выбранных файловых систем с другими системами
Команды разбиения
Для большинства серверов Linux разбиение выполняется до развертывания серверов. С другой стороны, вы можете добавить диски позже или ограничить значительный объем свободного дискового пространства для использования в будущем.
Чтобы внести изменения или проверить разделы, введите команду, например fdisk/dev/sda , чтобы запустить fdisk в интерактивном режиме, а затем введите m, чтобы увидеть список того, что вы можете делать с помощью команды fdisk.
$ sudo fdisk/dev /sdaCommand (m для справки): mCommand action a переключить флаг загрузки b изменить метку диска bsd c переключить флаг совместимости dos d удалить раздел l список известных типов разделов m распечатать это меню n добавить новый раздел o создать новый пустой раздел DOS таблица p распечатать таблицу разделов q выйти без сохранения изменений s создать новую пустую метку диска Sun t изменить системный идентификатор раздела u изменить единицы отображения/ввода v проверить таблицу разделов w записать таблицу на диск и выйти x дополнительные функции (только для экспертов)
Как видите, команда fdisk предоставляет множество функций. Созданные вами разделы могут выглядеть примерно так: четыре раздела были созданы на одном диске -/dev/sda.
sda+---------- - + ------------------------ + -------------------- + - ----- + | /40G | /домашний 80G | /apps 70G | своп | + ------------ + ------------------------ + --------- ----------- + ------ + sda1 sda2 sda3 sda4
Проверка дискового пространства и дисковых разделов
Есть ряд отличных команд для проверки разделов диска. Команда df — одна из наиболее часто используемых команд для создания отчетов об использовании дискового пространства. С параметром -h команда df отображает измерения в наиболее «удобном для человека» формате, и это фактически то, что означает «h». Как вы можете видеть в приведенном ниже примере, измерения отображаются в килобайтах, мегабайтах или гигабайтах в зависимости от размеров, а не в одном масштабе.
$ df -h Размер файловой системы Используется Доступно Использование% Установлено onudev 969M 4.0K 969M 1%/devtmpfs 196M 1.1M 195M 1%/run/dev/sda1 37G 4.5G 31G 13%/none 4.0K 0 4.0K 0%/sys/fs/cgroupnone 5.0M 0 5.0M 0%/ run/locknone 980M 152K 979M 1%/run/shmnone 100M 36K 100M 1%/run/user/dev/sda3 28G 44M 26G 1%/apps
pydf команда (подумайте, что «python df», поскольку это на самом деле сценарий python) также предоставляет очень полезный дисплей использования диска, показывающий точки монтирования и милые маленькие иллюстрации того, насколько заполнен каждый раздел.
$ pydfFilesystem Используемый размер Доступность Использование% Установлено на/dev/sda1 37G 4534M 30G 12.1 [## ...........]//dev/sda3 27G 44M 26G 0.2 [.............]/apps
Команда parted отображает информацию о разделе в другом формате:
$ sudo parted -lModel: ATA WDC WD800AAJS-60 (scsi) Диск/dev/sda: 80.0GB Размер сектора (логический/физический): 512B/512B Таблица разделов: msdosNumber Начало Конец Размер Тип Флаги файловой системы 1 1049 КБ 40.0 40,0 ГБ основной ext4 boot 2 40,0 ГБ 50,0 ГБ 10,0 ГБ основной linux-swap (v1) 3 50,0 ГБ 80,0 ГБ 30,0 ГБ основной ext4
lsblk ( list block devices) графически иллюстрирует взаимосвязь между дисками и их разделами, а также предоставляет основные и второстепенные номера устройств и точки монтирования.
$ lsblkNAME MAJ: MIN RM SIZE RO TYPE MOUNTPOINTsda 8: 0 0 74,5 ГБ 0 диск├─sda1 8: 1 0 37,3 ГБ 0 часть/├─sda2 8: 2 0 9,3 ГБ 0 часть [SWAP] └─sda3 8: 3 0 28 ГБ 0 часть/приложения
Отчет о команде fdisk ts более подробно описывает разделы диска и использует очень разные числа. Вы также можете использовать fdisk для создания или удаления разделов, составления списка нераспределенного пространства, изменения типа раздела или проверки таблицы разделов.
$ sudo fdisk -lDisk/dev/sda: 80,0 ГБ, 80026361856 bytes255 головки, 63 сектора на дорожку, 9729 цилиндров, всего 156301488 секторов Единицы = 1 секторов * 512 = 512 байт Размер сектора (логический/физический): 512 байт/512 байт Размер ввода-вывода (минимальный/оптимальный): 512 байт/512 байт Идентификатор диска: 0x000f114b Идентификатор конечных блоков начала загрузки устройства Система/dev/sda1 * 2048 78125055 39061504 83 Linux/dev/sda2 78125056 97656831 9765888 82 Linux swap/Solaris/dev/sda3 97656832 156301311 29322240 83 Linux
sfdisk похожа на команду fdisk, но упрощает выполнение некоторых операций по управлению разделами.
$ sudo sfdisk -l -uMDisk/dev/sda: 9729 cylinders, 255 головки, 63 сектора на дорожку Единицы = мебибайты по 1048576 байтов, блоки по 1024 байта, считая от 0 Начало загрузки устройства Конец MiB #blocks Id System/dev/sda1 * 1 38146 38146 390615 04 83 Linux/dev/sda2 38147 47683 9537 9765888 82 Linux swap/Solaris/dev/sda3 47684 76318 28635 29322240 83 Linux/dev/sda4 0 - 0 0 0 Пусто
ПРИМЕЧАНИЕ. Мебибайт (MiB) = 2 20 байтов или 1 048 576 байтов.
Команда cfdisk также может использоваться для отображения разделов диска или управления ими. .
$ sudo cfdisk cfdisk (util-linux 2.20.1) Диск:/dev/sda Размер: 80026361856 байт, 80,0 ГБ Головки: 255 секторов на дорожку: 63 Цилиндров: 9729 Имя Флаги Часть Тип Тип FS [Этикетка] Размер (МБ) ---------------------------------------- ---------------------------------- Pri/Log Free Space 1.05 * sda1 Boot Primary ext4 39998.99 * sda2 Primary swap 10000.27 * sda3 Primary ext4 30025.98 * Pri/Log Free Space 0. 10 * [Help] [New] [Print] [Quit] [Units] [Write] Создать новый раздел из свободного места
Мониторинг производительности диска
The iostat может отображать статистику, показывающую, как работают диски, в том числе насколько интенсивно они используются. Он также отображает важные измерения, которые показывают, насколько загружен ЦП и сколько его ресурсов используется для различных типов работы. Описанная ниже система простаивает более 95% времени. Что еще более важно для нашего внимания к дискам,% iowait (процессор, ожидающий ввода-вывода диска) очень низок. Это было бы неверно , если бы диск был необычно загружен, а ввод-вывод диска был узким местом.
$ iostat -x 60Linux 3.13.0-129-generic (stinkbug ) 31.08.2017 _x86_64_ (2 CPU) avg-cpu:% user% nice% system % iowait % steal% idle 0,93 1,15 0,35 1,86 0,00 95.73 Устройство: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm% utilsda 8,37 3,26 13,41 2,79 341,14 191,82 65,79 0,61 37.60 30,40 2,5 p> Вероятно, одна из самых информативных команд для проверки состояния диска - это smartctl (часть smartmontools). Хотя команда генерирует много выходных данных, она предоставляет ценные измерения, которые могут помочь вам точно определить проблемы с диском, особенно когда вы привыкнете работать с ее обширными выходными данными.
Создание раздела диска в Linux
Разбиение диска в Linux
Создание и удаление разделов в Linux - обычная практика, потому что устройства хранения (например, жесткие диски и USB-накопители) должны быть каким-то образом структурированы, прежде чем их можно будет использовать. В большинстве случаев большие запоминающие устройства делятся на отдельные секции, называемые разделами. Разбиение на разделы также позволяет разделить жесткий диск на изолированные разделы, каждый из которых ведет себя как отдельный жесткий диск. Разбиение на разделы особенно полезно, если вы используете несколько операционных систем.
Создание раздела на диске в Linux
Эта процедура описывает, как разделить диск хранения в Linux с помощью команды parted
.
Процедура
-
Перечислите разделы, используя команду
parted -l
для идентификации устройство хранения, которое вы хотите разделить. Обычно первый жесткий диск (/dev/sda
или/dev/vda
) будет содержать операционную систему, поэтому поищите другой диск, чтобы найти тот ты хочешь. Например:sudo parted -lModel: ATA RevuAhn_850X1TU5 (scsi) Disk/dev/vdc: 512GB Размер сектора (логический/физический): 512B/512B Таблица разделов : msdos Флаги диска: Число Начало Конец Размер Тип Флаги файловой системы 1 1049 КБ 525 МБ 524 МБ основная загрузка ext4 2 525 МБ 512 ГБ 512 ГБ основной lvm
-
Откройте запоминающее устройство. Используйте команду
parted
, чтобы начать работу с выбранным устройством хранения.. Например:sudo parted/dev/vdcGNU Parted 3.3 Использование/dev/vdcДобро пожаловать в GNU Parted! Наберите help, чтобы просмотреть список команд. (Parted)
Обязательно укажите конкретное устройство, которое вы хотите разделить. Если вы просто введете
parted
без имени устройства, он случайным образом выберет устройство хранения для изменения. -
Установите тип таблицы разделов на
gpt
, затем введитеДа
, чтобы принять его.(parted) mklabel gpt Предупреждение: существующая метка диска на/dev/vdc будет уничтожена, и все данные на этом диске будут потеряны. Вы хотите продолжить? Да/Нет? Да
Команды
mklabel
иmktable
используются для создания таблицы разделов на устройстве хранения. На момент написания поддерживаемые таблицы разделов:aix
,amiga
,bsd
,dvh
,gpt
,mac
,ms-dos
,pc98
,sun
,atari
иloop
. Используйтеhelp mklabel
, чтобы получить список поддерживаемых таблиц разделов. Помните, чтоmklabel
не создает раздел, а создает таблицу разделов. -
Просмотрите таблицу разделов устройства хранения.
(parted) printModel: Virtio Block Device ( virtblk) Disk/dev/vdc: 1396MBSector size (логический/физический): 512B/512BPartition Table: gptDisk Flags: Number Start End Size File system Name Flags
-
Создайте новый раздел, используя следующую команду. Например, 1396 МБ в разделе 0:
(parted) mkpart primary 0 1396 МБ Предупреждение: полученный раздел неправильно выровнен для лучшей производительности Игнорировать/Отменить? I (parted) printModel: Virtio Block Device (virtblk) Диск/dev/vdc: 1396 МБ Размер сектора (логический/физический): 512B/512B Таблица разделов: gptDisk Флаги: Число Начало Конечный размер Флаги имени файловой системы 1 17,4 КБ 1396 МБ 1396 МБ первичный
Предоставление имени раздела под GPT является обязательным; в приведенном выше примере первичным является имя, а не тип раздела. В таблице разделов GPT тип раздела используется как имя раздела.
-
Выйдите с помощью команды
quit
. Изменения автоматически сохраняются при выходе изparted
.(parted) quitИнформация: вам может потребоваться обновить/etc/ fstab.
Команда справки для создания нового раздела
Чтобы получить справку о том, как создать новый раздел, введите: help mkpart
.
(parted) help mkpart mkpart PART-TYPE [FS-TYPE] START END создать раздел PART-TYPE является одним из: primary , логический, расширенный FS-TYPE - это один из: udf, btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx, hfs +, hfs, jfs, swsusp, linux-swap (v1), linux-swap (v0) , ntfs, reiserfs, hp-ufs, sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3, amufs2, amufs1, amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs1 , linux-swap, linux-swap (новый), linux-swap (старый) START и END - это места на диске, например 4 ГБ или 10%. Отрицательные значения отсчитываются от конца диска. Например, -1s определяет последний сектор. «mkpart» создает раздел без создания на нем новой файловой системы. Для установки соответствующего идентификатора раздела можно указать FS-TYPE.
|