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

LinuxBeginner
Практиковаться сейчас

Введение

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

Просмотр использования диска с помощью df

Команда df (disk free) — это ваш основной инструмент для проверки использования дискового пространства в системе Linux. Давайте изучим, как её использовать:

  1. Откройте терминал. Вы должны находиться в директории /home/labex/project. Если вы не уверены, вы всегда можете проверить текущий каталог с помощью команды pwd.

  2. Выполните следующую команду для просмотра использования диска:

    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: Точка монтирования — место в дереве каталогов, куда подключена файловая система.
  3. Теперь сделаем этот вывод более понятным для человека. Выполните:

    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
    

    Так гораздо лучше, верно? Теперь размеры указаны в ГБ и МБ, что намного проще для восприятия.

  4. Если вы хотите проверить место в конкретной файловой системе, вы можете указать её:

    df -h /dev/vdb
    

    Это покажет информацию только для файловой системы /dev/vdb.

Команда df невероятно полезна для быстрой проверки остатка свободного места. Если система сообщает о нехватке места, df — это первая команда, которую стоит использовать для диагностики.

Анализ размеров директорий с помощью du

В то время как df дает общий обзор использования диска, иногда нам нужно копнуть глубже. Здесь на помощь приходит команда du (disk usage). Она помогает понять, какие именно директории и файлы занимают больше всего места.

  1. Начнем с использования du в простейшей форме. Выполните:

    du ~
    

    Вы увидите длинный список чисел и имен директорий. Каждое число представляет размер директории в килобайтах. Это может быть утомительно, поэтому давайте сделаем вывод более удобным.

  2. Для более наглядного отображения используйте опцию -h:

    du -h ~
    

    Опция -h, как и в случае с df, переводит вывод в человекочитаемый формат. Вы увидите размеры в КБ, МБ или ГБ.

  3. Часто нам нужно знать только общий размер директории. Для этого используйте:

    du -sh ~
    

    Здесь -s означает "summarize" (суммировать), а ~ обозначает ваш домашний каталог. Эта команда покажет общий объем всех данных в вашей домашней директории.

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

    du -h --max-depth=1 ~
    

    Это покажет размер каждой поддиректории на один уровень вглубь. Опция --max-depth=1 ограничивает глубину рекурсии du.

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

    du -sh ~/*
    

    Это покажет размер каждого скрытого и нескрытого файла и папки, находящихся прямо в вашем домашнем каталоге.

  6. Вот мощная команда для поиска самых больших объектов в вашей домашней директории:

    du -h ~ | sort -rh | head -n 10
    

    Разберем её по частям:

    • du -h ~ перечисляет все файлы и папки в домашнем каталоге с их размерами.
    • sort -rh сортирует этот список в обратном порядке (сначала самые большие) в удобном для чтения формате.
    • head -n 10 выводит только первые 10 строк результата.
    • | — это конвейер (pipe), который передает вывод одной команды на вход следующей.

    Эта команда — отличный пример того, как можно комбинировать простые инструменты Linux для выполнения сложных задач.

Команда du неоценима, когда вы пытаетесь освободить место на диске. Она помогает точно определить "виновников" переполнения диска, чтобы вы знали, на чем сосредоточить усилия по очистке.

Создание и управление виртуальным диском

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

Зачем это нужно? Виртуальные диски полезны для:

  • Безопасного тестирования дисковых операций без риска для реального оборудования.
  • Создания изолированных пространств хранения.
  • Изучения управления дисками без необходимости в дополнительных физических устройствах.
  • Создания образов реальных дисков для резервного копирования.

Понимание ключевых концепций

Перед практической частью разберем важные понятия:

  1. Файловая система: Представьте файловую систему как способ организации файлов и папок на диске. Это как система картотеки в офисе — она определяет, как данные записываются и считываются. Популярные файловые системы в Linux включают ext4 (которую мы будем использовать), XFS и btrfs.

  2. Монтирование: Это процесс подключения файловой системы для доступа к ней через операционную систему. Когда вы монтируете файловую систему, вы говорите Linux: "сделай содержимое этого диска доступным в этой конкретной папке". Это похоже на:

    • Подключение USB-флешки (физическое соединение).
    • Указание компьютеру, где показать её содержимое (точка монтирования).
  3. Разделы (Partitions): Раздел — это часть диска, которая рассматривается как отдельная единица. Это похоже на разделение большого жесткого диска на несколько независимых секций. Разделы нужны для:

    • Отделения системных файлов от пользовательских.
    • Использования разных файловых систем для разных задач.
    • Упрощения резервного копирования.
    • Ограничения последствий сбоев диска.

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

  1. Сначала создадим файл виртуального диска размером 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 МБ).

    Это создаст пустой файл, заполненный нулями, который мы будем использовать как диск.

  2. Проверьте размер файла:

    ls -lh virtual.img
    

    Вы должны увидеть, что virtual.img занимает ровно 256 МБ.

  3. Теперь отформатируем этот виртуальный диск в файловую систему ext4:

    sudo mkfs.ext4 virtual.img
    

    Что здесь происходит? Эта команда:

    • Создает новую файловую систему ext4 внутри нашего файла.
    • Настраивает базовую структуру, необходимую для хранения файлов и папок.
    • Аналогична форматированию новой флешки перед первым использованием.

    Файловая система ext4 является стандартом для многих дистрибутивов Linux, так как она надежна и проверена временем.

  4. Далее нам нужно создать точку монтирования. Это директория, в которой появится содержимое нашего виртуального диска:

    sudo mkdir /mnt/virtualdisk
    

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

  5. Теперь мы можем примонтировать виртуальный диск:

    sudo mount -o loop virtual.img /mnt/virtualdisk
    

    Разберем параметры:

    • Опция -o loop указывает Linux воспринимать файл как реальное дисковое устройство (loop-устройство).
    • virtual.img — наш источник (созданный виртуальный диск).
    • /mnt/virtualdisk — место, где должно появиться содержимое.

    Это похоже на то, что происходит автоматически при подключении флешки, только здесь мы делаем это вручную с файлом.

  6. Убедимся, что диск примонтирован:

    mount | grep virtualdisk
    

    Вы должны увидеть строку, подтверждающую, что virtual.img смонтирован в /mnt/virtualdisk.

  7. Теперь, когда диск подключен, мы можем использовать его как любую другую папку. Создадим файл:

    sudo touch /mnt/virtualdisk/testfile
    ls /mnt/virtualdisk
    

    Вы увидите файл testfile в списке.

  8. Когда вы закончите работу с виртуальным диском, его следует размонтировать:

    sudo umount /mnt/virtualdisk
    

    Размонтирование отключает файловую систему от директории, гарантируя, что операционная система завершит все отложенные операции чтения и записи перед отключением. Неправильное размонтирование может привести к повреждению данных. Хотя синтаксис команды указывает на директорию, "под капотом" система понимает, что нужно отключить именно связанный с ней образ диска.

Процесс создания, форматирования и монтирования виртуального диска практически идентичен работе с новым жестким диском или USB-накопителем. Главное отличие в том, что мы работаем с файлом, а не с физическим устройством.

Монтирование файловой системы означает её прикрепление к определенному каталогу, чтобы операционная система могла получить доступ к данным внутри неё. В этом лабе файл образа виртуального диска обрабатывается так, как если бы он был физическим диском, а монтирование делает его содержимое доступным в конкретной директории (например, /mnt/virtualdisk).

Управление разделами диска с помощью fdisk

В реальной системе перед созданием файловой системы часто требуется создать разделы. Хотя в этой виртуальной среде мы не можем изменять разделы реальных дисков, мы можем изучить, как использовать fdisk для просмотра информации о них.

  1. Сначала просмотрим информацию обо всех разделах дисков:

    sudo fdisk -l
    

    Это отобразит сведения обо всех дисковых устройствах и их разделах. Вы увидите данные о размере диска, количестве секторов и таблице разделов.

  2. Теперь посмотрим информацию о разделах нашего виртуального диска:

    sudo fdisk -l virtual.img
    

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

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

  • Вы запускаете fdisk командой sudo fdisk /dev/sdX (заменив X на соответствующую букву диска).
  • Используете команду n для создания нового раздела.
  • Команда d удаляет раздел.
  • Команда t меняет идентификатор системы раздела (указывает тип использования раздела).
  • Команда w записывает изменения на диск и завершает работу.

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

Инструмент fdisk не ограничивается только отображением информации. Он позволяет интерактивно управлять структурой диска. Будьте предельно внимательны при использовании fdisk в системах с критически важными данными; неверные действия могут привести к их безвозвратной потере.

Резюме

Поздравляем! В этой практической работе вы научились:

  1. Проверять использование диска с помощью df.
  2. Анализировать размеры директорий с помощью du.
  3. Создавать, форматировать, монтировать и размонтировать виртуальный диск.
  4. Просматривать информацию о разделах с помощью fdisk.

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

В качестве дополнительного задания попробуйте написать shell-скрипт, который находит 10 самых больших файлов или папок в вашем домашнем каталоге и выводит их размеры в удобном для чтения формате. Это объединит несколько команд, которые вы изучили сегодня.

Помните, что практика — ключ к освоению этих концепций. Не бойтесь экспериментировать с этими командами (в безопасной среде), чтобы углубить свои знания. Удачи в дальнейшем изучении системного администрирования Linux!