Введение
Добро пожаловать в практическую работу по управлению файловой системой и дисками в Linux! Этот лаб предназначен для новичков, которые только начинают изучать мир системного администрирования Linux. Мы проведем вас через основные команды и концепции, связанные с управлением дисковым пространством, созданием виртуальных дисков и обслуживанием файловых систем. К концу этого занятия вы получите практический опыт работы с фундаментальными инструментами управления дисками в Linux.
Просмотр использования диска с помощью df
Команда df (disk free) — это ваш основной инструмент для проверки использования дискового пространства в системе Linux. Давайте изучим, как её использовать:
Откройте терминал. Вы должны находиться в директории
/home/labex/project. Если вы не уверены, вы всегда можете проверить текущий каталог с помощью командыpwd.Выполните следующую команду для просмотра использования диска:
dfВы увидите вывод, похожий на этот:
Filesystem 1K-blocks Used Available Use% Mounted on overlay 20971520 128744 20842776 1% / tmpfs 65536 0 65536 0% /dev tmpfs 3995004 0 3995004 0% /sys/fs/cgroup shm 65536 0 65536 0% /dev/shm /dev/vdb 104806400 57754052 47052348 56% /etc/hostsНе беспокойтесь, если поначалу это выглядит запутанно! Давайте разберем столбцы:
Filesystem: Имя диска или раздела.1K-blocks: Общий размер файловой системы в блоках по 1 килобайту.Used: Объем занятого пространства.Available: Объем оставшегося свободного пространства.Use%: Процент использования файловой системы.Mounted on: Точка монтирования — место в дереве каталогов, куда подключена файловая система.
Теперь сделаем этот вывод более понятным для человека. Выполните:
df -hОпция
-hозначает "human-readable" (удобный для чтения формат). Вы увидите такой результат:Filesystem Size Used Avail Use% Mounted on overlay 20G 126M 20G 1% / tmpfs 64M 0 64M 0% /dev tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup shm 64M 0 64M 0% /dev/shm /dev/vdb 100G 56G 45G 56% /etc/hostsТак гораздо лучше, верно? Теперь размеры указаны в ГБ и МБ, что намного проще для восприятия.
Если вы хотите проверить место в конкретной файловой системе, вы можете указать её:
df -h /dev/vdbЭто покажет информацию только для файловой системы
/dev/vdb.
Команда df невероятно полезна для быстрой проверки остатка свободного места. Если система сообщает о нехватке места, df — это первая команда, которую стоит использовать для диагностики.
Анализ размеров директорий с помощью du
В то время как df дает общий обзор использования диска, иногда нам нужно копнуть глубже. Здесь на помощь приходит команда du (disk usage). Она помогает понять, какие именно директории и файлы занимают больше всего места.
Начнем с использования
duв простейшей форме. Выполните:du ~Вы увидите длинный список чисел и имен директорий. Каждое число представляет размер директории в килобайтах. Это может быть утомительно, поэтому давайте сделаем вывод более удобным.
Для более наглядного отображения используйте опцию
-h:du -h ~Опция
-h, как и в случае сdf, переводит вывод в человекочитаемый формат. Вы увидите размеры в КБ, МБ или ГБ.Часто нам нужно знать только общий размер директории. Для этого используйте:
du -sh ~Здесь
-sозначает "summarize" (суммировать), а~обозначает ваш домашний каталог. Эта команда покажет общий объем всех данных в вашей домашней директории.Чтобы просмотреть размеры вложенных папок первого уровня в домашнем каталоге, используйте:
du -h --max-depth=1 ~Это покажет размер каждой поддиректории на один уровень вглубь. Опция
--max-depth=1ограничивает глубину рекурсииdu.Давайте проверим размер объектов непосредственно в домашнем каталоге:
du -sh ~/*Это покажет размер каждого скрытого и нескрытого файла и папки, находящихся прямо в вашем домашнем каталоге.
Вот мощная команда для поиска самых больших объектов в вашей домашней директории:
du -h ~ | sort -rh | head -n 10Разберем её по частям:
du -h ~перечисляет все файлы и папки в домашнем каталоге с их размерами.sort -rhсортирует этот список в обратном порядке (сначала самые большие) в удобном для чтения формате.head -n 10выводит только первые 10 строк результата.|— это конвейер (pipe), который передает вывод одной команды на вход следующей.
Эта команда — отличный пример того, как можно комбинировать простые инструменты Linux для выполнения сложных задач.
Команда du неоценима, когда вы пытаетесь освободить место на диске. Она помогает точно определить "виновников" переполнения диска, чтобы вы знали, на чем сосредоточить усилия по очистке.
Создание и управление виртуальным диском
Прежде чем мы начнем, давайте разберемся, что такое виртуальный диск. Виртуальный диск — это просто файл, который ведет себя как физический накопитель. Представьте, что вы создаете файл-контейнер, который операционная система может воспринимать как настоящий жесткий диск. Это похоже на то, как виртуальные машины используют файлы виртуальных дисков для хранения своих данных.
Зачем это нужно? Виртуальные диски полезны для:
- Безопасного тестирования дисковых операций без риска для реального оборудования.
- Создания изолированных пространств хранения.
- Изучения управления дисками без необходимости в дополнительных физических устройствах.
- Создания образов реальных дисков для резервного копирования.
Понимание ключевых концепций
Перед практической частью разберем важные понятия:
Файловая система: Представьте файловую систему как способ организации файлов и папок на диске. Это как система картотеки в офисе — она определяет, как данные записываются и считываются. Популярные файловые системы в Linux включают ext4 (которую мы будем использовать), XFS и btrfs.
Монтирование: Это процесс подключения файловой системы для доступа к ней через операционную систему. Когда вы монтируете файловую систему, вы говорите Linux: "сделай содержимое этого диска доступным в этой конкретной папке". Это похоже на:
- Подключение USB-флешки (физическое соединение).
- Указание компьютеру, где показать её содержимое (точка монтирования).
Разделы (Partitions): Раздел — это часть диска, которая рассматривается как отдельная единица. Это похоже на разделение большого жесткого диска на несколько независимых секций. Разделы нужны для:
- Отделения системных файлов от пользовательских.
- Использования разных файловых систем для разных задач.
- Упрощения резервного копирования.
- Ограничения последствий сбоев диска.
Давайте создадим виртуальный диск и поработаем с ним:
Сначала создадим файл виртуального диска размером 256 МБ с помощью команды
dd:dd if=/dev/zero of=virtual.img bs=1M count=256Разбор команды:
dd— утилита для копирования и конвертации файлов.if=/dev/zero— "input file" (входной файл), специальное устройство, генерирующее бесконечные нули.of=virtual.img— "output file" (выходной файл), наш новый файл виртуального диска.bs=1M— размер блока 1 мегабайт (сколько данных копировать за один раз).count=256— количество блоков (в итоге получаем файл 256 МБ).
Это создаст пустой файл, заполненный нулями, который мы будем использовать как диск.
Проверьте размер файла:
ls -lh virtual.imgВы должны увидеть, что
virtual.imgзанимает ровно 256 МБ.Теперь отформатируем этот виртуальный диск в файловую систему ext4:
sudo mkfs.ext4 virtual.imgЧто здесь происходит? Эта команда:
- Создает новую файловую систему ext4 внутри нашего файла.
- Настраивает базовую структуру, необходимую для хранения файлов и папок.
- Аналогична форматированию новой флешки перед первым использованием.
Файловая система ext4 является стандартом для многих дистрибутивов Linux, так как она надежна и проверена временем.
Далее нам нужно создать точку монтирования. Это директория, в которой появится содержимое нашего виртуального диска:
sudo mkdir /mnt/virtualdiskДумайте о точке монтирования как об "окне" в ваш виртуальный диск. После монтирования, заглядывая в эту папку, вы на самом деле будете видеть содержимое файла-диска.
Теперь мы можем примонтировать виртуальный диск:
sudo mount -o loop virtual.img /mnt/virtualdiskРазберем параметры:
- Опция
-o loopуказывает Linux воспринимать файл как реальное дисковое устройство (loop-устройство). virtual.img— наш источник (созданный виртуальный диск)./mnt/virtualdisk— место, где должно появиться содержимое.
Это похоже на то, что происходит автоматически при подключении флешки, только здесь мы делаем это вручную с файлом.
- Опция
Убедимся, что диск примонтирован:
mount | grep virtualdiskВы должны увидеть строку, подтверждающую, что
virtual.imgсмонтирован в/mnt/virtualdisk.Теперь, когда диск подключен, мы можем использовать его как любую другую папку. Создадим файл:
sudo touch /mnt/virtualdisk/testfile ls /mnt/virtualdiskВы увидите файл
testfileв списке.Когда вы закончите работу с виртуальным диском, его следует размонтировать:
sudo umount /mnt/virtualdiskРазмонтирование отключает файловую систему от директории, гарантируя, что операционная система завершит все отложенные операции чтения и записи перед отключением. Неправильное размонтирование может привести к повреждению данных. Хотя синтаксис команды указывает на директорию, "под капотом" система понимает, что нужно отключить именно связанный с ней образ диска.
Процесс создания, форматирования и монтирования виртуального диска практически идентичен работе с новым жестким диском или USB-накопителем. Главное отличие в том, что мы работаем с файлом, а не с физическим устройством.
Монтирование файловой системы означает её прикрепление к определенному каталогу, чтобы операционная система могла получить доступ к данным внутри неё. В этом лабе файл образа виртуального диска обрабатывается так, как если бы он был физическим диском, а монтирование делает его содержимое доступным в конкретной директории (например, /mnt/virtualdisk).
Управление разделами диска с помощью fdisk
В реальной системе перед созданием файловой системы часто требуется создать разделы. Хотя в этой виртуальной среде мы не можем изменять разделы реальных дисков, мы можем изучить, как использовать fdisk для просмотра информации о них.
Сначала просмотрим информацию обо всех разделах дисков:
sudo fdisk -lЭто отобразит сведения обо всех дисковых устройствах и их разделах. Вы увидите данные о размере диска, количестве секторов и таблице разделов.
Теперь посмотрим информацию о разделах нашего виртуального диска:
sudo fdisk -l virtual.imgЭто покажет таблицу разделов виртуального диска. Поскольку мы создали файловую систему напрямую в образе диска без разбиения на разделы, вы можете увидеть сообщение о том, что файл не содержит допустимой таблицы разделов.
В реальной системе вы бы использовали fdisk в интерактивном режиме для создания, удаления или изменения разделов. Вот краткий обзор того, как это работает:
- Вы запускаете
fdiskкомандойsudo fdisk /dev/sdX(заменив X на соответствующую букву диска). - Используете команду
nдля создания нового раздела. - Команда
dудаляет раздел. - Команда
tменяет идентификатор системы раздела (указывает тип использования раздела). - Команда
wзаписывает изменения на диск и завершает работу.
Помните, что изменение разделов может привести к потере данных, поэтому всегда будьте осторожны и делайте резервные копии важных данных перед внесением изменений.
Инструмент fdisk не ограничивается только отображением информации. Он позволяет интерактивно управлять структурой диска. Будьте предельно внимательны при использовании fdisk в системах с критически важными данными; неверные действия могут привести к их безвозвратной потере.
Резюме
Поздравляем! В этой практической работе вы научились:
- Проверять использование диска с помощью
df. - Анализировать размеры директорий с помощью
du. - Создавать, форматировать, монтировать и размонтировать виртуальный диск.
- Просматривать информацию о разделах с помощью
fdisk.
Эти навыки составляют основу для более сложных задач системного администрирования Linux. Они критически важны для управления хранилищем, устранения проблем с нехваткой места и поддержания работоспособности файловых систем.
В качестве дополнительного задания попробуйте написать shell-скрипт, который находит 10 самых больших файлов или папок в вашем домашнем каталоге и выводит их размеры в удобном для чтения формате. Это объединит несколько команд, которые вы изучили сегодня.
Помните, что практика — ключ к освоению этих концепций. Не бойтесь экспериментировать с этими командами (в безопасной среде), чтобы углубить свои знания. Удачи в дальнейшем изучении системного администрирования Linux!



