Я хотел бы сохранить вывод данных из моего приложения. Я хотел бы сохранить данные на USB-накопителе.

Мое приложение будет генерировать данные размером около 100 байт каждые 10 секунд. Эти данные будут храниться в файлах. Файлы будут разделены на ежедневной основе.

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

Меня беспокоит возможность отключения USB-флеш-накопителя в ОС Windows 7. Что я должен принять меры для предотвращения размонтирования и других связанных с этим проблем для долгосрочного использования?

1 ответ1

1

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

Долговечность ваших носителей (в циклах чтения / записи) не будет проблемой, если вы пишете 100B каждые 10 секунд в течение одного года, но вы можете переосмыслить схему хранения по нескольким причинам производительности, о которых я расскажу в более подробно ниже.

Размер блока файловой системы будет диктовать наименьший выделенный размер файла и почти наверняка будет больше, чем 100B. Например, если размер блока составляет 4 КБ, то пространство будет выделяться фрагментами по 4 КБ. Файл размером 100 ББ будет занимать 4 КБ, а файлу 4097 КБ (4 КБ +1 Б) будет выделено 8 КБ (2 блока). Тем не менее, большинство флеш-накопителей по-прежнему должны обладать достаточной емкостью для данных за 1 год с ожидаемой вами скоростью.

Если вы генерируете десятки или сотни (или, в вашем случае, 8640) файлов в день с похожими именами в одном каталоге, вы должны убедиться, что поддержка 8.3 поддержки имен файлов отключена в реестре (или убедитесь, что ваши имена файлов не более 8 символов, а расширения не более 3 символов). Если у вас есть группа файлов, которые начинаются со слова имя файла и заканчиваются, например, на .txt, вы получите следующие файлы 8.3:

FILENA~1.TXT
FILENA~2.TXT
FILENA~3.TXT
...
FILEN~10.TXT
FILEN~11.TXT
...
FILE~100.TXT

...и так далее.

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

Последний фактор - это стоимость произвольной операции чтения / записи на вашем флэш-накопителе. Если вы когда-либо копировали множество небольших файлов на флэш-накопитель или с него, вы знаете, что многие флэш-накопители USB имеют ужасную скорость произвольного чтения / записи. Копирование тысяч маленьких файлов с флэш-накопителя через 1 год может занять на несколько порядков больше, чем копирование десятков или сотен файлов, даже если общий размер файла одинаков. Это может означать разницу между часами и секундами для копирования всех ваших данных.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .