powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как хранить миллионы файлов размером меньше 40-90 байт?
25 сообщений из 58, страница 1 из 3
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334396
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть огромное количество файлов (нескольк десятков миилонов) размером 40-90 байт.
Программа которая с ними работает умеет работать только с файлами (тоесть их не запихнёшь в базу данных или архив).

Получается два неприятных момента:
1) огромная потеря пространства (кластер ведь 4кб), в файлы всего по несколько байт
2) очешь большое количество самих файлов (и винда начинает очень медленнл работать с ними)

Размер кластера конечно можно уменьшеить до 512, но и это не панацея, ведь файлы в 10 раз меньше кластера. Да и диск 4Тб с кластерами 512 байтов съест ещё больше пространства для таблицы размещения (за счёт десятикратного увеличения маленьких кластеров).

Если попытаться заархивировать этот объём, он пространства становится почти в 1000 раз больше. Это логично, потому что пока кластер в 100 раз больше самих файлов и потом ещё сама архивация (а файлы текстовые и одинаковой структуры). Но чтобы заархивировать такое количество - надо больше суток...

Может есть какие-то виртуальные хранилища (виртуальные диски) которые расчитаны именно на хранение большого количества мелких файлов? Или работающие с архивом как с диском? (пусть даже в ущерб скорости)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334416
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky1) огромная потеря пространства (кластер ведь 4кб), в файлы всего по несколько байтФайлы размером до, примерно, полутора килобайт NTFS хранит прямо в каталожной записи.2) очешь большое количество самих файлов (и винда начинает очень медленнл работать с ними)Только разбрасывать по подкаталогам.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334422
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyвинда начинает очень медленнл работать с ними
Какие именно операции с ними становятся медленными? Уж не вывод ли на экран полного списка?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334474
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может подойдет сжатие папки?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334481
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКакие именно операции с ними становятся медленными? Уж не вывод ли на экран полного списка?..Создание файлов - тоже.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334483
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovФайлы размером до, примерно, полутора килобайт NTFS хранит прямо в каталожной записи.
Я первый раз такое слышу. Но если глянуть на параметры папки скажем из 8000 таких файлов, то видим:
Размер: 508 КБ (520 678 байт)
На диске: 34.0 МБ (35 753 984 байт)


Ну ведь наверняка есть какие-то виртуальные хранилища под такие задачи?
Уже даже подумывал о компрессирующихся ISO образах (но там только для чтения)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334491
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterSkyвинда начинает очень медленнл работать с ними
Какие именно операции с ними становятся медленными? Уж не вывод ли на экран полного списка?..

После появления такого количества файлов на компьютере считай что он стал недееспособным:
Антивирусу надо 52 часа чтобы проверить диск.
Заход в папку где около 10 тысячь файлов - занимает около 5 секунд.
Конечно когда у тебя есть путь до файла - то файл откроешь моментально, но ведь чтобы получить путь - программе надо открыть папку (хоть всё и так разнесено на папаки по несколько тысячь файлов)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334494
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyЯ первый раз такое слышу. Но если глянуть на параметры папки скажем из 8000 таких файлов, то видим:
Размер: 508 КБ (520 678 байт)
На диске: 34.0 МБ (35 753 984 байт)Это эвристика.
Спросите чекиста - он лучше разбирается, что чем занято.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334495
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k-nikeМожет подойдет сжатие папки?
Нет! Файл даже если и сожмётся - всё равно будет занимать по 1 кластеру на файл (ни одного байта не выигрыешь из-за сжатия).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСоздание файлов - тоже.
За счёт чего? ЕМНИП, в NTFS каталог это двоичное дерево, стоимость операции log2(N).

InterSkyФайл даже если и сожмётся - всё равно будет занимать по 1 кластеру на файл

Да щаззз же. Винда не дура, она объедки в один кластер свалит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334520
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСпросите чекиста - он лучше разбирается, что чем занято.
Не совсем понял. Это ведь не про CHKDSK говорите?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334529
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
========================================
fsutil fsinfo ntfsinfo c:
  Байтов на кластер:                4096
  Байтов на сегмент FileRecord:     1024
========================================
  23719716 КБ в 112475 файлах.
     66292 КБ в 36892 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93164616 КБ свободно на диске.
         ===============================
Создали: 10001 файлов        680068 байт
         ===============================
  23726548 КБ в 122478 файлах.
     68340 КБ в 36893 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93155736 КБ свободно на диске.


Разница в свободном месте - менее девяти мегабайт, а вовсе не сорок.
Из этих "менее девяти" - два мегабайта на подросшие индексы.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334538
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterSkyФайл даже если и сожмётся - всё равно будет занимать по 1 кластеру на файл

Да щаззз же. Винда не дура, она объедки в один кластер свалит.

Я проверил перед тем как писать!
Нету выигрыша ни на 1 байт!
С какого перепуга она вдруг должна несколько файлов в один кластер сваливать? Просто компрессирует файлы, но хранятся они как прежде...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334540
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗа счёт чего? ЕМНИП, в NTFS каталог это двоичное дерево, стоимость операции log2(N).Короткие имена тоже не должны совпадать, а это уже полное сканирование.

P.S. Даже если создание коротких имён отключено на уровне файловой системы, они всё равно могут и (уже) быть и (дополнительно) создаваться. "fsutil file setshortname", например.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334542
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyЭто ведь не про CHKDSK говорите?Про него, родимого.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334549
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПросто компрессирует файлы, но хранятся они как прежде...Не как прежде - пространство под сжатые файлы выделяется посекторно. Что, собственно, и приводит к бешеной фрагментации.
Не помню только - выравнивается ли сжатый файл на границу кластера.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334571
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
========================================
fsutil fsinfo ntfsinfo c:
  Байтов на кластер:                4096
  Байтов на сегмент FileRecord:     1024
========================================
  23719716 КБ в 112475 файлах.
     66292 КБ в 36892 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93164616 КБ свободно на диске.
         ===============================
Создали: 10001 файлов        680068 байт
         ===============================
  23726548 КБ в 122478 файлах.
     68340 КБ в 36893 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93155736 КБ свободно на диске.


Разница в свободном месте - менее девяти мегабайт, а вовсе не сорок.
Из этих "менее девяти" - два мегабайта на подросшие индексы.

Не совсем понял как получить такую интересную информацию?
У меня получилось только:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
c:\Архив\101\23\96\77>fsutil fsinfo ntfsinfo c:

Серийный номер тома NTFS:         0xd86cc1426cc11bde
Версия:                           3.1
Число секторов:                   0x000000000995c65a
Всего кластеров:                  0x000000000132b8cb
Свободных кластеров:              0x0000000000030feb
Всего зарезервировано:            0x0000000000000000
Байт на сектор:                   512
Байт на кластер:                  4096
Байт на сегмент FileRecord:       1024
Кластеров на сегмент FileRecord:  0
Допустимая длина данных MFT:      0x000000000c41c000
Начальный LCN таблицы MFT:        0x00000000000c0000
Начальный LCN таблицы MFT2:       0x0000000000995c65
Начало зоны таблицы MFT:          0x0000000000b1ee00
Конец зоны таблицы MFT:           0x0000000000b1f640
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334581
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyНе совсем понял как получить такую интересную информацию?Я же сказал - чекист.
Просто убрал из вывода chkdsk несущественные подробности.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334585
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНе как прежде - пространство под сжатые файлы выделяется посекторно.
Посекторно или покластерно? Сектор-то 512 байт, а кластер 4кб.
Но ещё раз повторюсь - я реально компресанул несколько папок - и не освободился ни один байт (если берёшь папки где файлы размером по 20-30кб - там сразу идёт увеличение свободного дискового пространства).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334610
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПосекторно или покластерно?Посекторно.Сектор-то 512 байт, а кластер 4кбМожет быть и четыре на четыре :)Но ещё раз повторюсь - я реально компресанул несколько папок - и не освободился ни один байтИ не мог - мелкий файл уже "упакован" в (собственную) каталожную запись.

P.S Другой пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  23731812 КБ в 112489 файлах.
     66292 КБ в 36894 индексах.
    267679 КБ используется системой.
     65536 КБ занято под файл журнала.
  93151496 КБ свободно на диске.
         =================================
Создано: 100000 файлов              0 байт
         =================================
  23736156 КБ в 212489 файлах.
     87028 КБ в 36894 индексах.
    354227 КБ используется системой.
     65536 КБ занято под файл журнала.
  93039868 КБ свободно на диске.

"Ноль байт" заняли более ста мегабайт :)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334611
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а в Windows нет способа примонтировать файл архива как диск/каталог?
В линуксе такое с оговорками, но достижимо.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334612
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyМожет есть какие-то виртуальные хранилища (виртуальные диски) которые расчитаны именно на хранение большого количества мелких файлов? Или работающие с архивом как с диском? (пусть даже в ущерб скорости)
hadoop-based решения не рассматриваете? hdfs как распределенную файловую систему или другие аналоги?
Но это будет за пределами одного хоста.
Что вы делаете с этими файлами? Осуществляется ли по ним поиск и т п?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334614
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИнтересно, а в Windows нет способа примонтировать файл архива как диск/каталог?
В линуксе такое с оговорками, но достижимо.Есть. Тоже с оговорками ;)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334777
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИнтересно, а в Windows нет способа примонтировать файл архива как диск/каталог?
В линуксе такое с оговорками, но достижимо.ZIP?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334786
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovP.S Другой пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  23731812 КБ в 112489 файлах.
     66292 КБ в 36894 индексах.
    267679 КБ используется системой.
     65536 КБ занято под файл журнала.
  93151496 КБ свободно на диске.
         =================================
Создано: 100000 файлов              0 байт
         =================================
  23736156 КБ в 212489 файлах.
     87028 КБ в 36894 индексах.
    354227 КБ используется системой.
     65536 КБ занято под файл журнала.
  93039868 КБ свободно на диске.

"Ноль байт" заняли более ста мегабайт :)

По большому счёту тут нет ничего удивительного - ведь файл это не только РАЗМЕР, но и название, и атрибуты...
Я тут потестировал и получилось следующее:
Мои 8000 файлов размером 40-90 байт уменьшают свободное место на диске на 10290Кб, грубо говоря на 10Мб (проверял через CHKDSK).
Эти цифры практически совпали с тем эксперементом когда Basil A. Sidorov создал 10001 файл размером 1 байи (у него свободное место уменьшилось на 9Мб)
Напомню что Проводник говорил:
Размер: 508 КБ (520 678 байт)
На диске: 34.0 МБ (35 753 984 байт)

Хотя дальше я наткнулся на необъяснимую ситуацию: Я написал небольшой скрипт, который увеличил размер каждого файла в 2 раз (просто открывал файл и два раза копировал его в самого себя).
В результате мои 8000 стали весить не 508 КБ, а 0.99 МБ (так написал Проводник, ведь в одном Мб у нас 1024Кб)
Я ожидал что такая папку будет занимать не 10Мб, а на пол мегабайта больше (так как имя файла и атрибуты не изменились, а объём вырос на пол мегабайта. Однако чекдиск показал мне что дисковое пространство уменьшилось всего на 3928Кб (4Мб).
Я удивился и для чистоты экперемента даже форматнул диск. Но и повторная проверка (запускаю чекдиск, копирую, запускаю чекдиск) опять показала такие же цифры - 3928Кб. Почему увеличение файлов в 2 раза привело к УМЕНЬШЕНИЮ занимаемого пространства - я не полнял.

Ну и ещё раз подтвержу: сжатие файлов средством операционной системы не изменило свободное место ни на 1 байт. Пытался и директорию сжимать (это моментально происходило), и выделял в ней все файлы (тогда в течении минуты он визуально как бы каждый файл сжимал). Разници небыло никакой...
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как хранить миллионы файлов размером меньше 40-90 байт?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]