Важные аспекты: разреженных файлов в Windows, Linux и MacOS, файловых систем NTFS, REFS, Ext3, Ext4, BTRFS и APFS

Узнайте все секреты разреженных файлов и их роли на платформах Windows, Linux и MacOS! В этой статье мы разберем каждую деталь, чтобы вы поняли, как эти файлы влияют на хранение данных.

Важные аспекты: разреженных файлов в Windows, Linux и MacOS, файловых систем NTFS, REFS, Ext3, Ext4, BTRFS и APFS

Разреженные – это специальные файлы, которые с большей эффективностью используют файловую систему, они не позволяют ФС занимать свободное дисковое пространство носителя, когда разделы не заполнены. То есть, «пустое место» будет задействовано только при необходимости. Пустая информация в виде нулей, будет хранится в блоке метаданных ФС. Поэтому, разреженные файлы изначально занимают меньший объем носителя, чем их реальный объем.

Физический размер занимает меньше дискового пространства

Этот тип поддерживает большинство файловый систем: BTRFS, NILFS, ZFS, NTFS, ext2, ext3, ext4, XFS, JFS, ReiserFS, Reiser4, UFS, Rock Ridge, UDF, ReFS, APFS, F2FS.

Все эти ФС полностью поддерживают такой тип, но в тоже время не предоставляют прямой доступ к их функциям по средством своего стандартного интерфейса. Управлять их свойствами можно только через команды командной строки.

Разница между сжатием и разреженными файлами

Все файловые системы, которые я назвал выше, также поддерживают стандартную функцию сжатия. Оба этих инструмента дают преимущество в виде экономии места на диске, но достигают этой цели по-разному. Основным недостатком использования сжатия является то, что это может снизить производительность системы при выполнении операции чтения\ записи. Так как будут использоваться дополнительные ресурсы для распаковки или сжатия данных. Но некоторые программные продукты не поддерживают сжатие.

Перейти к просмотру
Разреженные файлы в Windows, Linux и MacOS, файловых систем NTFS, REFS, Ext3, Ext4, BTRFS и APFS 🐧🍏

Разреженные файлы в Windows, Linux и MacOS, файловых систем NTFS, REFS, Ext3, Ext4, BTRFS и APFS 🐧🍏

Преимущества и недостатки

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

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

Еще один из недостатков — это то, что нельзя скопировать или создать такой файл, если его номинальный размер превышает доступный объем свободного пространства (или ограничения размера квоты, налагаемые на учетные записи пользователей). Например, если исходный размер (со всеми нулевыми байтами) составляет 500 МБ, а для учетной записи пользователя, используемой для его создания, существует предел квоты в 400 МБ. Это приведет к ошибке даже если фактическое дисковое пространство, занимаемое им, составляет всего 50 МБ на диске.

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

Преимущества Недостатки
Эффективное использование дискового пространства, так как файлы занимают только фактически используемые блоки Возможная потеря данных, если диск заполнится, так как файл может быть записан частично
Увеличение скорости создания больших файлов Не все файловые системы поддерживают разреженные файлы
Экономия места при работе с резервными копиями и большими файлами Использование разреженных файлов может привести к фрагментации данных на диске
Возможность быстрого создания и выделения большого объема дискового пространства Мониторинг реального использования дискового пространства может быть более сложным
Поддержка многими операционными системами и виртуализационными платформами Необходимость более тщательного управления дисковым пространством для предотвращения проблем

Создаем разреженный файл в Windows

Для этого в ОС Windows будем использовать командную строку. В поиске пишем cmd и запускаем ее от имени администратора.

В Windows для управления такими данными используют программу fsutil (утилита файловой системы). При выполнении create, по умолчанию файл создается самый обычный. Переходим в папку где нужно его создать и вводим:

fsutil file createnew sparse-file 1000000000

Где sparse-file – имя, а в конце указан его размер в байтах.

Создание

Чтобы присвоить файлу значение «разреженный» вводим:

fsutil sparse setflag sparse-file

Присваиваем атрибут

Для удаления этого флага выполняется следующая команда:

fsutil sparse setflag sparse-file 0

Удаляем атрибут

И чтобы снова присвоить атрибут:

fsutil sparse setflag sparse-file

Проверяем:

fsutil sparse queryflag sparse-file

Проверка атрибутов и свойств

Сам по себе атрибут ещё не приводит к экономии дискового пространства. Для этого нужно разметить пустую область, которая будет освобождена внутри.

Для пометки пустой области введите:

fsutil sparse setrange sparse-file 0 1000000000

Выделяем свободную область дискового пространства

В конце указывается смещение и длина, они задаются в байтах. В моем случае от нуля до 1Гб.

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

Для того чтобы убедиться, что файлу присвоен данный атрибут выполним layout

fsutil file layout sparse-file

Проверяем атрибуты

Такой Атрибут можно задать любому файлу. Просто выполнив эту команду с его именем и задать нужный вам размер.

В свойствах созданного ранее файла можно увидеть, что при размере в 1Гб. файл занимает на диске 0 байт.

Данный набор команд подходит для всех файловых систем Windows, которые поддерживают данный тип данных (NTFS, ReFS и т.д.).

Как создать разреженный файл в Linux

В Linux процесс создания таких типов данных немного проще, поскольку существует несколько команд для их создания. Этот набор подойдет для всех файловых систем Linux.

Здесь можно использовать команду dd, либо truncate.

Первая команда имеет следующий вид:

dd if=/dev/zero of=file-sparse bs=1 count=0 seek=2G

Где file-sparse – имя, и в конце указан его размер, можно задать в байтах, мегабайтах и т.д.

Создание через терминал Linux

Вторая команда проще, она имеет такой вид:

truncate -s2G file-sparse

Где значение s – указывает размер, после которого идет имя.

Второй способ создания через терминал Linux

По сравнению с Windows, в Linux при создании такого файла одной из команд, он будет «разреженным» по умолчанию.

Для преобразования обычного в разреженный, есть отдельная команда:

cp --sparse=always ./025.jpg ./0251.jpg

Где 025.jpg – первое имя обычного.

0251.jpg – и второе имя разреженного.

Преобразование существующего файла в выбранный тип

Как увеличить

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

dd if=/dev/zero of=025.jpg bs=1 count=0 seek=2G

Это увеличит его размер до 2 Гб.

Увеличение

Для проверки размера выполним такую команду:

du -h --apparent-size 025.jpg

Проверка атрибутов

Разреженные файлы в ApFS

По сути, данный набор команд подходит и для файловой системы apple – ApFS, так как Linux и MacOS используют в своей основе архитектуру ядра Unix, они обе предоставляют доступ к Unix-командам и оболочке Bash.

Запустите терминал и выполните любую из команд, которую я использовал в Linux.

В MacOS Catalina работает только первая команда, и размер нужно указывать в байтах, иначе в результате команда выведет ошибку.

sudo dd if=/dev/zero of=sparse_APFS bs=1 count=0 seek=1000000000

Создание на MacOS Catalina

Файловая система ApFS при соблюдении определенных условий создает разреженные файлы по умолчанию, поэтому для увеличения любого файла можно использовать команду:

dd if=/dev/zero of=187.jpg bs=1 count=0 seek=500000000

Зададим размер, к примеру, 500Мб, в MacOS размер нужно указывать в байтах.

В свойствах можно увидеть, что его размер увеличился до 500 Mb.

Восстановление таких типов данных

Если вы случайно удалили или отформатировали диск с важными данными, и они оказались разреженными? То, для их восстановления воспользуйтесь программой Hetman Partition или RAID Recovery. Наша программа поддерживает данный тип файлов во всех представленных в этом видео операционных и файловых системах. Скачайте установите и запустите программу, просканируйте носитель.

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

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

Просмотр в HEX-редакторе

Программа нашла ранее удаленные данные на диске с файловой системой NTFS, REFS, BtrFS, Ext3, Ext4 и ApFS. Осталось лишь нажать кнопку Восстановить.

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

Заключение

Перед использованием этого функционала в любых ОС вам крайне важно узнать все их преимущества и недостатки. Знание этих особенностей гарантировано позволит вам избежать потенциальных проблем в будущем.

Dmytriy Zhura

Автор: , Технический писатель

Дмитрий Жура – автор и один из IT-инженеров компании Hetman Software. Имеет почти 10 летний опыт работы в IT-сфере: администрирование и настройка серверов, установка операционных систем и различного программного обеспечения, настройка сети, информационная безопасность, внедрения и консультация по использованию специализированного ПО. Является экспертом в области восстановления данных, файловых систем, устройств хранения данных и RAID массивов.

Andrey Mareev

Редактор: , Технический писатель

В далеком 2005 году, я получил диплом по специальности «Прикладная математика» в Восточноукраинском национальном университете. А уже в 2006 году, я создал свой первый проект по восстановлению данных. С 2012 года, начал работать в компании «Hetman Software», отвечая за раскрутку сайта, продвижение программного обеспечения компании, и как специалист по работе с клиентами.

Рекомендуем для вас

Вас приветствует ассистент Hetman Software, созданный на основе искусственного интеллекта.
Начать Чат