Миллионы папок приводят к тому, что USB не отвечает

Я закончил эксперимент, чтобы посмотреть, сколько папок я смогу разместить на USB-накопителе емкостью 16 ГБ (для удовольствия). Я получил Raspberry Pi и запустил программу для создания новых папок, пока он разбился.

Когда я подключаю диск к моему основному компьютеру и перехожу к нему в терминале / media / username / и я набираю ls, программа зависает, пытаясь его найти. Во-вторых, открытие его в диспетчере дисков по умолчанию приводит к зависанию программы при нажатии на диск. Наконец, Nautilis работает, но он находится в длинном цикле, который ни к чему не приводит через час. (USB представляет собой файловую систему NTFS с более чем 3 миллионами папок)

Могу ли я просто использовать gparted и стереть данные с устройства? Или есть способ получить доступ к этим папкам?

Спасибо, Лось

-1
задан 2 December 2020 в 16:43

2 ответа

Вы можете пропустить через ls меньше или больше, если хотите увидеть некоторые имена папок (или даже grep, чтобы уточнить, какие папки).

У вас должна быть возможность использовать rmdir для удаления некоторых или всех этих каталогов.

Если вам нужны примеры кода, дайте мне знать; но команды довольно понятны для использования.

0
ответ дан 4 January 2021 в 08:15

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

(Источник: Википедия . Акцент мой.)

Вы можете статически разместить FAT файловой системы VFAT при форматировании диска с помощью команды mkfs.vfat . VFAT является наиболее широко поддерживаемой файловой системой для USB-накопителей и поддерживается всеми операционными системами. NTFS происходит из Windows и является более продвинутой, но следующие концепции все еще полезны для понимания.

Из man mkfs.vfat :

  -f ЧИСЛО-OF-FATS
  Укажите количество таблиц размещения файлов в файловой системе.  В
  по умолчанию 2.

  -F РАЗМЕР ЖИРА
  Задает тип используемых таблиц размещения файлов (12, 16 или 32 бит).
  Если ничего не указано, mkfs.fat автоматически выберет между
  12, 16 и 32 бит, в зависимости от размера файловой системы.

  -r ROOT-DIR-ENTRIES
  Выберите количество записей, доступных в корневом каталоге.  В
  по умолчанию 112 или 224 для дискет и 512 для жестких дисков.
 

Поскольку FAT файловой системы VFAT имеет статически выделенный размер, который не может быть изменен позже, существует только ограниченное количество файлов, которые он может хранить. Вот продолжение упомянутой выше статьи в Википедии:

Каждая запись в связанном списке FAT представляет собой фиксированное количество бит: 12, 16 или 32. Максимальный размер файла или диска, к которому можно получить доступ, равен произведение наибольшего числа, которое может быть сохранено в записях (за вычетом нескольких значений, зарезервированных для обозначения нераспределенного пространства или конца списка) и размера дискового кластера. Даже если для расширения файла требуется только один байт памяти, ему должен быть выделен весь кластер, поэтому большие кластеры тратят много места на диске, если имеется большое количество небольших файлов.

Это означает, что количество файлов вы может храниться в файловой системе, полностью зависит от размера, который был выделен при форматировании диска. Однако существуют теоретические максимумы , которые нельзя превышать:

  • Максимальное количество файлов для файловой системы VFAT - 268 435 437
  • Максимальное количество файлов для файловой системы NTFS - 4 294 967 295

Наконец, ничто из этого не имеет большого значения, когда вы пользуетесь Ubuntu. Традиционно Unix-подобные файловые системы не используют ни VFAT, ни файловую систему NTFS. Unix-подобная файловая система не имеет FAT или MFT, но выделяет таблицу inode , в которой хранятся inodes . Основное различие между файловыми системами, подобными Windows (VFAT, NTFS) и Unix-подобными (ext2, ext3, ext4), заключается в том, что Unix сохраняет имя файла не в таблице размещения, а внутри специальных файлов, называемых каталогами . Традиционно часто отмечается различие в том, что фрагментация является меньшей проблемой в Unix, чем в Windows.

Итак, чтобы получить максимальное удобство использования сломанного диска, переформатируйте его с помощью команды mkfs .ext4 или mke2fs . Обязательно сначала прочтите страницу руководства!

0
ответ дан 4 January 2021 в 08:15

Другие вопросы по тегам:

Похожие вопросы: