В данной статье мы расскажем, как проверить свободное дисковое пространство на хосте под управлением Linux через консоль. Мы рассмотрим несколько базовых команд с помощью которых можно узнать размер не только одного диска или директории, а целого дерева каталогов. Отдельно выделим комбинированные команды для получения более детальной информации о размерах вложенных папок. В конце статьи мы приведем пример простого скрипта для мониторинга дискового пространства с отправкой уведомлением на почтовый ящик администратора.
Для чего нужно следить за дисковым пространством в системе? Разделы в Linux устроены так, что их можно заполнить на 100% и даже после такого, система продолжит работать. А вот отдельные сервисы могут пострадать, что может повлечь за собой необратимые последствия.
- Просмотр занятого места на разделах командой du
- Получаем размеры директорий командой du
- Bash скрипт мониторинга свободного места в Linux
- как посмотреть свободное место на диске
- Примеры использования команды du
- Команда ncdu
- Примеры команд ncdu
- Синтаксис
- Опции команды
- Примеры
- Заключение
- Как узнать свободное место в GUI
- Узнать свободное место в терминале
- Выводы
- Как пользоваться df
- Выводы
- Об авторе
- 1. Определённая папка
- 2. Папки в каталоге
- Выводы
- Об авторе
- Минуточку внимания
- Минуточку внимания
- Подготовительная работа
- Когда нет LVM
- Если есть доп. разделы
- Если есть LVM
- Как определить разметку
Просмотр занятого места на разделах командой du
Выведем список дисков в системе и их размер:
# fdisk -l

В моем случае, на виртуальной машине доступен 1 диск размером 40Гб.
Чтобы получить более детальную информацию по двум разделам, которые созданы на диске, можно использовать:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk ├─vda1 253:1 0 512M 0 part /boot └─vda2 253:2 0 39.5G 0 part /
В листинге команды видно, что один раздел используется под /boot, а второй под корень системы.
Новый диск в Linux добавляется так. Для управления разделами и разметкой также удобно использовать parted.
Перейдем к утилите, вокруг которой мы построили данную инструкцию:
df – это команда позволяет отобразить информацию о свободном/доступном месте на диске, файловой системы раздела.
Чтобы листинг команды был более читабелен, нужно использовать ее с опциями. Например:
# df -h

-
Filesystems
– имя файловой системы -
Size
– размер раздела -
Used
– используемое дисковое пространство -
Avail
– доступное дисковое пространство(свободное) -
Use%
— занятое дисковое пространство в процентах -
Mounted on
– смонтировано. Указывает директорию, к которой примонтирован раздел.
При использовании опции -h дисковое пространство выводится в Гб. Если размер меньше 1Гб, то вывод будет в Мб.
df -m
– информация будет отображена в Мб.
df -k
— информация будет отображена в Кб.
df -T
– к выводу добавиться тип файловой системы
df -hT /boot
– с данной опцией, будет предоставлена информация

Опции можно комбинировать между собой, для получения нужной информации.
Полная справка по df доступна через команду:
# df --help
Получаем размеры директорий командой du
Вторая команда, которую мы рассмотрим, это du. du – команда отображающая размер директории.
Дополнительные опции для du:
-
du -h
– показывает информацию в читабельном формате. Можно указать путь к конкретной директории, если применить без этого, покажет информацию в текущем каталоге. -
du -sh
– покажет размер директории в которой вы находитесь. Можно указать путь к директории. -
du -m
– вывод информации в Мб. -
du -h --time
– выведет информацию с дополнительным столбцом по времени изменения директории или файлов.

Больше информации по утилите, можно увидеть так:
# -du --help
При администрировании сервера, можно комбинировать вышеописанные команды. Например, выведем размер всех вложенных каталогов в /var/log и отсортируем вывод от большего к меньшему (чтобы самые большие каталоги оказались вверху списка):

# du --max-depth=1 -h
– выводит на экране размер вложенных директории, не дальше 1-го уровня вложенности.

Таким образом, вы легко можете определить сколько места занимают разные директории, и быстрой найти большие каталоги, которые занимают очень много места.
Bash скрипт мониторинга свободного места в Linux
Рассмотрим простой bash скрипт, для мониторинга дискового пространства на сервере и отправке email уведомления администратору, если места недостаточно.
При достижении заполняемости директории / до 90% к вам на почту будет отправляться уведомление. Добавьте данный скрипт в cron и мониторьте вашу систему. Можно изменить скрипт, чтобы он смотрел за размером определенного раздела или каталога.
Одной из распространённых задач в системном администрировании является оценка состояния жёстких дисков (а также и других устройств хранения), в том числе анализ использования дискового пространства. В Linux для таких целей давно существуют утилиты с удобным графическим интерфейсом, предоставляющих наглядную информацию о занятом пространстве в виде диаграмм и графиков. Однако, для системных администраторов, обслуживающих «серьёзные» сервера на основе Linux-систем, графический интерфейс — чрезмерное удовольствие, не оправдывающее затрачиваемых на него ресурсов. Поэтому необходимо уметь обходиться средствами командной консоли, используя специализированные консольные утилиты для анализа дискового пространства, которые доступны в виде двух команд — du и ncdu.
как посмотреть свободное место на диске
Давайте узнаем сколько у нас свободного места в системе. Узнать это можно с помощью команды
df –h

как видим у нас диск занят на 97%, и нам необходимо узнать что у нас заняло место. Давайте этим займемся.
Disk Usage – именно так интерпретируется название команды du. Она была написана ещё в самой первой версии UNIX (в определённом роде предшественницы Linux), еще в стенах одной из лабораторий компании AT&T. Этот факт даёт понять, насколько важно следить за дисковым пространством, а также анализировать его при наличии специализированных программных инструментов, ведь du – одна из самых первых утилит из стандартного комплекта UNIX/Linux.
Итак давайте узнаем что у нас занимает место
du --max-depth=1 -h /
Более подробное описание команды du и ключей вы можете прочитать ниже. Вывод будет следующий

Отсюда мы видим что самый большой каталог у нас /var. Посмотрим что у на занимает место в каталоге /var
du --max-depth=1 -h /var
видим что это папка log

Теперь смотрим /var/log
du -ah /var/log

и вот здесь мы уже видим пять самых больших файлов с логами, именно они и заняли все место на диске. Давайте рассмотрим команду du подробнее.
Согласно описанию из официального man-руководства, утилита du суммирует использование дискового пространства набора элементов, рекурсивно с каталогами. Синтаксис команды не простой, а очень простой, поскольку представляет собой классический прототип команды Linux:
du [КЛЮЧ]… [что сканировать]…
Если дать команду du без параметров, то по-умолчанию будет выведен список всех каталогов и подкаталогов для текущего каталога. Также по-умолчанию единицей измерения объёма является 1024 байта или 512 байт, в зависимости от конфигурации используемой системы:
du code_text.txt 4 code_text.txt
Как видно, code_text.txt занимает 4 килобайта (т. к. 1024 байта = 1 килобайт) дискового пространства. То же самое и с папками, но по-умолчанию будет указан общий размер папки без детализации по файлам и подкаталогам. В следующей таблице приведены опции команды du:
Используемые командой du единицы измерения размера (или объёма) задаются в формате «цифраБуква», где цифра — это коэффициент, а Буква — степень единицы измерения, например: 5K = 5 * 1024 = 5120 = 5 килобайт и по аналогии для M – мегабайт, G – гигабайт.
Примеры использования команды du
Узнать общий размер каталога (например с резервными копиями):
$ du -sh ~/home/backups 19G /home/john/backups
Вывод размеров всех подкаталогов (рекурсивно):
$ du -h ~/home/backups/ 3,2M /home/john/backups/vhosts/ssl 1,5M /home/john/backups/vhosts 5,0M /home/john/backups
С учётом файлов:
$ du -ha ~/home/backups/ 4,0K /home/john/backups/.directory 764K /home/john/backups/scheme.txt 3,2M /home/john/backups/vhosts/ssl 1,5M /home/john/backups/vhosts 5,0M /home/john/backups
С фильтрацией в зависимости от размера файла/каталога:
$ du -ha -t2M ~/home/backups/ 3,2M /home/john/backups/vhosts/ssl 5,0M /home/john/backups
Как видно, были отброшены файлы/каталоги размером меньше 2 мегабайт. Следующая команда, напротив — исключит из вывода только файлы/каталоги больше 2 мегабайт:
$ du -ha ~/home/backups/ 4,0K /home/john/backups/.directory 764K /home/john/backups/scheme.txt 1,5M /home/john/backups/vhosts
Команда ncdu
Более удобный способ найти что занимает место на диске можно с помощью команды ncdu. Утилита ncdu (Ncurses Disk Usage) способна делать всё то же самое, что и утилита du и даже немного больше. К тому же, она предоставляет пользователю удобный в использовании псевдографический интерфейс, с помощью которого можно быстро перемещаться по дереву системы, оценивая размеры интересующих элементов и папок.
Фактически, ncdu может выполнять функции полноценного браузера системы, при этом имеет большое количество опций, позволяющих настраивать псевдоинтерфейс для разных режимов работы, экспортировать и импортировать результаты работы в файлы, выполнять сортировки, экономить сетевой трафик, если это нужно, когда анализируется удалённая (например по SSH) система.
По-умолчанию, выполнение команды ncdu без параметров, выводит файловый браузер, в котором после предварительного сканирования (с показом прогресса выполнения) отображается список элементов и подкаталогов текущего каталога. По этому списку можно перемещаться, используя клавиши курсора, спускаться в подкаталоги (<Enter>) выходить из них, при этом информация о размере представленных элементах и папок отображается «как на ладони». В строке состояния отображается общий используемый объём (Total disk usage), фактический объём (Apparent size), а также количество файлов и папок для текущего анализируемого каталога.
Основные опции команды ncdu:
Интерфейс ncdu действительно очень дружественный — размеры всегда отображаются в «человекопонятных» единицах.
Для работы с псевдоинтерфейсом ncdu предусмотрен целый набор «горячих клавиш», позволяющих удалять выбранные файлы и каталоги, включать режим представления используемого пространства в процентах, отображать информацию о выбранных элементах, а также выполнять другие полезные функции. Об этом более подробно можно прочитать в соответствующих man-страницах в разделе «KEYS», используя команду man ncdu.
Примеры команд ncdu
Сделаем поиск занимаемого пространства с помощью ncdu
ncdu /

Снова видим большой каталог /var, и уже с помощью клавишь и ENTER мы можем передвигаться по каталогам. Видим каталог log

А здесь мы видим наши большие логи

Еще несколько полезных примеров.
Сканирование объёмных каталогов с экспортом/архивированием в лог для последующего использования или просмотра:
$ ncdu -1xo- / | gzip > usage_fs.gz $ zcat usage_fs.gz | ncdu -f-
Сканирование текущей директории, экспорт результатов в лог, и последующий просмотр этих результатов в браузере ncdu:
$ ncdu -o- | tee usage_fs.txt | ncdu -f-
Работа с удалённой системой:
ssh -C username@hostname ncdu -o- / ncdu -f-
В данной команде опция -C используется для утилиты ssh для сжатия сетевого трафика при некачественном или медленном соединении.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Команда df сообщает объем используемого и доступного дискового пространства в файловых системах. Она позволяет увидеть общий размер дисков, сколько места на них занято и сколько свободно. Также с помощью этой команды можно увидеть и точки монтирования.
Синтаксис
df [ОПЦИЯ]... [ФАЙЛ]...
Команда отображает информацию об использовании дискового пространства в файловой системе, содержащей каждый из указанных в аргументах файлов. Если имя не указано, отображается доступное пространство всех смонтированных файловых систем. Если аргумент – абсолютное имя диска, содержащего файловую систему, df показывает объем доступного пространства в этой файловой системе, а не в файловой системе, содержащей устройство (это всегда корневая файловая система). df не может показать доступное пространство размонтированных файловых систем, потому что в большинстве случаев это требует очень подробной информации о структурах файловой системы.
Опции команды
Примеры
df
отобразить все файловые системы и используемое ими дисковое пространство:

Для вывод тех же данных в «читаемом человеческом» формате используйте ключ -h:
df -h

Вывести объем доступного пространства в каталоге:
df -h /home

Вывести только файловые системы отформатированные в ext4
df -t ext4

Вывод всех дисков кроме отформатированных в ext4
df -x ext4

Заключение
Команда df – очень простой в освоении, но эффективный инструмент, позволяющий всегда быть в курсе использования дискового пространства в ваших системах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
В Windows для того чтобы получить представление о свободном месте на дисках компьютера достаточно открыть мой компьютер. Там в очень наглядном виде представлен список дисков и подробная информация сколько места доступно в нашей системе, сколько уже использовано и сколько осталось свободно.
В главном окне файловых менеджеров Linux нет такой возможности, так же как и нет разделения диски, по умолчанию просто открывается домашняя папка. В Linux все разделы диска подключаются к корневой файловой системе, в определенные подкаталоги. При доступе к файловой системе мы невидим никаких дисков, есть только корневая файловая система. При работе с ней возникает ощущение, что это одна файловая система, не разделенная на разделы. Это очень удобно, но по-началу может показаться непривычным. Управление разделами и их размером выполняется с помощью специальных утилит.
В этой инструкции мы рассмотрим несколько способов узнать свободное место на диске linux. Мы рассмотрим как консольные утилиты, так и утилиты с графическим интерфейсом.
Как узнать свободное место в GUI
Новичкам проще обращаться с графическим интерфейсом системы. С него и начнем.
Стандартной утилитой для работы с дисками и разделами в Linux можно считать — Gparted. С помощью этой программы можно не только оценить доступное и использованное место на диске, но и создавать, удалять и изменять размер разделов. Во многих дистрибутивах она уже предустановлена, но если нет, ее можно установить с помощью пакетного менеджера, например, в Ubuntu:
sudo apt-get install gparted
Запускается программа из главного меню. Наберите в поиске gparted или выполните в терминале:
Приставка pexec означает, что будет утилита будет выполняться с правами суперпользователя, поэтому нужно будет ввести пароль. Вот так выглядит главное окно утилиты:

В правом верхнем углу мы можем выбрать диск, с которым хотим работать, а в рабочей области — список разделов на выбранном диске. Здесь указывается название, файловая система, метка, размер и информация об использованном пространстве. Кстати, оценить свободное место можно и визуально, занятое место отмечено желтым, а свободное — белым.
Как я говорил, в этой утилиты еще очень много возможностей, но они выходят за рамки этой статьи.
Узнать свободное место на диске Ubuntu/Gnome можно более простым способом, с помощью утилиты системный монитор. Откройте утилиту системный монитор с помощью Dash или главного меню:

Затем перейдите на вкладку файловые системы:

Здесь отображены все подключенные разделы, а также их размер и количество доступного пространства.
В KDE такая функция не поддерживается системным монитором. Но зато кое-какую информацию можно узнать в утилите информация о системе:

Также Dolphin, файловый менеджер KDE, позволяет отображать свободное пространство на текущем разделе в строке состояния. Для этого откройте Настроить Dolphin, Главное, Строка состояния и включите галочку Показывать сведения о свободном месте:

Вот так это будет выглядеть:

Такая же функция раньше была в Nautilus, но в новых версиях строка состояния в этом файловом менеджере отключена.
Еще один способ выполнить просмотр свободного места на диске linux, это воспользоваться утилитой baobab. Это стандартный дисковый анализатор в Ubuntu, утилита показывает не только занятое и свободное место, но и круговую диаграмму размера папок и файлов на диске, что позволяет очень быстро понять куда же делось место:

В KDE есть свой аналог, это fileslight, принцип работы такой же.
Чтобы проверить свободное место на диске linux можно использовать виджеты. Их довольно много, так что детально останавливаться на этом не будем.
Узнать свободное место в терминале
В Linux почти все действия можно сделать несколькими способами. Просмотр свободного места не исключение. Кроме, утилит с графическим интерфейсом есть несколько консольных утилит.
Утилита df, позволяет проанализировать свободное пространство на всех подключенных к системе разделах:
По умолчанию размер отображается в байтах, чтобы сделать его более читаемым, используйте опцию -h:

Как видите, кроме размера здесь отображается файловая система и точка монтирования.
Если хотите посмотреть только свободное место в определенном каталоге, его можно указать:
df -h /home

Так же само можно указать устройство:
df -h /dev/sda
Кроме опции -h утилита поддерживает и другие опции:
- -m — отображать размер в мегабайтах
- -T — отображать тип файловой системы
- -a — включить в список все файловые системы
- -i — отображать используемые иноды
Чтобы проанализировать какие файлы занимают больше всего пространства можно использовать утилиту du. Утилита выводит размер всех файлов в текущей или указанной директории, например:
du -h /home
Мы также можем отсортировать вывод, чтобы его было более удобно анализировать:
Опция -h указывает, что нужно выводить размер в мегабайтах. Здесь есть еще несколько интересных опций:
- -b — выдавать размер в байтах
- -k — показывать размер в килобайтах
- -m — размер в мегабайтах
- -x — не учитывать каталоги, находящиеся в других файловых системах.
Выводы
Вот и все, теперь вы знаете как узнать свободное место на диске linux. Конечно, это еще далеко не все способы для решения этой задачи, но этого будет вполне достаточно. Если у вас остались вопросы или вы пользуетесь другим способом, опишите его в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Когда доходит дело до проверки свободного места через терминал, нам не обойтись без такой стандартной утилиты, как df. В графическом интерфейсе есть множество программ, которые можно использовать, чтобы узнать свободное место Linux. Но в некоторых случаях вам доступен только терминал и нужно, например, выяснить почему не работает программа. Тогда на выручку приходит команда df linux, она позволяет выводить не только список подключенных устройств, но и информацию о занятом месте, а также точку монтирования.
В этой статье мы подробно рассмотрим что из себя представляет команда df, как ее можно использовать, разберем ее опции и вывод.
Утилита df поставляется по умолчанию во всех дистрибутивах Linux и имеет очень простой синтаксис. Фактически вы можете просто набрать df и уже получить результат, но чтобы сделать вывод более читаемым используются дополнительные опции. Вот основной синтаксис:
Устройство указывать необязательно, но можно указать раздел диска, о котором мы хотим посмотреть информацию. А теперь рассмотрим основные опции утилиты:
- -a, —all — отобразить все файловые системы, в том числе виртуальные, псевдо и недоступные;
- -B — изменить размер одного блока перед выводом данных, например, можно использовать BM, чтобы вывести все данные в мегабайтах;
- -h — выводить размеры в читаемом виде, в мегабайтах или гигабайтах;
- -H — выводить все размеры в гигабайтах;
- -i — выводить информацию об inode;
- -k — выводить размеры в килобайтах;
- —output — использовать специальный формат вывода, если не задано, выводит все поля. Доступны такие варианты: ‘source’, ‘fstype’, ‘itotal’, ‘iused’, ‘iavail’, ‘ipcent’, ‘size’, ‘used’, ‘avail’, ‘pcent’, ‘file’ и ‘target’;
- -P — использовать формат вывода POSIX;
- —total — выводить всю информацию про использованное и доступное место;
- -t, —type — выводить информацию только про указанные файловые системы;
- -x — выводить информацию обо всех, кроме указанных файловых систем;
Теперь, после основных опций рассмотрим подробнее как примеры df linux.
Как пользоваться df
Чтобы посмотреть доступное пространство на всех примонтированных разделах и информацию о них достаточно набрать:

Утилита отображает стандартный набор колонок, но понять в ее выводе что-то с первого раза сложно. Все данные выводятся в килобайтах. Теперь давайте попросим утилиту выводить данные в более читаемом формате:

Это самое популярное сочетание опций, потому что оно дает максимально понятную информацию и уже можно судить о том, что происходит на диске. Например, мы видим, что в домашней папке уже занято 87% места и, возможно, пора что-то удалить. Если задать опцию -a, вы можете получить информацию обо всех файловых системах известных ядру, которые были смонтированы:

Здесь отображается огромное количество виртуальных файловых систем ядра. Если вы хотите вывести только информацию про реальные файловые системы на жестком диске можно использовать опцию -x чтобы отфильтровать все tmpfs:
df -x tmpfs

Также можно отфильтровать две файловые системы:
df -x devtmpfs -x tmpfs

Или же указать файловую систему, которую нужно отображать:
df -t ext4

Также можно указать интересующий вас раздел, как вы видели в синтаксисе команды:
df -h /dev/sdb6

С помощью опции -i вы можете посмотреть информацию про состояние inode в вашей файловой системе:
df -hi /dev/sdb6

Видео, о том, как пользоваться утилитой df:
https://youtube.com/watch?v=CWdQQdok4BM%3Ffeature%3Doembed
Выводы
В этой небольшой статье была рассмотрена команда df linux. С помощью нее вы можете посмотреть подробную информацию о состоянии файловой системы Linux, подключенных разделах и информацию о свободном и занятом пространстве. Надеюсь эта информация была полезной для вас.
На десерт видео из Лиги смеха, звонок в техподдержку:
https://youtube.com/watch?v=SJRTNh4_QvM%3Ffeature%3Doembed
Об авторе
![]()
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Посмотреть занимаемое место конкретной директории на диске Linux получится через любой файловый менеджер. Достаточно открыть свойства файла. Но там информация отображается в кратком виде, а нередко нужны подробности. С помощью утилиты ls получить детальные сведения не получится. А вот утилита du для этих целей подойдет отлично.
В данной статье мы расскажем, как посмотреть размер папки в Linux с помощью du. Для этого разберем два примера ее использования.
Сначала мы опишем, как получить информацию об определенной папке, с учетом или без учета ее вложений. А потом перейдем к подпапкам в конкретном каталоге. Заодно упомянем несколько полезных нюансов работы с du, например, возможность сортировки данных.
1. Определённая папка
В качестве примера возьмем папку Downloads. Команда для вывода ее размера выглядит следующим образом:
В результате выведется её занимаемое место на диске:

Для лучшего понимания команды вкратце пройдемся по задействованным опциям:
- -s – выводить только размер самой папки, без вложенных подпапок.
- -h – выводить информацию в привычном виде. Речь о единицах измерения (K – килобайт, M – мегабайт и т. д.).
Также вы можете посмотреть общий размер только самих файлов в папке, без учета содержимого подпапок. Для этого используется опция -S:

Теперь вы знаете как вывести размер папок Linux.
2. Папки в каталоге
Второй полезный сценарий использования утилиты du заключается в выводе размера всех вложенных папок в определенной директории, без учета файлов внутри. Опять в качестве примера возьмем директорию Downloads. Вот нужная нам команда:

В результате ее выполнения в терминале отобразится сначала размер вложенных подпапок, а потом и самой папки. С помощью опции —max-depth можно задать максимальную глубину вложенности. Если вам интересна только сама папка, то глубина равна 0, если еще и вложенные в нее подпапки, то глубина равна 1 и больше:

Это будет особенно полезно, когда директория сильно разрослась, и нужно ограничить область действия для утилиты du.
Также вы можете увидеть размер самой папки и всех файлов внутри нее, в том числе и во вложенных папках. Для этих целей нужно дополнительно задать опции -a:


Выводы
В статье мы вкратце рассказали о том, как посмотреть размер папки в Linux и ее вложений с помощью утилиты du. Заодно упомянули возможность сортировки и другие важные нюансы. А если вам интересны еще сценарии использования du в терминале Linux, то ознакомьтесь с данной статьей. Там подробно разобран ее синтаксис, доступные опции и конкретные примеры.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Об авторе
du -hsx /*
0 /backup
0 /bin
212M /boot
0 /dev
37M /etc
3.2G /home
0 /lib
0 /lib64
0 /media
0 /mnt
124M /opt
du: cannot access ‘/proc/24620/task/24620/fd/4’: No such file or directory
du: cannot access ‘/proc/24620/task/24620/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/24620/fd/4’: No such file or directory
du: cannot access ‘/proc/24620/fdinfo/4’: No such file or directory
0 /proc
11M /root
57M /run
0 /sbin
0 /srv
0 /sys
76K /tmp
1.5G /usr
1.5G /varFilesystem Size Used Avail Use% Mounted on
/dev/vda1 25G 23G 2.3G 92% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 497M 63M 434M 13% /run
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0-
Вопрос заданболее трёх лет назад
-
4634 просмотра
Выполняем:du -h -d 1 /
Находим директорию там где больше всего размер выведет
Затем du -h -d 1 /<интересующая директория>
и выполняем эту команду далее, спускаясь внутрь директорий, пока не найдете требуемое
поставь инструмент ncdu — тот же du только с консольным интерфейсом на ncurses.
есть опция -x исключать каталоги с монтированными фс — удобно до жути.
есть встроенная функция удаления файлов.
du может показывать отличающиеся от df цифры в случае, если файл удалён, но до сих пор существует дескриптор (читай — файл кто-то использует). В этом случае место на ФС не освобождается. Найти такие файлы можно, например, lsof`ом.
26 апр. 2023, в 02:47
30000 руб./за проект
26 апр. 2023, в 00:41
10000 руб./за проект
26 апр. 2023, в 00:37
5000 руб./за проект
Минуточку внимания
Привет, как посмотреть, что занимает место? df -h говорит, что занято 25гб, однако по факту только 9гб, ncdu / сказала, что тоже 9гб занято:
В чем дело? Как посмотреть, что еще занимает место?
-
Вопрос заданболее трёх лет назад
Вероятно запущенные процессы удерживают открытыми дескрипторы уже удалённых файлов, что не позволяет освободить занятое место ФС.
Список дескрипторов и процессов можно получить например так:sudo lsof -a +L1
Пример строки от меня:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
php 17455 melkij 4r REG 254,1 1048576000 0 2624572 /home/melkij/tmpfile (deleted)php процесс с pid 17455 удерживает deleted дескриптор файла размером в 1гб.
Далее адресно разбираться с процессами.
установи ncdu — очень удобная навигация и сразу понятно где «большая» папка, а где не очень.
26 апр. 2023, в 02:47
30000 руб./за проект
26 апр. 2023, в 00:41
10000 руб./за проект
26 апр. 2023, в 00:37
5000 руб./за проект
Минуточку внимания

Чаще всего задача расширить файловую систему возникает при работе с облачной инфраструктурой. Виртуализация позволяет экономить на дисковом пространстве и выделять его столько, сколько необходимо в конкретный момент. Но простого расширения ресурсов недостаточно, об изменениях необходимо сообщить операционной системе. Сегодня ведущий архитектор #CloudMTS Дмитрий Фисенко в формате пошагового туториала расскажет, как это сделать.
Материал будет интересен начинающим системным администраторам, а также разработчикам, которые хотят ближе познакомиться с файловыми системами.
Подготовительная работа
Мы рассмотрим сценарии с двумя вариантами разметки диска — с использованием LVM и логических разделов, а также без них. Поскольку мы будем работать в облачной среде, где важны доступность и непрерывность сервисов, сфокусируемся на подходах, позволяющих расширить файловую систему без перезагрузки виртуальной машины (хотя сделать это не всегда возможно).
В рамках руководства нам также потребуется утилита growpart. К сожалению, нельзя просто так взять и расширить смонтированную файловую систему. Стандартные утилиты вроде fdisk или GParted предлагают предварительно размонтировать раздел. Вот команды установки growpart для различных семейств Linux-систем:
apt-get install cloud-utils-growpart
yum install cloud-utils-growpart
dnf install cloud-utils-growpartТакже рекомендуем сформировать на виртуальной машине точку восстановления (snapshot) на случай, если что-то пойдет не по плану.
Когда нет LVM
Рассмотрим задачу, когда на диске присутствует два раздела — загрузочный и корневой. Они смонтированы в произвольную точку. Вот как это выглядит в графическом интерфейсе GParted:

Расширять будем корневой раздел. Первым делом необходимо увеличить доступный объем жесткого диска через панель управления облачной инфраструктурой #CloudMTS — с 7 до 8 Гбайт.

Увеличение диска займет какое-то время, а мы вернемся на тестовый стенд. Отобразим структуру разделов с помощью команды:
parted /dev/sdb/ print free Параметры print и free отвечают за отображение структуры разделов и неразмеченного пространства.

Мы увеличили объем диска, но все равно не видим в выдаче команды parted свободную память. Можно перезагрузить сервер, но мы решили, что по возможности не будем останавливать виртуальную машину. Вместо этого, выполним команду:
echo 1 > /sys/block/sdb/device/rescan
Если мы попытаемся снова отобразить структуру разделов командой parted, то увидим предупреждение. Мы используем таблицу разделов в формате GPT. Информация о ней хранится в начале и в конце диска (для резервирования). Когда мы увеличили объем физического накопителя, сменился конец адресного пространства. Система предлагает автоматически переместить резервные файлы. Соглашаемся и пишем в командной строке fix.

Появилось свободное дисковое пространство в размере одного гигабайта:
growpart /dev/sdb 2
Мы расширили раздел, но файловая система осталась нетронутой. Вот как это выглядит в GParted:

Давайте расширим ФС командой resize2fs. Если у вас xfs, то нужно указывать точку монтирования. В случае с ext2, ext3 и ext4 достаточно выполнить команду с указанием блочного устройства, которое монтируется в файловую систему. Мы используем ext4, поэтому выполним:
resize2fs /dev/sdb2Таким образом, мы успешно расширили файловую систему до размера диска.

Теперь рассмотрим другую ситуацию, когда ФС находится в логическом диске, созданном в расширенном разделе. Так структура выглядит в древовидном формате:

У нас два основных раздела — sdc1 и sdc2. Второй — расширенный, и внутри него можно сформировать неограниченное количество новых разделов. Перейдем в облачную панель управления и увеличим диск на один гигабайт, а затем обновим информацию об устройстве sdc уже известной командой:
echo 1 > /sys/block/sdс/device/rescanКонкретно этот диск мы разметили в формате MBR, поэтому здесь мы не видим предупреждений о переносе резервной копии таблицы разделов, как в случае с GPT.

Вернемся в консоль и отобразим информацию о диске:
parted /dev/sdb/ print free
Чтобы не захламлять выдачу, временно уберем отображение свободного пространства на диске:
parted /dev/sdb/ print 
У нас есть три раздела: основной под номером один, расширенный и логический под номерами два и пять.
Чтобы понять, какие разделы находятся в extended, необходимо сверить их начало и конец. Здесь мы видим, что конец второго раздела соответствует концу пятого раздела — 5369 Мбайт. И размер последнего на один мегабайт меньше. Так мы можем утверждать, что пятый раздел находится во втором разделе.
Чтобы расширить пятый раздел, необходимо предварительно увеличить второй. Для этого выполним:
growpart /dev/sdc 2
Вот так результат команды будет выглядеть в графическом отображении:

Раздел extended был расширен до конца всего раздела — вокруг неразмеченной области появилась голубая рамка. Теперь расширим пятый раздел, который пока занимает 4,5 Гб из доступных 5,5 Гб. В консоли пишем:
growpart /dev/sdc 5
Теперь и желтая рамка, обозначающая пятый раздел, протянулась до конца физического диска. Но мы видим, что файловая система все еще заканчивается сильно раньше. В нашем примере мы используем файловую систему xfs, которая наиболее распространена на CentOS, хотя иногда её применяют и на Debian с Ubuntu.
Для расширения файловой системы выполним команду:
xfs_growfs /mnt/sdc5 Обратите внимание, что в случае с xfs мы указываем не само физическое устройство, а точку монтирования. В нашем случае это /mnt/sdc5, но в частном случае это будет корень.

Вновь обращаемся к GParted и видим, что файловая система расширена до конца.

Если есть доп. разделы
Рассмотрим ситуацию, когда после расширяемого раздела идут другие — SWP, Home, Data и так далее.

В случае SWP облачная инфраструктура предлагает выход из ситуации. Мы можем выделить операционной системе столько памяти, чтобы ей вообще не приходилось применять своп. Затем раздел можно отключить из автозагрузки и удалить, а освободившееся дисковое пространство присоединить к целевому.
Есть и другой вариант, позволяющий сохранить SWP. С точки зрения виртуальной машины диск представляет собой файл в системе хранения данных с разными расширениями — например, VDI или VHDX. Мы можем изменить локацию SWP на файл в файловой системе, которую планируем расширять. Мы не будем говорить о переносе SWP в файл, так как это выходит за рамки нашего материала. Однако в интернете можно найти подробные руководства — вот одна из таких инструкций.
Если вместо SWP за целевым разделом следует раздел с данными, ситуация становится интереснее. К сожалению, в этом случае нельзя расширить файловую систему без простоя. Поэтому на реальной инфраструктуре лучше запланировать технологическое окно в вечернее время.

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

В этом примере разделом с данными выступает linux-swap. Обновляем информацию по разделам в консоли:
echo 1 > /sys/block/sdd/device/rescanЗатем — информацию в графическом интерфейсе. Видим неразмеченное дисковое пространство объемом в один гигабайт.

Расширим раздел extended до максимального размера. Для этого правой кнопкой мыши вызываем выпадающее меню и выбираем пункт Resize/Move.

Откроется новое всплывающее окно, в котором необходимо подвинуть ползунок в крайнее правое положение. И подтвердить операцию.

Далее открываем меню Resize/Move для раздела с данными — в нашем случае это linux-swap.

Мышкой перемещаем красную рамку в конец жесткого диска, подтверждаем операцию.


Теперь на главном экране раздел linux-swap находится в конце блока extended.

Далее остается произвести расширение целевого раздела и файловой системы.

В верхней части экрана нажимаем кнопку Apply All Operations.

Спустя какое-то время утилита применит все изменения.

У такого подхода есть одна серьезная проблема. Если раздел linux-swap довольно объемный, то его перемещение в конец диска может занять два-три часа. Все это время приложения и сервисы виртуальной машины будут простаивать. Вопрос можно решить, если сформировать в виртуальной инфраструктуре несколько дисков под каждый раздел. Так вы всегда сможете расширить условные /data и /root, поскольку они будут независимы друг от друга.
Другим решением, которое позволит избежать простоев, является разметка диска с помощью LVM.
Если есть LVM
К сожалению, для работы с LVM нет нормальных программ с графическим интерфейсом. Точнее, они есть, но не слишком информативные. Так с логическими томами приходится работать исключительно в командной строке.
В контексте LVM существуют физические тома (physical volume) — это целые неразбитые диски или их разделы. Внутри физических томов также есть разделы, объединённые в volume-groups. Эти группы, в свою очередь, дробятся на логические разделы — еще один уровень абстракции.
Что нам это дает? Рассмотрим два варианта разметки разделов диска. Чисто технически они ничем не отличаются — первый загрузочный, а второй физический том с LVM. В последнем случае он уже разбит на дополнительные разделы.

Может быть и следующая картина. Два раздела лежат в extended partition, а третий стоит отдельно, но добавлен в volume group. На отдельном диске дополнительно выделен раздел и также добавлен в эту группу.
Дополнительный уровень абстракции LVM позволяет нам расширять файловую систему вне зависимости от порядка разделов и предоставляет несколько подходов. Например, можно просто увеличить объём раздела, а можно создать новый и «приписать» его в логическую группу. Главное не переборщить с дроблением, чтобы разметку было проще читать.
Небольшая ремарка — если на диске есть раздел, который монтируется как блочное устройство и не участвует в LVM, то при расширении могут возникнуть проблемы. Здесь нужно или подключать образ Live CD, или перемещать раздел на отдельный виртуальный диск — тогда он не будет мешать увеличивать основной и логические разделы и volume groups.

Перейдем непосредственно к расширению файловой системы с LVM. На нашем тестовом стенде есть диск /dev/sde со следующей структурой:

В панели управления облаком увеличим объем диска на один гигабайт. Отобразим информацию о нем в консоли:
echo 1 > /sys/block/sdd/device/rescan
parted /dev/sde/ print freeМы видим, что у нас добавилось свободное дисковое пространство.

Разделы, использующие LVM, помечены соответствующим тегом. В этом конкретном примере мы будем увеличивать диск под номером три до необходимого нам объёма. Нам не придется ставить дополнительные утилиты, так как все инструменты по умолчанию присутствуют во всех популярных дистрибутивах Linux.
Мы воспользуемся возможностями parted. Но предварительно отобразим размер свободного пространства в мегабайтах для наглядности.
parted /dev/sde unit MB print freeДалее смотрим на ключевые столбцы — Start, End и Size. Свободное дисковое пространство заканчивается на точке в 6442 Мбайта.

Чтобы расширить последний раздел, прописываем команду:
parted /dev/sde resizepart 3 6441MBОбратите внимание, что мы уменьшили цифровое значение в конце на один мегабайт. Проверим внесенные изменения:
parted /dev/sde print freeСвободное дисковое пространство уменьшилось до одного мегабайта, а наш второй раздел имеет объем в 3806 Мбайт.

Вернемся в GParted и обновим информацию по разделам. Сейчас LVM в /dev/sde3 не «растянут» до конца.

Посмотрим на объем текущего физического тома – для этого выполним:
pvdisplay
Как физические тома у нас помечены два устройства — sde2 и sde3. Последний имеет объем в 2,5 Гб, но в GParted эта цифра равна 3,5 Гб. Чтобы исправить ситуацию и синхронизировать значения, нужно выполнить команду:
pvresize /dev/sde3 Повторяем pvdisplay и видим, что объем физического раздела увеличился.

Визуальное отображение в GParted также изменилось:

Чтобы отобразить существующие логические разделы, обратимся к команде:
lvscanВ нашей группе томов присутствуют два логических раздела — root и data.

Мы можем увеличить любой из этих томов. Для примера расширим /root следующей командой:
lvextend /dev/vg/root -l +100%FREE -rКлюч -r автоматически расширит и раздел, и файловую систему внутри него (как в случае с xfr, так и с ext). Переходим в GParted и видим, что операция выполнена успешно:

Теперь, если прописать в консоли df -h, мы увидим, что устройство dev/mapper/vg-root имеет объем в два гигабайта, хотя изначально его объем был равен одному гигабайту.

Как определить разметку
Поговорим о том, как понять, какая разметка у нас используется — с LVM или без? Если после выполнения команды df -h вы видите исключительно устройства типа /dev/sda — блочные устройства — то разметка выполнена без LVM. Также можно ввести команду lvscan. Если LVM не используется, то она ничего не отобразит. В противном случае покажет используемые логические разделы. На изображении ниже их два — root и data.

Иногда консоль может отобразить достаточно экзотические варианты, когда используется не dev, а dm0, dm1 и так далее. Чтобы понять, что это за устройства и какие логические разделы следует расширять, можно воспользоваться следующей командой. Она выведет всю информацию об устройствах.
lsblk --output NAME,KNAME,TYPE,SIZE,MOUNTPOINT
Например, мы видим, что dm-0 смонтирован в /mnt/sde-vg-root. Достаточно часто этот путь указывает в корень. И есть еще одна команда:
ls /dev/dm-*Она отображает все устройства вида dm-*. Как видно на скриншоте ниже, в нашем случае их два.

Пока на этом всё. В следующей части поработаем с реальной виртуальной машиной на операционной системе Linux Mint.
P.S. Продолжается акция при запуске ИТ‑инфраструктуры IaaS c #CloudMTS.


