Дисковая подсистема Linux для начинающих

Просмотр информации о дисках

Команда lsblk

Самая простая команда для просмотра подключенных дисков и их разделов:

user@server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 50G 0 disk
├─vda1 252:1 0 1M 0 part
└─vda2 252:2 0 50G 0 part /
vdb 252:16 0 4G 0 disk
vdc 252:32 0 2G 0 disk

Чтобы увидеть файловые системы и их UUID, используйте флаг -f:

user@server:~$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
vda
├─vda1
└─vda2 ext4 82afb880-9c95-44d6-8df9-84129f3f2cd1 /
vdb
vdc

Команда fdisk

Более подробная информация о дисках:

user@server:~$ sudo fdisk -l
Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8E70400A-DD3F-443D-95C1-844A5A72302B

Device Start End Sectors Size Type
/dev/vda1 2048 4095 2048 1M BIOS boot
/dev/vda2 4096 104857566 104853471 50G Linux filesystem

Совет: В именах дисков:
/dev/sdX — физические диски (SATA/SCSI)
/dev/vdX — виртуальные диски
/dev/nvmeXnY — SSD NVMe
Цифры после буквы обозначают номера разделов.

Таблицы разделов: MBR vs GPT

Перед использованием диск нужно разметить — создать таблицу разделов. Есть два стандарта:

Характеристика MBR (старый) GPT (новый)
Максимум разделов 4 основных или 3 основных + 1 расширенный (с логическими) 128 (обычно)
Максимальный размер диска 2 ТБ 9.4 ЗБ (зеттабайт!)
Резервная копия таблицы Нет Да
Совместимость Все системы Новые системы (UEFI)

Практическое задание 1: Определение типа таблицы разделов

1. Выполните команду: sudo fdisk -l /dev/vda

2. Найдите строку Disklabel type

3. Запомните, какая таблица разделов используется (gpt или dos)

Разметка диска с помощью fdisk

Давайте разметим новый диск /dev/vdb:

user@server:~$ sudo fdisk /dev/vdb

# Создаем новую таблицу GPT:
Command (m for help): g
Created a new GPT disklabel (GUID: E83C9D88-AB63-3341-AB6F-2E7FAC0FC15D).

# Создаем первый раздел на 1ГБ:
Command (m for help): n
Partition number (1-128, default 1): [Enter]
First sector (2048-8388574, default 2048): [Enter]
Last sector: +1G

# Создаем второй раздел на оставшееся место:
Command (m for help): n
Partition number (2-128, default 2): [Enter]
First sector: [Enter]
Last sector: [Enter]

# Проверяем что получилось:
Command (m for help): p
Disk /dev/vdb: 4 GiB, 4294967296 bytes, 8388608 sectors
Device Start End Sectors Size Type
/dev/vdb1 2048 2099199 2097152 1G Linux filesystem
/dev/vdb2 2099200 8388574 6289375 3G Linux filesystem

# Записываем изменения:
Command (m for help): w
The partition table has been altered.

Внимание! Команда w записывает изменения на диск.
Если вы ошиблись, выйдите без сохранения командой q.

Практическое задание 2: Создание разделов

1. Откройте fdisk для вашего диска: sudo fdisk /dev/vdb

2. Создайте таблицу GPT (команда g)

3. Создайте два раздела: первый 1ГБ, второй 3ГБ

4. Запишите изменения (w)

5. Проверьте результат: lsblk

Файловые системы

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

# Форматируем в ext4:
user@server:~$ sudo mkfs.ext4 /dev/vdb1

# Форматируем в XFS:
user@server:~$ sudo mkfs.xfs /dev/vdb2

Сравнение файловых систем

Файловая система Особенности Лучше использовать для
ext4 Надёжная, можно уменьшать и увеличивать Системные разделы, домашние каталоги
XFS Быстрая с большими файлами, можно только увеличивать Базы данных, большие файлы
Btrfs Поддержка снимков, сжатия Резервные копии, системы хранения

Монтирование разделов

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

# Создаем каталог для монтирования:
user@server:~$ sudo mkdir /mnt/data

# Монтируем временно:
user@server:~$ sudo mount /dev/vdb1 /mnt/data

# Проверяем:
user@server:~$ df -h /mnt/data
Filesystem Size Used Avail Use% Mounted on
/dev/vdb1 976M 2.6M 907M 1% /mnt/data

Для автоматического монтирования при загрузке добавьте запись в /etc/fstab:

user@server:~$ sudo blkid /dev/vdb1
/dev/vdb1: UUID=”d6e…” TYPE=”ext4″

 

# Открываем файл для редактирования:
user@server:~$ sudo nano /etc/fstab

# Добавляем строку (в самом конце файла):
UUID=d6e… /mnt/data ext4 defaults 0 2

Совет: Всегда используйте UUID вместо /dev/sdX в fstab, так как порядок дисков может меняться!

Практическое задание 3: Монтирование

1. Создайте каталог /mnt/test

2. Смонтируйте /dev/vdb1 в этот каталог

3. Проверьте командой df -h

4. Добавьте запись в /etc/fstab

5. Проверьте: sudo mount -a

LVM - логическое управление томами

LVM (Logical Volume Manager) позволяет объединять несколько дисков/разделов в один логический том с возможностью изменения размера “на лету”.

Создание LVM

# Создаем физические тома (на наших разделах):
user@server:~$ sudo pvcreate /dev/vdb1 /dev/vdb2

# Создаем группу томов:
user@server:~$ sudo vgcreate vg_data /dev/vdb1 /dev/vdb2

# Создаем логический том на всё свободное место:
user@server:~$ sudo lvcreate -l 100%FREE -n lv_storage vg_data

# Форматируем и монтируем:
user@server:~$ sudo mkfs.ext4 /dev/vg_data/lv_storage
user@server:~$ sudo mkdir /mnt/lvm
user@server:~$ sudo mount /dev/vg_data/lv_storage /mnt/lvm

Расширение LVM

Когда место заканчивается, можно добавить новый диск в группу и расширить том:

# Добавляем новый физический том:
user@server:~$ sudo pvcreate /dev/vdc
user@server:~$ sudo vgextend vg_data /dev/vdc

# Расширяем логический том:
user@server:~$ sudo lvextend -l +100%FREE /dev/vg_data/lv_storage

# Расширяем файловую систему (для ext4):
user@server:~$ sudo resize2fs /dev/vg_data/lv_storage

Практическое задание 4: Работа с LVM

1. Создайте физические тома на /dev/vdb1 и /dev/vdb2

2. Создайте группу томов vg_test

3. Создайте логический том lv_test на 2ГБ

4. Отформатируйте его в ext4 и смонтируйте в /mnt/lvm_test

Проверьте свои знания:

  1. Какой командой посмотреть список подключенных дисков?
  2. Как создать раздел размером 2ГБ на диске /dev/sdb?
  3. Как отформатировать раздел в файловую систему XFS?
  4. Как смонтировать раздел /dev/sdb1 в /mnt/data?
  5. Какие три команды нужны для расширения LVM тома?

Полезные команды

# Проверить свободное место:
user@server:~$ df -h

# Проверить использование дисков:
user@server:~$ du -sh /path

# Проверить целостность файловой системы:
user@server:~$ fsck /dev/sdX

# Показать информацию о LVM:
user@server:~$ pvs
user@server:~$ vgs
user@server:~$ lvs

Важно! Все команды работы с дисками (кроме просмотра информации) требуют прав root (через sudo).

Теперь вы умеете:

  • Просматривать информацию о дисках
  • Создавать разделы и файловые системы
  • Монтировать разделы
  • Работать с LVM
  • Расширять файловые системы
Совет для практики: Создайте виртуальную машину с несколькими виртуальными дисками и потренируйтесь на них.
LVM особенно полезен, когда нужно гибко управлять дисковым пространством.

Файл подкачки (Swap) — «Виртуальная оперативная память»

Представьте, что оперативная память (ОЗУ) — это ваш рабочий стол. Места на нем ограничено, и когда документов становится слишком много, вы убираете некоторые из них в ящик стола, чтобы освободить место для текущей работы. Файл подкачки (swap) — это и есть такой «ящик стола» для вашей операционной системы. Когда ОЗУ переполняется, система перемещает неиспользуемые данные в swap на жестком диске, который работает медленнее, но больше по объему.

Создание и активация swap-файла

Давайте разберем предоставленные команды по шагам:

# 1. Создаем файл размером 4 Гб, заполненный нулями.
# sudo — выполняем команду с правами администратора.
# dd — утилита для копирования и преобразования данных.
# if=/dev/zero — читаем данные из “виртуального устройства” /dev/zero, которое выдает только нули.
# of=/swap — записываем данные в файл с именем /swap в корневой директории.
# bs=1M — размер одного блока данных — 1 Мегабайт.
# count=4096 — количество таких блоков. 4096 * 1M = 4096 Мб (4 Гб).
user@server:~$ sudo dd if=/dev/zero of=/swap bs=1M count=4096

# 2. Задаем правильные права доступа на файл.
# chmod 600 /swap — устанавливаем права: владелец может читать и писать (600), остальные — не могут ничего.
# Это критически важно для безопасности, так как swap может содержать конфиденциальные данные из памяти.
user@server:~$ chmod 600 /swap

# 3. Форматируем файл в специальный swap-формат.
user@server:~$ mkswap /swap

# 4. Активируем созданный swap-файл, чтобы система начала им пользоваться.
user@server:~$ swapon /swap

# 5. Проверяем, что наш swap-файл успешно активирован и отображается в списке.
user@server:~$ swapon -s

На заметку: Размер swap-файла — вопрос индивидуальный. Классическое правило: для систем с небольшим объемом ОЗУ (1–2 Гб) делают swap в 2–3 раза больше. Для систем с большим объемом ОЗУ (8 Гб и более) часто достаточно 2–4 Гб swap или даже меньше. Его основная задача — страховка на случай пиковых нагрузок.

Делаем изменение постоянным

Команда swapon активирует swap только до следующей перезагрузки. Чтобы система подключала его автоматически, нужно добавить запись в файл /etc/fstab — это «меню автозагрузки» для дисков и файловых систем.

# Добавляем строку в конец файла /etc/fstab.
# echo — выводит текст.
# | (пайп) — перенаправляет вывод одной команды на вход другой.
# sudo tee -a — команда tee с правами root (sudo) получает текст и добавляет его (-a) в указанный файл.
user@server:~$ echo “/swap none swap sw 0 0” | sudo tee -a /etc/fstab

# Всегда полезно проверить файл после редактирования, чтобы убедиться, что запись добавлена корректно.
user@server:~$ sudo vi /etc/fstab

Попробуйте сами

Используя команды free -h или swapon -s, проверьте текущее состояние swap до и после выполнения описанных выше шагов (если решитесь потренироваться на тестовой виртуальной машине!).

Глубокий взгляд на файлы: stat и getfacl

Команды ls -l показывают базовые права доступа. Но что если нужно узнать больше деталей или посмотреть расширенные права (ACL)? На помощь приходят stat и getfacl.

stat — «паспорт» файла

Команда stat выводит подробнейшую информацию (метаданные) о файле или директории — своего рода его паспорт.

# Посмотрим на “паспорт” любого файла, например, самого файла /swap.
user@server:~$ stat /swap

# Вывод будет содержать:
# File — имя файла.
# Size — размер в байтах.
# Blocks — сколько блоков на диске он занимает.
# IO Block — размер блока ввода-вывода.
# Inode — уникальный номер индексного дескриптора (это как номер паспорта для файла в файловой системе).
# Links — количество жестких ссылок на файл.
# Access — права доступа в цифровом (0777) и буквенном (-rwxrwxrwx) формате.
# Uid — User ID (идентификатор пользователя) и его имя.
# Gid — Group ID (идентификатор группы) и ее имя.
# Access — время последнего доступа к файлу (чтение).
# Modify — время последнего изменения *содержимого* файла.
# Change — время последнего изменения *метаданных* файла (например, прав доступа).

Задание для размышления

Сравните вывод команды stat для обычного файла и директории. Что общего и в чем разница?

getfacl — «расширенная инструкция по доступу»

Стандартных прав (читать, писать, выполнять) для пользователя, группы и остальных иногда недостаточно для гибкого управления доступом. Например, вы хотите дать разным пользователям разные права на один файл. Для этого существуют списки контроля доступа (ACL — Access Control Lists). Команда getfacl позволяет посмотреть эти расширенные правила.

# Посмотрим ACL для файла /swap.
user@server:~$ getfacl /swap

# Пример вывода:
# file: swap – Имя файла
# owner: root – Владелец
# group: root – Группа
user::rw- – Права для владельца (read, write)
group::— – Права для членов группы (нет прав)
other::— – Права для всех остальных (нет прав)
#
# Если бы были заданы расширенные ACL, вы увидели бы дополнительные строки, например:
user:webadmin:r– – Пользователь ‘webadmin’ имеет право только на чтение.
group:developers:rw- – Группа ‘developers’ имеет права на чтение и запись.

Важно: Команда getfacl показывает как стандартные права (которые видны в ls -l), так и расширенные. Для управления ACL (добавления, изменения) используется команда-близнец setfacl.

Тест для самопроверки

Закрепите полученные знания, ответив на несколько вопросов.

1. Какова основная цель создания файла подкачки (swap) в Linux?




Правильный ответ: C

Файл подкачки служит «страховкой» для оперативной памяти. Когда физическая память заканчивается, система перемещает в swap данные, к которым не обращалась долгое время.

2. Почему для swap-файла критически важно устанавливать права доступа 600?




Правильный ответ: C

В swap может попасть любая информация из памяти (пароли, ключи, документы). Права 600 защищают эти данные.

3. Команда stat показывает…




Правильный ответ: C

stat выводит все метаданные файла, кроме содержимого.

4. Чем команда getfacl полезна по сравнению с ls -l?




Правильный ответ: C

ls -l показывает только базовые права. getfacl показывает и расширенные правила (ACL).

вы узнали о трех важных аспектах работы с Linux:

  1. Управление памятью: Вы научились создавать, активировать и делать постоянным файл подкачки (swap), который является страховкой для вашей оперативной памяти.
  2. Анализ метаданных: Вы познакомились с командой stat, которая выдает исчерпывающую информацию о файле.
  3. Контроль доступа: Вы узнали о команде getfacl, которая помогает заглянуть дальше стандартных прав доступа и увидеть расширенные ACL.

Эти инструменты — фундамент для грамотного администрирования любой Linux-системы. Чтобы углубить знания, потренируйтесь на тестовой виртуальной машине: создавайте файлы с разными правами, смотрите их метаданные и пробуйте настраивать простые ACL с помощью команды setfacl.

case studies

See More Case Studies

Работа в Git: погружаемся в систему контроля версий | Часть 2

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

Learn more

Работа в Git: понятная инструкция пользователя | Часть 1

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

Learn more
Связаться с нами

Комплексные IT услуги для вас

Мы будем рады ответить на любые ваши вопросы и помочь вам определить, какая из наших услуг лучше всего соответствует вашим потребностям.

Наши преимущества:
Что дальше?
1

Мы запланируем звонок в удобное для вас время

2

Мы проводим рабочую встречу по выявлению потребностей и консультированию

3

Мы готовим коммерческое предложение

Получить бесплатную консультацию