Что на самом деле делает mkfile?

Вопрос или проблема

Это не вопрос, касающийся исключительно Unix и Linux, но больше о MacOS и использовании команды bash, mkfile. MacOS соответствует стандарту POSIX, поэтому я принимаю изменения…

У меня есть Mac Mini с внутренним SSD объемом 250 ГБ. Согласно Finder и diskutil, у меня осталось 58,9 ГБ свободного пространства, плюс 38 ГБ очищаемого пространства.

Я пытаюсь освободить очищаемое пространство и нашел статью, в которой говорится, что я мог бы использовать команду mkfile, чтобы заставить ОС освободить очищаемое пространство.

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

mkfile -n 250g /Volumes/Macintosh\ HD/Users/ME/BIGFILE

Я не получил никаких ошибок

Когда я выполняю ls -al | grep BIGFILE, я вижу:

 -rw-------    1 ME staff 250G Jan  8 14:55 BIGFILE

и когда я выполняю sudo du -sh на папке, содержащей BIGFILE, я вижу:

58G /Volumes/Macintosh HD/Users/ME/

Мой вопрос: что на самом деле делает mkfile и почему ОС позволяет mkfile резервировать файл, который больше, чем фактический объем?

В разделе man об этом не упоминается, но он создает разреженный файл:

mkfile -n 50g sparse
find temp.txt -type f -sparse
find sparse -type f -sparse
sparse

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

P.S.: Почему дизайнеры ОС приняли такое решение (позволив резервировать больше пространства, чем размер объема), я не могу ответить.

Ответ или решение

Команда mkfile в macOS, как и в других POSIX-совместимых операционных системах, используется для создания файлов определенного размера. Однако, особенностью в данном контексте является создание так называемого "разреженного файла" или sparse file, что и является ключевым моментом при решении вопроса о том, что делает mkfile.

Когда вы используете команду mkfile -n, это приводит к созданию разреженного файла. Это файл, который может заявить больше дискового пространства, чем фактически занимает на физическом носителе. То есть, происходит запись лишь метаданных, а не всего содержания файла. Это позволяет системе указать на файл большого размера, но фактически записанные данные остаются минимальными или отсутствуют. Поэтому, если вы наблюдаете, что место на диске не уменьшилось после создания такого файла, это связано с тем, что реально эти данные на диск не записаны.

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

Таким образом, mkfile в контексте работы с macOS позволяет создать такие разреженные файлы, что может временно и по учетной записи системы увеличить занятое пространство, но фактически этого не делать в плане физической записи на носитель. Разработчики операционных систем закладывают подобные функции для оптимального и гибкого использования файлового пространства.

Максимизируя оптимизацию поисковых систем (SEO), можно выделить основные ключевые слова: mkfile, разреженный файл, POSIX, macOS, управление дисковым пространством.

Оцените материал
Добавить комментарий

Капча загружается...