Что такое ntfs сжатие

Обновлено: 02.07.2024

Тома файловой системы NTFS поддерживают сжатие файлов отдельно для отдельных файлов. Алгоритм сжатия файлов, используемый файловой системой NTFS, Lempel-Ziv сжатия. Это алгоритм сжатия без потерь , который означает, что при сжатии и распаковке файла данные не теряются, в отличие от таких алгоритмов СЖАТИЯ, как JPEG, при каждом потере данных при каждом сжатии и распаковке данных.

Сжатие данных сокращает размер файла за счет минимизации избыточных данных. В текстовом файле избыточные данные могут часто возникать в таких символах, как символ пробела или обычные гласные, например буквы e и a; Она также может часто возникать в символьных строках. Сжатие данных создает сжатую версию файла путем минимизации избыточных данных.

Каждый тип алгоритма сжатия данных уменьшает избыточные данные уникальным образом. Например, алгоритм шифрования Хаффмана назначает код символам в файле в зависимости от того, как часто встречаются эти символы. Другой алгоритм сжатия, называемый кодированием длины выполнения, формирует значение из двух частей для повторяющихся символов: первая часть указывает количество повторов символа, а вторая часть определяет символ. Другой алгоритм сжатия, известный как Алгоритм Лемпеля-Зив, преобразует строки переменной длины в коды фиксированной длины, которые потребляют меньше пространства, чем исходные строки.

Сжатие файлов файловой системы NTFS

В файловой системе NTFS сжатие выполняется прозрачно. Это означает, что его можно использовать без внесения изменений в существующие приложения. Сжатые байты файла недоступны для приложений; они видят только несжатые данные. Таким образом, приложения, которые открывают сжатый файл, могут обрабатываться так, как будто они не были сжаты. Однако эти файлы не могут быть скопированы в другую файловую систему.

При сжатии файла, размер которого превышает 30 гигабайт, сжатие может не выполняться.

В следующих разделах определяется сжатие файлов файловой системы NTFS.

Библиотеки сжатия и распаковки файлов

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

Как правило, приложение вызывает функции в Lz32.dll для распаковки данных, сжатых с помощью Compress.exe. Функции также могут обрабатывать файлы без попытки их распаковки.

Функции в Lz32.dll можно использовать для распаковки одного или нескольких файлов. Их также можно использовать для распаковки сжатых файлов в части за раз.

В следующих разделах определяется распаковка файлов, предоставляемых функциями в Lz32.dll:

В этой статье пойдет речь о разреженных файлах. Расскажем об их недостатках и достоинствах, какие файловые системы поддерживают такие файлы. А также, как создавать или преобразовать их из обычных. Статья для новичков.

image



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

image

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

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

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

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

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

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

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

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

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

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

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

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

fsutil file createnew sparse-file 1000000000

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

image

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

fsutil sparse setflag sparse-file

image

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

fsutil sparse setflag sparse-file 0

image

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

fsutil sparse setflag sparse-file

fsutil sparse queryflag sparse-file

image

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

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

fsutil sparse setrange sparse-file 0 1000000000

image

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

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

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

fsutil file layout sparse-file

image

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

В свойствах созданного ранее файла можно увидеть, что при размере в 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 – имя, и в конце указан его размер, можно задать в байтах, мегабайтах и т.д.

image

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

truncate -s2G file-sparse

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

image

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

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

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

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

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

image

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

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

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

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

image

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

du -h --apparent-size 025.jpg

image

Разреженные файлы в 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

image

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

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

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

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

Заключение

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

Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике. А также зайдите на наш Youtube канал, там собраны более 400 обучающих видео.

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

Существуют и другие способы, однако для их использования требуется, чтобы данные были заархивированы в RAR или ZIP.

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

Таким образом, сжатие файлов не приведет к увеличению времени чтения документов, оно может ускорить процесс. Это связано с тем, что файлы сначала передаются в ОЗУ, а только потом распаковываются. Файл небольших размеров будет перенесен существенно быстрее, чем крупный.

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

Помните, хоть использование сжатия NTFS и способно увеличить скорость работы, не стоит компрессировать системные файлы. Это может сказаться на функционировании операционной системы и снизит ее производительность.

Как сжать файлы при помощи NTFS

Устройство, которое нуждается в компрессии, прежде всего должно иметь файловую систему NTFS. Внешние накопители обычно работают с системой FAT32 или exFAT. Таким образом, если вы хотите задействовать описанный ниже способ для них, флешки придется отформатировать для использования NTFS.

Воспользуйтесь следующей инструкцией, чтобы включить сжатие NTFS в Windows:

1. Откройте Мой компьютер .

2. Щелкните правой кнопкой мыши по нужному диску и перейдите в его Свойства .

3. Установите галочку на пункт Сжать этот диск для экономии места и нажмите Применить .

4. Следующим окном появится запрос Подтверждения изменения атрибутов . Установите галочку на второй пункт и нажмите ОК .

5. Чтобы отменить сжатие, снимите галочку со Сжать этот диск для экономии места и выполните аналогичные шаги.

Как сжать содержимое папки для экономии места

Иногда нет нужды компрессировать целый диск и нужно сжать лишь одну рабочую папку, которая отнимает места существенно больше, чем того хотелось бы. Для того, чтобы решить этот вопрос, воспользуйтесь приведенной ниже несложной инструкцией:

1. Откройте Свойства папки.

2. Кликните по клавише Другие .

3. Поставьте галочку на Сжимать содержимое для экономии места на диске .

4. Нажмите ОК и Применить в окне Свойств .

5. Чтобы отменить сжатие NTFS, выполните аналогичные действия и снимите галочку с функции сжатия.

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

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

Возможность восстановления сжатых файлов

Потеря данных с жесткого диска уже далеко не редкость для большинства пользователей. Они могут пропасть по причине сбоя HDD, вирусной атаки повреждения логических разделов диска и т.д. Какой бы ни была причина, исход часто один — потеря файлов.

Однако как быть в случае, когда пропала сжатая NTFS информация?

В этом вопросе и кроется главная сложность. Можно легко вернуть любой обычный файл, в то время как восстановить компрессированный может оказаться существенно сложнее. Причиной тому является ограниченный низкоуровневый доступ к документам, из-за чего нет возможности провести прямое сканирование устройства. Следовательно, при восстановлении сжатых файлов используется Windows API , открывающий специализированным программам доступ к удаленным файлам.

Однако и в случае с Windows API есть подводные камни — приложение работает далеко не в каждом случае, а восстановить сжатый файл редко представляется возможным.

Если на вашем жестком диске хранится крайне ценная для вас информация, которую во что бы то ни стало необходимо восстановить, воспользуйтесь инструментом Starus Partition Recovery , — мульти-функциональным приложением, способным восстановить утерянные документы в любой файловой системе. Ее упрощенными аналогами являются Starus NTFS Recovery и Starus FAT Recovery, работающие только с определенными файловыми системами.

Сжатие файлов NTFS – встроенная функция этой файловой системы. Вы можете сжимать данные на всем томе в отдельной папке или в конкретном файле. Чтобы включить сжатие, откройте диалоговое окно Properties (Свойства) для тома, папки или файла и используйте следующим образом вкладку General (Общие).

  • Для тома выберите вариант Compress Drive To Save Disk Space (Сжимать диск для экономии места на диске). Появится вопрос, хотите ли вы применять сжатие только к корню или ко всем папкам.
  • Для папки щелкните на кнопке Advanced (Дополнительно) и затем выберите опцию Compress Contents To Save Disk Space (Сжимать содержимое для экономии места на диске). Появится вопрос, хотите ли вы применять сжатие к под-папкам.
  • Для файла щелкните на кнопке Advanced и затем выберите опцию Compress Contents To Save Disk Space .

Если вы смотрите свойства какого-либо сжатого объекта в окне My Computer или Windows Explorer, то видите оба размера (рис. 6.1).


Рис. 6.1. Размер файла на диске (Size on disk) показывает, что выполнено сжатие

В схеме сжатия NTFS используются как виртуальные номера кластеров ( VCN ), так и логические номера кластеров ( LCN ). Для файла, у которого есть данные, хранящиеся в нерезидентных атрибутах или экстентах, атрибут данных содержит отображения для начального VCN и начального LCN в экстенте, а также количество кластеров. NTFS работает с этими номерами кластеров для получения сжатия, используя один из двух способов: разреженное хранение ( sparse storage ) или секционированные данные (divided data ).

Разреженное хранение – это способ экономии дискового пространства, когда нуль-блоки данных не сохраняются на диске. Иногда в больших файлах имеются большие нуль-блоки (байты со значением 0). В NTFS такие файлы называются разреженными файлами, в которых хранятся только ненулевые данные. Например, у вас может быть 100-кластерный файл , содержащий реальные данные только в первых 5 и последних 5 кластерах (90 кластеров содержат только нули). NTFS может хранить для этого файла два экстента, каждый из которых содержит 5 кластеров. Первый кластер будет иметь номера VCN от 0 до 4, и второй кластер будет иметь номера VCN от 95 до 99. NTFS подразумевает, что VCN с номерами 5-94 содержат нуль-блоки и для них не требуется физического пространства на диске. Если какой-либо программе требуются данные из этой части, NTFS просто заполняет буфер запрашивающей программы нуль-блоками. Когда (или если) это приложение размещает в этом пространстве реальные (ненулевые) данные, NTFS создает новый экстент с соответствующими номерами VCN .

Если файл содержит мало нуль-данных, то NTFS не пытается записать данные файла внутри одного экстента; вместо этого NTFS разбивает данные на экстенты по 16 кластеров каждый. В любом конкретном экстенте, где сжатие данных экономит хотя бы один кластер , NTFS сохраняет данные в сжатом виде, что дает 15 или меньше кластеров. Если данные нельзя сжать в достаточной степени (например, случайные данные в общем случае сжать невозможно), то NTFS просто сохраняет весь экстент без какого-либо сжатия. Из записи MFT для сжатого файла NTFS определяет, что в экстенте имеются пропущенные номера VCN , а это означает, что файл сжат.

Если данные хранятся в сжатой форме, то какой-либо конкретный байт нельзя определить путем расчета номера кластера, в котором он находится. Вместо этого NTFS рассчитывает, в каком 16-кластерном экстенте находится соответствующий адрес , выполняет распаковку этого экстента в виде 16 несжатых кластеров и затем рассчитывает смещение в файле с помощью допустимых виртуальных номеров кластеров ( VCN ). Чтобы реально использовать эту схему адресации, NTFS делает так, чтобы все эти экстенты начинались с виртуального номера кластера, который делится на 16.

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

Примечание. NTFS сжимает только атрибут, соответствующий данным файла, но не метаданные.

Модернизация в файловую систему NTFS

Если вы устанавливаете Windows Server 2003 поверх существующего тома NTFS Windows NT 4, этот том автоматически модернизируется в новую файловую систему NTFS . Эта модернизация является обязательной, и вы не можете управлять этим процессом. Модернизация файловой системы не является процессом, который порождается программой установки Windows Server 2003; он запускается драйвером NTFS по завершении установки. Все локально подключенные тома NTFS модернизируются к новой версии файловой системы NTFS , включая съемные носители. Тома NTFS Windows NT 4, которые удалены или отключены во время установки, модернизируются автоматически при следующем монтировании соответствующих дисков. Любые тома NTFS Windows NT 4, которые не были модернизированы, не будут монтироваться в Windows Server 2003.

Внимание. Если вам нужна двойственная загрузка между Windows NT 4 и Windows Server 2003, то система NT 4 должна быть установлена с Service Pack версии 4 или последующих версий и работать с NTFS. Новые средства, поддерживаемые NTFS, изменяют структуру данных на дисках, и файл ntfs.sys в SP4 (и последующих версиях) позволяет работать с этими изменениями.

По умолчанию выбран вариант Yes.

Вы можете также выполнить преобразование из FAT / FAT32 после установки Windows Server 2003. См. ниже раздел "Преобразование в NTFS ".

Выбор нужной файловой системы

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

Несколько лет назад в моих публикациях по Windows NT я обычно рекомендовал читателям форматировать системный раздел с помощью FAT. Если система не загружалась, и причиной этого был поврежденный или отсутствующий системный файл, вы могли бы легко заменить этот файл, загрузившись в DOS и скопировав этот файл.

Но теперь я считаю, что все компьютеры Windows Server 2003, а также компьютеры с Windows XP и Windows 2000 должны быть обязательно отформатированы с помощью NTFS. Я изменил свое мнение по двум следующим причинам.

  • Размер устанавливаемой ОС столь велик, что тома FAT/FAT32 с их неэкономным использованием пространства стали просто неэффективны.
  • Консоль восстановления (Recovery Console) – совместимое с NTFS приложение, запускаемое из командной строки, которое появилось в Windows Server 2000, обеспечивает доступ к поврежденному системному разделу.
  • Существуют ситуации, когда вам может потребоваться выбор файловой системы FAT или FAT32, и в большинстве случаев (если не во всех) это решение относится к рабочим станциям, на которых вы устанавливаете Windows XP Professional (или Windows 2000 Professional):
  • Если выбрать FAT, то доступ к этому компьютеру и его файлам можно выполнять из любой операционной системы: MS-DOS, любая версия Windows, Windows NT, Windows 2000 и OS/2.
  • Если выбрать FAT32, то доступ к этому компьютеру и его файлам можно выполнять через Windows 95 OSR2, Windows 98 и Windows 2000.

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

Во-первых, запомните, что в отличие от Windows NT система Windows Server 2003 (и Windows 2000) должна быть установлена в ее собственном разделе; у вас уже нет варианта выбора, позволявшего выбрать для установки новую папку в разделе, который уже содержит другую операционную систему. Это означает, что если на вашем диске нет двух томов, то вы должны сначала разбить его на разделы и отформатировать его, а после этого устанавливать операционные системы.

Если вы используете двойственную загрузку между Windows NT 4 и Windows Server 2003 (или Windows 2000) и хотите использовать файловую систему NTFS, то Microsoft рекомендует модернизировать Windows NT 4 к SP4 (или последующей версии). Однако я встречался с ситуациями, когда это не решало потенциальные проблемы доступа к файлам. Оказывалось, что лучше было использовать двойственную загрузку между этими операционными системами с разделами FAT Конечно, это не совсем так, так как на самом деле я прекратил использование двойственной загрузки между Windows NT и последующими версиями Windows, когда перешел к Windows 2000 и перевел свой домен в систему Windows 2000.

Преобразование в NTFS

Если у вас есть том, отформатированный с помощью FAT/FAT32, то вы можете преобразовать его в NTFS без необходимости резервного копирования файлов, переформатирования диска и запуска всех компонентов с самого начала для NTFS. В Windows включена утилита командной строки convert.exe , которая преобразует файловую систему. Convert.exe имеет следующий основной синтаксис :

Параметр /fs:ntfs является обязательным, хотя не существует других вариантов преобразования – convert.exe выполняет преобразование только NTFS. Convert.exe не работает в противоположном направлении – вы не можете преобразовать диск NTFS в FAT/FAT32.

Для выполнения своих задач convert.exe должна блокировать доступ к диску, поэтому вы не можете преобразовать текущий том (том, на котором вы находитесь при запуске этой команды) сразу, поскольку он используется на этот момент. Convert не может также блокировать системный том, поскольку он всегда находится в использовании. (Во многих случаях системный том – это также текущий том.) В этом случае процесс преобразования запускается при следующей загрузке. Имейте в виду, что эта следующая перезагрузка будет намного дольше, чем обычно, поскольку преобразование не является быстрым процессом.

Читайте также: