Привет всем! Прохожу курс “от 0 до Linux админа” здесь: yodo.im/courses/linux/?v=1d20b5ff1ee9 и столкнулся с проблемой, связанной с созданием разреженного файла с использованием fallocate.
Выполнил команду для создания файла на верстаке ext4:
# fallocate -l 10G file.img
Файл создается быстро, но у меня затруднение с точным определением, разреженный он или нет. Когда я использую команду ls -ls, она, кажется, сообщает правильный размер файла, но с опцией -h (человеческий формат) размер отображается иначе. Почему результат отличается?
Кроме того, когда использую du, результаты тоже разные:
# du -m file.img
# du -m --apparent-size file.img
Введение статуса файла через команду stat показывает ненулевое количество блоков, что сбивает меня с толку.
Подскажите, какие шаги я упускаю? Есть ли изменения в инструменте или документации, которые могли бы внести этот дисбаланс? Заранее спасибо!
Когда вы используете команду fallocate -l 10G file.img, вы действительно создаете разреженный файл, но этот файл занимает физическое пространство на диске не так, как обычный файл.
Почему размеры разные?
Команда ls -ls: Эта команда показывает размер файла в байтах, то есть фактический размер на диске. Если файл разреженный, то он может иметь большой логический размер, но на самом деле занимать очень мало места.
Команда ls -lh: При использовании опции -h для удобства чтения, ls по-прежнему показывает фактический размер файла, но может не учитывать, что он разреженный.
Команды du:
du -m file.img показывает, сколько места файл занимает на диске, исходя из фактического использования.
du -m --apparent-size file.img показывает логический размер, который был указан при создании файла. В вашем случае это 10G, но на диске может быть занято намного меньше места.
Команда stat
Когда вы используете команду stat, она показывает, сколько блоков на диске занимает файл (это и есть те встроенные “блоки” файловой системы). Если у вас файл размером 10G, но фактически он занимает только 1-2 блока, это и есть проявление его разреженности.
Что можно сделать?
Для проверки разреженности файла, вы можете использовать команду filefrag:
filefrag -v file.img
Это покажет, какие блоки физически занимают пространство на диске. Если вы видите, что используется меньше блоков, чем должно быть, ваш файл разреженный.
Если у вас еще есть вопросы или что-то непонятно, не стесняйтесь спрашивать! . Я ответил на ваш вопрос?
Ну, слушай, решил я тут поэкспериментировать с созданием разреженного файла через fallocate. Вроде бы всё просто: делаю fallocate -l 1G my_sparse_file, и всё, файл готов. Но вот тут-то и начались трудности!
Я полез смотреть, действительно ли он разреженный, и с помощью команды ls -lh my_sparse_file увидел, что размер-то большой, но сам по себе файл занимает немного места на диске. Тогда я решил покопаться глубже, запустил du -h my_sparse_file — и тут меня прям накрыло! Эта команда показала, что файл занимает целых 1G на диске! Эх, думал, надо ж не так.
Понял, что надо больше разбираться с этой темой. Заглянул в сеть и нашёл пару курсов, которые реально помогают понять, как работают разреженные файлы и с чем вообще их едят. Попал на сайт yodo.im/#courses — там куча полезной инфы и материалов. Думал, что буду ковыряться сам, но, похоже, нужно всё-таки подтянуть знания, чтобы не терять время на всякие ошибки.
Короче, если ты тоже решишься на это, будь готов к сюрпризам и зацени курсы — не пожалеешь!
Круто, что ты решил поэкспериментировать с разреженными файлами с помощью fallocate! Это действительно интересная тема. Да, команда fallocate -l 1G my_sparse_file создает файл заданного размера, но важно понимать, как работают разреженные файлы и сколько места они занимают.
Как ты заметил, команда ls -lh my_sparse_file показывает, что файл “большой”, и это может сбивать с толку. Однако, команда du -h my_sparse_file действительно отображает, сколько места файл занимает на диске, и если она показывает 1G, это значит, что файл не разреженный, или же в нем уже есть записанные данные.
В общем, разреженные файлы могут занимать меньше места на диске, если они не содержат данных в определенных блоках. Но иногда их создание и использование требует немного больше знаний. Здорово, что ты нашел ресурсы и курсы на сайте yodo.im. Это действительно может помочь прояснить все нюансы.
Если решишь углубиться в эту тему, уверен, что ты сможешь избежать ошибок и лучше понять, как с ними работать. Удачи! Если будут еще вопросы, не стесняйся спрашивать! . Я ответил на ваш вопрос?