Команда du в Linux
Команда du , сокращение от «использование диска», сообщает приблизительный объем дискового пространства, используемого данными файлами или каталогами. Это практически полезно для поиска файлов и каталогов, занимающих большие объемы дискового пространства.
Как использовать команду du
Общий синтаксис команды du следующий:
du [OPTIONS]. FILE.
Если данный FILE является каталогом, du будет суммировать использование диска для каждого файла и подкаталога в этом каталоге. Если FILE не указан, du сообщит об использовании диска в текущем рабочем каталоге .
При выполнении без какой-либо опции du отображает использование диска для данного файла или каталога и каждого из его подкаталогов в байтах.
du ~/Documents
Вы также можете передать команде du несколько файлов и каталогов в качестве аргументов:
du ~/Documents ~/Pictures ~/.zshrc
Если вы запустите du для файла или каталога, для которого у вас нет прав, вы получите что-то вроде «du: невозможно прочитать каталог». В этой ситуации вам нужно будет добавить к команде sudo .
du много опций, мы выделим только наиболее часто используемые.
Параметр -a указывает du сообщать об использовании дискового пространства каждым файлом в каталоге.
du -a ~/Documents
Обычно вы хотите отображать только пространство, занимаемое данным каталогом, в удобочитаемом формате. Для этого используйте параметр -h .
Например, чтобы получить общий размер /var/lib и всех его подкаталогов, вы должны выполнить следующую команду:
sudo du -h /var
Мы используем sudo потому что большинство файлов и каталогов внутри каталога /var/lib принадлежат пользователю root и не доступны для чтения обычным пользователям. Результат будет выглядеть примерно так:
. 4.0K /var/lib/apt/mirrors/partial 8.0K /var/lib/apt/mirrors 205M /var/lib/apt 2.9G /var/lib/
Чтобы сообщить только общий размер указанного каталога, а не подкаталогов, используйте параметр -s :
sudo du -sh /var
2.9G /var
Параметр -c указывает du сообщать общую сумму. Это полезно, когда вы хотите получить объединенный размер двух или более каталогов.
sudo du -csh /var/log /var/lib
1.2G /var/log 2.9G /var/lib 4.1G total
Если вы хотите отобразить использование диска подкаталогами n-уровня, используйте параметр —max-depth и укажите уровень подкаталогов. Например, чтобы получить отчет о каталогах первого уровня, вы должны использовать:
sudo du -h --max-depth=1 /var/lib
. 544K /var/lib/usbutils 4.0K /var/lib/acpi-support 205M /var/lib/apt 2.9G /var/lib
По умолчанию утилита du повторно использует дисковое пространство, используемое каталогом или файлом. Чтобы узнать очевидный размер файла, используйте переключатель —apparent-size . «Видимый размер» файла — это фактический объем данных в файле.
sudo du -sh --apparent-size /var/lib
2.9G /var/lib
du также позволяет использовать шаблон оболочки. Например, чтобы получить размер всех каталогов, начинающихся с «Do» в вашем домашнем каталоге, вы должны запустить:
sudo du -csh ~/Do*
102M /home/linuxize/Documents 358M /home/linuxize/Downloads 460M total
Использование du с другими командами
Команду du можно комбинировать с другими командами с конвейерами.
Например, чтобы напечатать 5 самых больших каталогов внутри каталога /var вы должны передать вывод du в команду sort чтобы отсортировать каталоги по их размеру, а затем передать результат в команду head которая распечатает только 5 верхних каталогов:
sudo du -h /var/ | sort -rh | head -5
4.6G /var/ 2.9G /var/lib 2.6G /var/lib/snapd 1.7G /var/lib/snapd/snaps 1.2G /var/log/journal/af8ce1d394b844fea8c19ea5c6a9bd09
Выводы
К настоящему моменту вы должны хорошо понимать, как использовать команду du .
В отличие от df который выводит информацию об использовании диска смонтированными файловыми системами , команда du дает вам оценку дискового пространства, используемого данными файлами или каталогами.
Вы можете просмотреть все доступные параметры команды du , набрав в терминале man du .
Если у вас есть вопросы или отзывы, оставьте комментарий ниже.
Проверка файловой системы Linux
Цель данной статьи, чтобы разобраться с тем как поправить незначительные ошибки, возникающие в файловых системах. Файловых систем много, поэтому много различных инструментов для работы с ними. Поэтому будет рассказано об основных инструментах к основным стандартным системам Linux. И рассмотрим несколько инструментов к рекомендованным LPIC файловым системам.
Рассмотрим, так же журналируемые файловые системы и посмотрим индексные дескрипторы.
- Проверка целостности файловой системы;
- Проверка свободного пространства и индексных дескрипторов в файловой системе;
- Исправление проблем файловой системы.
- df , du , fsck , debugfs – общие утилиты для всех Linux систем
- mke2fs , e2fsck , dumpe2fs , tune2fs – утилиты для файловой системы ext
- xfs_check , xfs_repair , xfs_info , xfs_metadump – утилиты для файловой системы xfs
Совершенно понятно, что для других файловых систем есть свои утилиты для работы с данными файловыми сиcтемами.
Первая утилита df :
man df
Данная утилита показывает использование дискового пространства. У данной утилиты достаточно много ключей. Её особенностью является то, что она показывает дисковое пространство в 1 кбайт блоках.
Данные цифры не очень понятны и удобны, для того чтобы было удобно можно использовать ключ –h и тогда вид станет удобно читаемым. В выводе команды мы сразу видим размер, сколько использовано, процент использование и точка монтирования. Как мы видим на новом перемонтированном разделе /dev/sdc1 занят 1% дискового пространства. Если посмотреть в папку монтирования раздела, то мы увидим там папку lost+found . Данная папка пуста, но занимает 37 МБ. Есть такое понятие индексные дескрипторы в журналируемых файловых системах inode. Inode – это метка идентификатора файла или по другому индексный дескриптор. В этих индексных дескрипторах хранится информация о владельце, типе файла, уровне доступа к нему. И нужно понимать, что для каждого файла создается свой отдельный inode. Команда df –I может показать нам inode.
Число, например, inode напротив /dev/sda2 показывает сколько inode всего может быть на устройстве, далее сколько используется и сколько свободно. Обычно под inode отдается примерно 1% жесткого диска. И получается, что больше чем число inode на устройстве файлов и папок быть не может. Количество inode зависит от типа файловой системы. Далее мы рассмотрим, как пользоваться inode.
Следующая команда du
man du
Данная команда показывает, что и сколько занимает у нас места на жестком диске, а именно размер папок в текущей директории. Если посмотреть вывод данной команды без ключей, то мы увидим список папок в текущей директории и количество блоков, с которым очень неудобно работать. Чтобы перевести данные блоки в человеческий вид, то необходимо дать ключ –h .
А для еще большего удобства, можно установить замечательную утилиту ncdu простой командой.
sudo apt install ncdu –y
После установки нужно запустить ncdu . И мы увидим очень красивую картинку.
Но вернемся к стандартной утилите du . С помощью данной утилиты мы можем указать в какой папке необходим просмотр папок и вывод их размера.
du –h /home
К сожалению данная утилита умеет взвешивать вес только каталогов и не показывает размер файлов. Для того, чтобы посмотреть размер файлов, мы конечно же можем воспользоваться командой ls –l . А также если мы запустим данную команду с ключем –i мы увидим номера inode файлов.
Как вы видите у каждой папки и у каждого файла есть свой индексный дескриптор.
Далее команды, которые нам позволят проверить целостность файловой системы.
man fsck
Как написано в описании утилиты она позволяет проверять и чинить Linux файловую систему.
Мы можем видеть, например, в oперационной системе Windows, что в случае некорректного завершения работы операционной системы, операционная система запускает утилиту проверки целостности checkdisk . В случае необходимости данная утилита исправляет найденные ошибки в файловой системе. Следовательно, в Linux данные операции выполняет утилита fsck , причем может работать с различными файловыми системами Linux операционных систем. Мы можем попробовать воспользоваться утилитой fsck /dev/sdc1 . В ответ от операционной системы мы получим следующее:
Как мы видим операционная система вернула в ответ на команду для работы с данным разделом, что данный раздел с монтирован и операция прервана. Аналогичную ситуацию мы будем наблюдать в операционной системе Windows, если мы будем пытаться рабочий раздел проверить на ошибки. Т.е возникнет следующая ситуация. Если мы будем проверять дополнительный логический диск, где не установлена операционная система Windows, то данный раздел на время проведения тестов будет отключен и будут идти проверки. А если мы попытаемся проверить основной раздел, куда установлена операционная система Windows, то операционная система не сможет запустить данную утилиту и попросит перезагрузиться для запуска данной утилиты. В нашем случае придется делать точно так же. Поэтому, чтобы проверить необходимо отключить (от монтировать раздел) и после уже этого запускать утилиту.
Из вывода можно заметить утилита пыталась запустить другую утилиту e2fsck , которая в данном случае отвечает за проверку файловых систем extext2ext3ext4 . О чем достаточно подробно написано в описании данной утилиты. По сути fsck запускает утилиту ту, которая идет в пакете утилит для конкретной файловой системы. Бывает такое, что fsck не может определить тип файловой системы.
Для того, чтобы утилита все-таки проверила файловую систему, необходимо отмонтировать логический раздел. Воспользуемся командой umount /mnt .
И запускаем непосредственно саму проверку fsck –t ext4 /dev/sdc1
Проходит проверка моментально. Команда fsck запустилась и запустила необходимую утилиту для файловой системы. По результатам проверки файловая система чистая, найдено 11 файлов и 66753 блока. При обнаружении проблем, утилита предложила нам исправить.
Для того, чтобы посмотреть на проверку другой файловой системы, необходимо переформатировать раздел.
mkfs –t xfs –f /dev/sdc1
При попытке запуска проверки без указания типа файловой системы fsck /dev/sdc1
Как мы видим, утилита fsck отказалась проверять или вызывать утилиту, а явно указала на ту которую необходимо использовать в данном случае. Для проверки используем xfs_ncheck /dev/sdc1 . А для починки файловой системы xfs_repair /dev/sdc1 .
Перемонтируем обратно наш раздел mount /dev/sdc1 /mnt
Теперь можно получить информацию по разделу xfs_info /dev/sdc1
Или сделать дамп файловой системы xfs_metadump /dev/sdc1 dump.db
Переформатируем файловую систему ext4 на разделе обратно /dev/sdc1 . Перемонтируем в папку mnt . Создадим текстовый файл с текстом на данном разделе nano /mnt/test.txt
Далее мы можем посмотреть следующую утилиту man debugfs . Данная утилита умеет очень многое: очень много ключей и различных опций. Чистит, удаляет, чинит, работает с inodes.
Зайти в данную утилиту можно debugfs –w /dev/sdc1 . Набираем help и видим кучу опций.
Можно попросить данную утилиту вывести содержимое нашего тома.
В результате данной команды мы увидим 2 объекта с номерами их inode. Теперь мы можем сказать rm test.txt и файл будет удален, точнее не сам файл а его индексный дескриптор., если посмотреть опять с помощью команды ls . То будет видно, что количество объектов не изменилось. Следовательно, мы этот файл в журналируемых файловых системах можем восстановить, восстановив его индексный дескриптор. Но только до тех пор, пока на место удаленного файла не был записан другой. Именно поэтому если требуется восстановление информации на диске, рекомендуется немедленно отключить ПК и после этого отдельно подключать носитель информации для процедуры восстановления. Так же на данном принципе основано сокрытие информации в Информационной безопасности, когда на носитель информации в 2 или 3 прохода записываются псевдослучайные данные. Для восстановления данных мы можем использовать команду lsdel . Данная команда показывает удаленные файлы.
В принципе на данном debugfs и основаны многие программы для восстановления данных.
На скриншоте хорошо видно, что был удален 1 inode с номером 12 дата и время, другие параметры. Для выхода используем q . Для восcтановления используем undel test.txt , команда, номер индексного дескриптора и имя файла с которым оно восстановится. Убедиться, что файл на месте можно с помощью команды ls .
Утилита debagfs помогает восстанавливать файлы и вообще работать с файловой системой на низком уровне. Конечно восстанавливать по 1 файлу, это очень трудозатратно. Поэтому вот эти низкоуровневые утилиты используют более современные программы.
Еще одна утилита dumpe2fs . Можно вызвать справку по данной утилите man dumpe2fs
Данная команда делает дамп информации, которая хранится на данных томах. Выполним данную команду для /dev/sdc1
Мы получим следующий вывод информации.
Данный вывод был сделан на стандартный вывод – т.е экран. Сделаем вывод в файл, например:
dumpe2fs /dev/sdc1 > /tmp/output.txt
Мы можем просмотреть информацию в выведенную в файл поэкранно с помощью less /tmp/output.txt
В выводе мы сможем увидеть основные опции данной файловой системы.
Переделаем файловую систему, текущую ext4 в ext2 . Это можно сделать 3-мя способами с помощью утилит: mkfs , mke2fs , mkfs . ext2 . Перед переформатирование необходимо отмонтировать файловую систему. После форматирования и перемонтируем. Опять снимаем дамп и передаем по конвееру на команду grep чтобы посмотреть features . Получаем следующее:
dumpe2fs /dev/sdc1 | grep features
И видим, что файловые системы отличаются, более новая файловая система имеет фишку журналирования has_jounal . Данная опция так же присутствует в ext3 . Т.е в данных файловых системах имеются журналы с помощью которых удобно восстанавливать.
Есть интересная утилита tune2fs – настраивать файловую систему.
man tune2fs
Данная утилита, как следует из описания настраивает настраиваемые параметры файловых систем. Например, у нас есть не журналируемая файловая система ext2 . Мы даем команду tune2fs –O has_journal /dev/sdc1 . Данная утилита добавляет опцию ведения журнала к файловой системе ext2 . Или можем наоборот сказать удалить опцию поставив значок ^ .
Как проверить дисковое пространство в Linux
Управление дисковым пространством на сервере Linux — важная задача. Например, приложения диспетчера пакетов уведомят вас, сколько места на диске потребуется для установки. Чтобы эта информация была значимой, вы должны знать, сколько места доступно в вашей системе.
В этом руководстве вы узнаете, как использовать команду df для проверки дискового пространства в Linux и команду du для отображения использования дискового пространства файловой системы.
Проверить дисковое пространство Linux с помощью команды df
Вы можете проверить свое дисковое пространство, просто открыв окно терминала и введя следующее:
Команда df означает освобождение диска и показывает количество места, занимаемого различными дисками. По умолчанию df отображает значения в блоках размером 1 килобайт.
Отображение использования в мегабайтах и гигабайтах
Вы можете отобразить использование диска в более удобочитаемом формате, добавив параметр –h :
df –h
Здесь отображается размер в килобайтах (K), мегабайтах (M) и гигабайтах (G).
Понимание формата вывода
Команда df выводит несколько столбцов:
Filesystem Size Used Avail Use% Mounted on udev 210M 0 210M 0% /dev tmpfs 49M 1004K 48M 3% /run /dev/sda2 7.9G 4.3G 3.2G 58% /
В вашем выводе может быть больше записей.
- Filesystem — это имя каждого конкретного диска. Сюда входят физические жесткие диски, логические (разделенные) диски, а также виртуальные или временные диски.
- Size — размер файловой системы.
- Used — объем пространства, используемого в каждой файловой системе.
- Avail — количество неиспользуемого (свободного) места в файловой системе.
- Use% — показывает процент использованного диска.
- Mounted on — это каталог, в котором расположена файловая система. Это также иногда называют точкой монтирования.
Список файловых систем включает ваш физический жесткий диск, а также виртуальные жесткие диски:
- /dev/sda2 — это ваш физический жесткий диск. Он может быть указан как /sda1 , /sda0 или у вас может быть даже несколько. /dev означает устройство.
- udev — это виртуальный каталог для каталога /dev . Это часть операционной системы Linux.
- tmpfs — их может быть несколько. Они используются /run и другими процессами Linux в качестве временных файловых систем для запуска операционной системы. Например, tmpfs /run/lock используется для создания файлов блокировки. Это файлы, которые не позволяют нескольким пользователям изменять один и тот же файл одновременно.
Отобразить определенную файловую систему
Команду df можно использовать для отображения определенной файловой системы:
df –h /dev/sda2
Вы также можете использовать обратную косую черту:
df –h /
Это отображает использование вашего основного жесткого диска. Используйте точку монтирования (в столбце Mounted on), чтобы указать диск, который нужно проверить.
Примечание. Команда df предназначена только для полной файловой системы. Даже если вы укажете отдельный каталог, df будет читать пространство всего диска.
Отображение файловых систем по типу
Чтобы перечислить все файловые системы по типу, используйте команду:
df –ht ext4
Здесь перечислены диски с типом ext4 в удобочитаемом формате.
Отображение размера в 1000 вместо 1024
Вы можете отображать использование диска в единицах 1000 вместо 1024:
df –H
Это может устранить путаницу в технологии хранения. Производители жестких дисков продают жесткие диски размером 1000 байт = 1 килобайт.
Однако операционные системы делят это пространство так, что 1024 байта = 1 килобайт. Из-за этого на 1000-гигабайтном жестком диске остается примерно 930 гигабайт полезной памяти.
Проверить дисковое пространство Linux с помощью команды du
Команда du отображает использование диска. Этот инструмент может отображать использование диска для отдельных каталогов в Linux, давая вам более детальное представление об использовании вашего диска. Используйте его для отображения количества места, используемого вашим текущим каталогом:
Подобно команде df , вы можете сделать du удобочитаемым:
du –h
Он отображает список содержимого текущего каталога и сколько места они используют. Вы можете упростить отображение с помощью опции –s :
du –hs
Это показывает, сколько места занимает текущий каталог.
Чтобы указать каталог или файл, установите флажок, используя следующие параметры:
du –hs /etc/kernel-img.conf
du –hs /etc
При использовании второй команды вы могли заметить сообщение об ошибке «Отказано в разрешении». Это означает, что текущий пользователь не имеет прав доступа к определенным каталогам. Используйте команду sudo для повышения ваших привилегий:
sudo du –hs /etc
Примечание. Если вы работаете с CentOS Linux, вам может потребоваться использовать команду su , чтобы переключиться на пользователя root для доступа к защищенным каталогам.
Итоги
Теперь вы должны понимать, как использовать команды df и du для проверки дискового пространства в вашей системе Linux. Помните, что для отображения полного списка параметров используйте df ––help или du ––help .