Что на самом деле делает команда «fsutil file createnew»?

Что на самом деле делает команда «fsutil file createnew»?

В командной строке ОС Windows, когда мне нужно быстро создать файл произвольного размера, я использую команду:

fsutil file createnew <filename> <size_in_bytes>

Недавно я создал файл на 100 ГБ с помощью этого собственного инструмента, и я был удивлен, что создание файла заняло менее 500 мс. Я создал файл на жестком диске на основе пластин, который был ранее заполнен данными.

Из любопытства я открыл файл в шестнадцатеричном редакторе, и он оказался совершенно пустым (правда, я не проверял вручную все 100 ГБ). Я ожидал, что он будет заполнен предыдущим содержимым жесткого диска, учитывая, что он не мог просто записать 100 ГБ данных за 500 мс.

Что он fsutil file createnewна самом деле делает? И, в зависимости от того, что он на самом деле делает, можно ли его использовать как метод быстрого стирания с низким уровнем безопасности (однопроходный)?

решение1

Я ожидал, что он будет заполнен предыдущим содержимым жесткого диска,

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

Что на самом деле делает fsutil file createnew?

Есть как минимум два варианта, я подозреваю (но не проверял), что fsutil использует первый — он полагается на ОС для отслеживания «конца данных».

  • Файловая система может хранить два отдельных указателя – «конец файла» и «конец допустимых данных». Это явно то, как NTFS работает в Windows.

    Вы можете позвонитьУстановитьКонецФайла()(соответствует Linuxftruncate()) для создания большого файла без данных, а пробел между «концом допустимых данных» и «концом файла» автоматически вернет все байты 0x00 при чтении.

    (Привилегированные учетные записи на самом деле могут использовать вызов SetFileValidData(), чтобы заставить ОС вернуть данные, которые уже находятся на диске, но эта операция используется нечасто.)

  • Если файловая система основана на экстентах, то она отслеживает не отдельные кластеры диска, а целые непрерывные диапазоны «начало-конец», которые составляют файл. Это позволяет создаватьразреженные файлы, в котором некоторые экстенты просто помечены как не имеющие вообще никакого физического выделения (т. е. являются «дырами») — эти местоположения будут возвращать 0x00 при чтении (разумеется, пока туда не будет записано что-то еще).

    В общем, простоИщуза пределами конца файла и продолжение записи автоматически приведет к созданию разреженного файла, если это возможно.

fsutil имеет подкоманды для проверки как указателя «допустимых данных», так и списка экстентов файла.

Существуют файловые системы, которые не поддерживают эти методы (например, FAT), в этом случае ОСволянеобходимо явно обнулить соответствующую область диска.

И, в зависимости от того, что он фактически делает, можно ли его использовать в качестве метода быстрого стирания с низким уровнем безопасности (за один проход)?

Нет, не на механических дисках.

Связанный контент