Введение
Добро пожаловать на лабораторную работу по управлению файловыми системами и дисками в 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/nvme1n1 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/nvme1n1 100G 56G 45G 56% /etc/hostsТак гораздо лучше, верно? Теперь размеры указаны в ГБ и МБ, что гораздо понятнее.
Если вы хотите проверить место, занимаемое файловой системой, содержащей конкретный файл или директорию, можно передать этот путь команде
df:df -h /etc/hostsЭто покажет информацию только для той файловой системы, в которой находится
/etc/hosts. В данной среде это обычно/dev/nvme1n1.
Команда 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-накопителя (физическое соединение).
- Указание компьютеру, где отображать его содержимое (точка монтирования).
Разделы: Раздел — это часть диска, которая рассматривается как отдельная единица. Представьте, что вы делите большой жесткий диск на меньшие независимые секции. Причины для разбиения на разделы:
- Отделение системных файлов от пользовательских.
- Использование разных файловых систем для разных целей.
- Упрощение резервного копирования.
- Ограничение последствий сбоев диска.
Давайте создадим виртуальный диск и поработаем с ним:
Сначала создадим виртуальный диск размером 256 МБ с помощью команды
dd:dd if=/dev/zero of=virtual.img bs=1M count=256Разберем эту команду:
dd— утилита для копирования и преобразования файлов.if=/dev/zeroозначает «входной файл — /dev/zero» (специальный файл, предоставляющий бесконечный поток нулей).of=virtual.imgозначает «выходной файл — virtual.img» (наш новый файл виртуального диска).bs=1Mустанавливает размер блока в 1 мегабайт (сколько данных копировать за раз).count=256означает скопировать 256 блоков (в результате получится файл размером 256 МБ).
Это создает пустой файл, заполненный нулями, который мы будем использовать как виртуальный диск.
Проверим размер файла:
ls -lh virtual.imgВы увидите, что
virtual.imgимеет размер ровно 256 МБ.Теперь отформатируем этот виртуальный диск в файловую систему ext4:
sudo mkfs.ext4 virtual.imgЧто здесь происходит? Эта команда:
- Создает новую файловую систему ext4 внутри нашего файла виртуального диска.
- Настраивает базовую структуру, необходимую для хранения файлов и директорий.
- Аналогична форматированию нового USB-накопителя перед первым использованием.
Файловая система ext4 является стандартной для многих дистрибутивов Linux, так как она надежна и хорошо протестирована.
Далее нам нужно создать точку монтирования. Это директория, в которой появится содержимое нашего виртуального диска:
sudo mkdir /mnt/virtualdiskПредставьте точку монтирования как «окно» в ваш виртуальный диск. После монтирования, заглядывая в эту директорию, вы на самом деле видите содержимое виртуального диска.
Теперь мы можем примонтировать виртуальный диск:
sudo mount -o loop virtual.img /mnt/virtualdiskРазберем, что происходит:
- Опция
-o loopговорит Linux обращаться с нашим файлом так, будто это реальное дисковое устройство. virtual.img— наш источник (созданный нами виртуальный диск)./mnt/virtualdisk— место, где мы хотим видеть содержимое.
Это похоже на то, что происходит автоматически при подключении USB-накопителя, только здесь мы делаем это вручную с файлом виртуального диска.
- Опция
Проверим, что диск примонтирован:
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. Они критически важны для управления хранилищем, устранения проблем с дисковым пространством и поддержания здоровья файловых систем в Linux.
В качестве дополнительного задания попробуйте написать shell-скрипт, который находит 10 самых больших файлов или директорий в вашей домашней папке и отображает их размеры в удобочитаемом формате. Это позволит объединить несколько команд, изученных в этой работе.
Помните, что практика — ключ к освоению этих концепций. Не стесняйтесь экспериментировать с этими командами (в безопасной среде), чтобы углубить свое понимание. Удачи в дальнейшем изучении системного администрирования Linux!



