Вы используете устаревший браузер!

Страница может отображаться некорректно.

СпецНаз (специальные названия)

СпецНаз (специальные названия)

Другие выпуски этой рубрики (34)
  • добавить в избранное
    Добавить в закладки

В дебрях жесткого диска

Прочитали: 1912 Комментариев: 50 Рейтинг: 61

Думаю, и через 50 лет в продаже для ПК не будет винчестеров, способных справиться с такими бомбами. :)

Комментарий к выпуску

Обсуждение почтовых бомб (речь о выпусках Против бомб есть Dr.Web и Это бомба!) навеяло интересную тему. Все мы знаем, что файл – это по сути некие данные, блоками записанные на жесткий диск (флешку, дискету – не суть). Но знаете ли вы о том, что, если посчитать размер места, занятого на диске файлами, то он легко может оказаться меньше суммированного размера всех файлов с диска? Или о том, что вы легко (в Linux точно) можете создать файл большего размера, чем ваш диск (и без новомодных облаков)?

Знакомьтесь: разреженные файлы (sparse files). Это как раз один из примеров файлов, которые на диске занимают меньше места, чем весят. Идея состоит в том, чтобы не записывать на диск части файла, занятого нулями или пока не использованного. В Windows такие файлы впервые появились в ОС Windows 2000.

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

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

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

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

Создадим с помощью утилиты пустой файл большого размера:

fsutil file createnew test.nul 10000000000

Присвоим файлу атрибут «sparse»:

fsutil sparse setflag test.nul

Сам по себе атрибут ещё не приводит к экономии дискового пространства. Нужно ещё разметить внутри файла область, которая будет освобождена. У нас весь файл пустой, так что область можно задать в размер файла.

fsutil sparse setrange test.nul 0 10000000000

Готово.

Источник

Откроем файл в программе NTFS Stream Explorer, чтобы посмотреть его внутреннее представление в виде потоков. В списке потоков отобразится один безымянный поток, имеющий тип «Блок разреженного файла», размером 8 байт.

#drweb

Источник

Материал по последней ссылке рекомендуем прочитать целиком.

Справочник по команде можно найти тут.

А вот пример из другой ОС:

Создаем файлик на 10 ТБ (терабайт)

truncate -s 10T /db1/oradata/dump.sql

если файловая система нормальная и поддерживает sparse files, то можно создать файлик и на 100 ТБ, независимо от того, сколько на самом деле у вас диск. Файлик создается меньше чем за секунду.

Источник

#бомба

Dr.Web рекомендует

Для интереса можете заархивировать файл из последнего примера и посмотреть размер архива. А вот откуда в реальных исполняемых файлах берутся нули, мы обязательно обсудим в одном из новых выпусков.

Получайте Dr.Web-ки за участие в проекте

Каждая активность = 1 Dr.Web-ка

Оцените выпуск

Сделайте репост

Поставьте «Нравится»

Чтобы получать награды надо войти на страницу выпуска через аккаунт на сайте «Доктор Веб» (или создать аккаунт). Аккаунт должен быть связан с вашим аккаунтом в социальной сети. Видео о связывании аккаунта.


Нам важно ваше мнение

10 Dr.Web-ок за комментарий в день выхода выпуска или 1 Dr.Web-ка в любой другой день. Комментарии публикуются автоматически и постмодерируются. Правила комментирования новостей «Доктор Веб».

Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.

Комментарии пользователей