Home » Как создавать разделы и форматировать устройства хранения в Linux
Как создавать разделы и форматировать устройства хранения в Linux

Как создавать разделы и форматировать устройства хранения в Linux

Когда ты в первый раз настраиваешь сервер или подключаешь новый диск, неизбежно сталкиваешься с необходимостью создания разделов и форматирования устройств хранения. Это фундаментальный навык для любого, кто работает с Linux-серверами. Без понимания этих процессов можно легко угробить данные или создать неэффективную файловую систему, которая будет тормозить всю систему.

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

Как это работает: основы дисковой подсистемы Linux

В Linux всё является файлом, и диски не исключение. Физические диски представлены как устройства в /dev/: /dev/sda, /dev/nvme0n1, /dev/vdb и так далее. Разделы обозначаются цифрами: /dev/sda1, /dev/sda2.

Существует два основных стандарта разбиения дисков:

  • MBR (Master Boot Record) — старый формат, ограничение в 2TB и максимум 4 первичных раздела
  • GPT (GUID Partition Table) — современный стандарт, поддерживает диски до 8 ZB и практически неограниченное количество разделов

Для серверов почти всегда используется GPT, особенно если диск больше 2TB или планируется много разделов.

Определяем устройства и их состояние

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

# Список всех блочных устройств
lsblk

# Информация о дисках и разделах
fdisk -l

# Подробная информация о дисках
parted -l

# Информация о файловых системах
df -h

# Просмотр UUID и типов файловых систем
blkid

Команда lsblk особенно удобна — она показывает древовидную структуру всех устройств, включая точки монтирования.

Создание разделов: fdisk vs parted vs gdisk

Есть несколько инструментов для создания разделов, у каждого свои плюсы и минусы:

Утилита Поддержка MBR Поддержка GPT Удобство Рекомендации
fdisk Да Да (с версии 2.23) Средне Универсальный выбор
parted Да Да Высокое Для скриптов и сложных задач
gdisk Нет Да Высокое Только для GPT

Практика: создаём разделы на новом диске

Допустим, у нас есть новый диск /dev/sdb размером 100GB, и нужно создать на нём несколько разделов. Воспользуемся fdisk:

# Запускаем fdisk для работы с диском
fdisk /dev/sdb

# Внутри fdisk:
# g - создать новую GPT таблицу разделов
# n - создать новый раздел
# p - показать текущие разделы
# w - записать изменения
# q - выйти без сохранения

# Создаём первый раздел 20GB
Command: g  # создаём GPT таблицу
Command: n  # новый раздел
Partition number: 1
First sector: (нажимаем Enter для значения по умолчанию)
Last sector: +20G

# Создаём второй раздел на оставшееся место
Command: n
Partition number: 2
First sector: (Enter)
Last sector: (Enter - используем всё оставшееся место)

# Сохраняем изменения
Command: w

Альтернативный способ через parted — более подходящий для автоматизации:

# Создаём GPT таблицу
parted /dev/sdb mklabel gpt

# Создаём первый раздел
parted /dev/sdb mkpart primary 1MiB 20GiB

# Создаём второй раздел
parted /dev/sdb mkpart primary 20GiB 100%

# Проверяем результат
parted /dev/sdb print

Форматирование: выбираем файловую систему

После создания разделов их нужно отформатировать. Выбор файловой системы зависит от задач:

ФС Применение Плюсы Минусы
ext4 Универсальное Стабильная, быстрая Нет сжатия, snapshots
xfs Большие файлы Масштабируемая Нельзя уменьшить
btrfs Современные задачи Snapshots, сжатие Менее стабильна
zfs Критичные данные Самовосстановление Много RAM

Для большинства серверных задач ext4 и xfs — оптимальный выбор.

# Форматируем в ext4
mkfs.ext4 /dev/sdb1

# Форматируем в xfs
mkfs.xfs /dev/sdb2

# Создаём swap
mkswap /dev/sdb3

# Проверяем созданные файловые системы
blkid /dev/sdb1 /dev/sdb2

Продвинутые опции форматирования

При форматировании можно настроить различные параметры для оптимизации под конкретные задачи:

# ext4 с оптимизацией под большие файлы
mkfs.ext4 -T largefile -m 1 /dev/sdb1

# xfs с увеличенным размером allocation group
mkfs.xfs -d agcount=8 /dev/sdb2

# Создание файловой системы с меткой
mkfs.ext4 -L "data-storage" /dev/sdb1

# Резервирование меньшего процента для root (по умолчанию 5%)
mkfs.ext4 -m 1 /dev/sdb1

Монтирование и автоматическое подключение

После форматирования раздел нужно смонтировать:

# Создаём точку монтирования
mkdir -p /mnt/data

# Монтируем временно
mount /dev/sdb1 /mnt/data

# Проверяем
df -h /mnt/data

# Для постоянного монтирования редактируем /etc/fstab
echo "UUID=$(blkid -s UUID -o value /dev/sdb1) /mnt/data ext4 defaults 0 2" >> /etc/fstab

# Проверяем корректность fstab
mount -a

Лучше использовать UUID вместо имён устройств, так как они могут изменяться при перезагрузке.

Скрипт для автоматизации

Вот пример скрипта для автоматического создания и форматирования раздела:

#!/bin/bash

DEVICE="/dev/sdb"
MOUNT_POINT="/mnt/data"
LABEL="data-storage"

# Проверяем, что устройство существует
if [ ! -b "$DEVICE" ]; then
    echo "Устройство $DEVICE не найдено"
    exit 1
fi

# Создаём GPT таблицу и раздел
parted -s $DEVICE mklabel gpt
parted -s $DEVICE mkpart primary 1MiB 100%

# Ждём, пока система обновит информацию о разделах
sleep 2

# Форматируем
mkfs.ext4 -L "$LABEL" "${DEVICE}1"

# Создаём точку монтирования
mkdir -p "$MOUNT_POINT"

# Получаем UUID
UUID=$(blkid -s UUID -o value "${DEVICE}1")

# Добавляем в fstab
echo "UUID=$UUID $MOUNT_POINT ext4 defaults 0 2" >> /etc/fstab

# Монтируем
mount "$MOUNT_POINT"

echo "Раздел успешно создан и смонтирован в $MOUNT_POINT"

Работа с LVM

LVM (Logical Volume Manager) добавляет гибкости в управление дисками. Особенно полезно для серверов, где может понадобиться изменять размеры разделов:

# Создаём физический том
pvcreate /dev/sdb1

# Создаём группу томов
vgcreate vg_data /dev/sdb1

# Создаём логический том
lvcreate -L 50G -n lv_data vg_data

# Форматируем
mkfs.ext4 /dev/vg_data/lv_data

# Увеличиваем размер логического тома
lvextend -L +20G /dev/vg_data/lv_data

# Расширяем файловую систему
resize2fs /dev/vg_data/lv_data

Мониторинг и диагностика

Полезные команды для мониторинга дисковой подсистемы:

# Информация о производительности дисков
iostat -x 1

# Использование места на дисках
df -h

# Анализ использования места в директории
du -sh /*

# Проверка файловой системы
fsck -f /dev/sdb1

# Информация о SMART статусе диска
smartctl -a /dev/sda

Типичные ошибки и их решение

Ошибка “device busy” при попытке создать разделы:

# Проверяем, не смонтирован ли диск
umount /dev/sdb1

# Убеждаемся, что никто не использует диск
lsof /dev/sdb1

# Принудительно обновляем таблицу разделов
partprobe /dev/sdb

Потеря данных при неправильном указании устройства:

  • Всегда дважды проверяй имя устройства перед выполнением команд
  • Используй lsblk для подтверждения
  • Создавай бэкапы перед работой с разделами

Интеграция с облачными платформами

При работе с VPS или выделенными серверами часто приходится подключать дополнительные диски. Многие провайдеры предоставляют возможность “горячего” подключения дисков:

# Пересканируем SCSI устройства для обнаружения новых дисков
echo "- - -" > /sys/class/scsi_host/host0/scan

# Или используем команду rescan
echo 1 > /sys/class/scsi_device/2:0:0:0/device/rescan

Автоматизация с помощью cloud-init

Для автоматизации настройки дисков при развёртывании серверов можно использовать cloud-init:

#cloud-config
disk_setup:
  /dev/sdb:
    table_type: gpt
    layout: True
    overwrite: False

fs_setup:
  - filesystem: ext4
    device: /dev/sdb1
    partition: auto

mounts:
  - ["/dev/sdb1", "/mnt/data", "ext4", "defaults", "0", "2"]

Заключение и рекомендации

Умение правильно создавать разделы и форматировать диски — это основа работы с Linux-серверами. Вот ключевые моменты, которые стоит запомнить:

  • Планируй заранее: продумай структуру разделов перед началом работы
  • Используй GPT для современных систем и дисков больше 2TB
  • Выбирай файловую систему в зависимости от задач: ext4 для универсальности, xfs для больших файлов
  • Автоматизируй процессы с помощью скриптов и инструментов вроде parted
  • Используй LVM когда нужна гибкость в управлении дисками
  • Мониторь состояние дисков с помощью SMART и iostat

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

Полезные ссылки для дальнейшего изучения:


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

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

Leave a reply

Your email address will not be published. Required fields are marked