Как я могу узнать общий размер, занимаемый определенным типом файлов на моем жестком диске?

Это функция файловой системы cgroup , а не функция команды mkdir . Команда mkdir просто вызывает системный вызов mkdir . Системный вызов mkdir вызывает уровень VFS в ядре, который выполняет некоторый анализ команды и, в частности, определяет, в какой файловой системе должен быть создан каталог, анализируя иерархию монтирования. точки в дереве каталогов. Затем уровень VFS вызывает код драйвера для этой файловой системы, которым является драйвер файловой системы cgroup .

Что делает драйвер файловой системы для каждой операции файловой системы (открытие файла, чтение, запись, создание каталога, удаление каталога и т. Д.), Зависит от этого драйвера файловой системы. Файловая система для хранения на диске изменит содержимое диска, чтобы записать существование каталога в соответствии с указаниями. Сетевая файловая система отправит команду по сети. Файловая система proc сообщает информацию о процессах и ядре , а файловая система cgroup делает нечто подобное.

Поведение файловой системы cgroup описано в документации ядра .

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

Когда драйвер файловой системы cgroup получает команду mkdir на этом уровне иерархии, он интерпретирует это как «создать новую cgroup» с заданным именем. Когда он получает команду readdir (системный вызов, который перечисляет записи каталога) в / cgroup / cpu0 , он перечисляет контрольные группы на этом процессоре. Когда он получает команду readdir в / cgroup / cpu0 / group0 , он сообщает фиксированный набор файлов, которые отражают параметры этой cgroup, хранящиеся в памяти. Когда он получает команду чтения или записи для этих файлов, он сообщает или изменяет соответствующий параметр.

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

4
11.02.2019, 22:21
0 ответов

Теги

Похожие вопросы