В дебрях жесткого диска
18 сентября 2019
Думаю, и через 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 байт.
Материал по последней ссылке рекомендуем прочитать целиком.
Справочник по команде можно найти тут.
А вот пример из другой ОС:
Создаем файлик на 10 ТБ (терабайт)
truncate -s 10T /db1/oradata/dump.sql
если файловая система нормальная и поддерживает sparse files, то можно создать файлик и на 100 ТБ, независимо от того, сколько на самом деле у вас диск. Файлик создается меньше чем за секунду.
Антивирусная правДА! рекомендует
Для интереса можете заархивировать файл из последнего примера и посмотреть размер архива. А вот откуда в реальных исполняемых файлах берутся нули, мы обязательно обсудим в одном из новых выпусков.
Нам важно ваше мнение
Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.
Комментарии пользователей
Dmur
16:09:24 2019-09-29
Toma
21:05:16 2019-09-25
EvgenyZ
19:06:14 2019-09-25
admin_29
17:00:27 2019-09-19
vinnetou
10:39:53 2019-09-19
Александр Ш.
10:27:57 2019-09-19
Неуёмный Обыватель
09:06:23 2019-09-19
achemolganskiy
07:32:09 2019-09-19
Morpheus
05:41:15 2019-09-19
Serg07
21:27:27 2019-09-18
I23
21:23:14 2019-09-18
anatol
20:58:47 2019-09-18
Zserg
19:50:49 2019-09-18
Masha
19:30:27 2019-09-18
Татьяна
19:25:40 2019-09-18
Пaвeл
19:19:17 2019-09-18
L1t1um
17:58:42 2019-09-18
Roman
17:12:46 2019-09-18
Жаль, во времена Платона не было компухтеров...
DoctorW
17:07:17 2019-09-18
Tanya086
16:56:51 2019-09-18
Саня
16:54:42 2019-09-18
razgen
15:56:30 2019-09-18
Денисенко Павел Андреевич
14:40:56 2019-09-18
vinnetou
13:41:13 2019-09-18
Lex
13:25:05 2019-09-18
Oleg
13:00:19 2019-09-18
eaglebuk
12:15:39 2019-09-18
DrKV
11:47:52 2019-09-18
Вот этот выпуск туда бы... ))
Ну, а так - действительно интересно! Ждём продолжения.
Б...а
11:47:30 2019-09-18
С облаком все просто даже для "чайников", каковым и являюсь: переустановила систему/купила новый ПК, и через 1-2 часа получила доступ к своим папочкам. Восстановить данные с поврежденного жесткого диска, или после "черного экрана" способны только профессионалы - не все, не всегда, долго.
maestro431
11:39:29 2019-09-18
vkor
11:24:27 2019-09-18
robot
11:03:47 2019-09-18
Lia00
10:49:37 2019-09-18
orw_mikle
10:41:43 2019-09-18
Родриго
09:34:39 2019-09-18
Alexander
08:54:18 2019-09-18
Неуёмный Обыватель
08:47:46 2019-09-18
cruise
08:27:24 2019-09-18
Vlad X
08:19:17 2019-09-18
I46
08:17:14 2019-09-18
marisha-san
08:16:41 2019-09-18
Lenba
08:07:14 2019-09-18
ka_s
07:22:16 2019-09-18
Sasha50
07:01:41 2019-09-18
Korney
06:54:24 2019-09-18
Любитель пляжного футбола
06:15:59 2019-09-18
tigra
03:48:38 2019-09-18
tigra
03:40:13 2019-09-18