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

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/nvme1n1  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/nvme1n1   100G   56G   45G  56% /etc/hosts
    

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

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

    df -h /etc/hosts
    

    Это покажет информацию только для той файловой системы, в которой находится /etc/hosts. В данной среде это обычно /dev/nvme1n1.

Команда 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. Разделы: Раздел — это часть диска, которая рассматривается как отдельная единица. Представьте, что вы делите большой жесткий диск на меньшие независимые секции. Причины для разбиения на разделы:

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

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

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

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

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

    ls -lh virtual.img
    

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

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

    sudo mkfs.ext4 virtual.img
    

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

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

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

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

    sudo mkdir /mnt/virtualdisk
    

    Представьте точку монтирования как «окно» в ваш виртуальный диск. После монтирования, заглядывая в эту директорию, вы на самом деле видите содержимое виртуального диска.

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

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

    Разберем, что происходит:

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

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

  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. Они критически важны для управления хранилищем, устранения проблем с дисковым пространством и поддержания здоровья файловых систем в Linux.

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

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