Использование UDF на флешке

31336
CesarB

После того, как мне не удалось скопировать файл размером более 4G на флэш-накопитель USB 8G, я отформатировал его как ext3. Пока это работает нормально для меня, это вызовет проблемы, если я захочу использовать его для копирования файлов кому-то, кто не использует Linux.

Я подумываю о том, чтобы отформатировать его как UDF, что, я надеюсь, позволило бы его прочитать (и, возможно, даже написать) в трех самых популярных операционных системах (Windows, MacOS и Linux) без необходимости устанавливать какие-либо дополнительные драйверы . Однако из того, что я уже нашел в Интернете, похоже, есть несколько небольших ошибок, связанных с тем, какие параметры используются для создания файловой системы, что может снизить совместимость (но большинство страниц, которые я нашел, посвящены оптическим носителям, а не USB-флеш-памяти). диски).

Я бы хотел знать:

  • Какую утилиту я должен использовать для создания файловой системы? (Пока что я нашел mkudffsи genisoimage, mkudffsкажется, лучший вариант.)
  • Какие параметры следует использовать с выбранной утилитой для максимальной совместимости?
  • Насколько совместима с наиболее распространенными версиями этих трех операционных систем UDF?
  • Использование UDF на самом деле лучшая идея? Есть ли другая файловая система, которая имела бы лучшую совместимость, без проблемных ограничений, таких как ограничение размера файла FAT32 4G, и без необходимости устанавливать специальные драйверы на каждый компьютер, который ее касался?
75
Связанный вопрос: http://serverfault.com/questions/55089/with-what-tool-should-i-format-a-hard-drive-as-udf CesarB 14 лет назад 3

7 ответов на вопрос

55
CesarB

Во-первых, я полностью обнулил диск перед созданием файловой системы UDF с помощью:

dd if=/dev/zero of=/dev/sdx bs=512 

Это делается для того, чтобы избежать каких-либо оставшихся суперблоков или других метаданных, которые могут запутать определение типа файловой системы операционной системы (необходимо по крайней мере обнуление первого сектора, чтобы стереть таблицу разделов; первые несколько секторов не используются UDF, а оставшиеся таблица разделов может действительно запутать вещи). Вы также можете использовать count=1переключатель на команде dd, чтобы быстрее обнулить только первые 512 байт диска (где обычно находится MBR), хотя это не было проверено.

Чтобы создать файловую систему, я использовал команду:

mkudffs --media-type=hd --blocksize=512 /dev/sdx 

mkudffsКоманда станет доступной в дистрибутивах Linux на основе Debian (таких как Ubuntu) после установки udftoolsпакета:

sudo apt-get install udftools 

Размер блока по умолчанию для mkudffs2048, что неправильно для флэш-накопителя USB (который использует 512-байтовые сектора). Поскольку размер блока используется для поиска метаданных файловой системы, использование неправильного размера блока может привести к тому, что он не будет распознан как файловая система UDF (так как привязка не будет там, где ожидает драйвер файловой системы). Обратите внимание, что mkudffsсправочная страница неверна; 512 является допустимым значением для размера блока (и код явно принимает его).

Я также использовал весь диск вместо раздела; это должно быть более совместимым.

Результат моего тестирования до сих пор:

  • Linux с самым последним ядром (2.6.31, из Ubuntu 9.10): работает.
  • Linux с более старым ядром: требуется bs=512опция mount, потому что она неправильно использовала 2048 вместо размера сектора устройства (исправлено в коммите 1197e4d ).
  • Windows Vista: работает.
  • Совершенно новый Mac: работает.
  • Windows XP: умеет читать нормально, но выдает «доступ запрещен» при попытке записи; также кажется, что диск заполнен.

Хотя я до сих пор не пытался создать в нем файл размером более 4G, я не вижу причин, по которым он не будет работать.

Учитывая, что он отлично работал на всех последних операционных системах (требуется только монтирование вручную в Linux, которое больше не понадобится, как только выйдут Ubuntu 9.10 и Fedora 12), и работал только для чтения в Windows XP (что было неожиданностью). для меня; я ожидал, что он вообще не распознает файловую систему), использование UDF вместо FAT32 или NTFS в больших USB-флешках кажется хорошей идеей.

прекрасно работает, нет необходимости в причудливых опциях монтирования на karmic или windows 7 Matt Joiner 14 лет назад 0
как вы форматировали / разбивали диск? Я обнулел свой USB-накопитель на 32 ГБ, используя `dd if = / dev / zero of = / dev / sdb bs = 1M`, что оставляет его без таблицы разделов. romeovs 12 лет назад 1
@romeovs Затем создайте новую таблицу разделов. Вы можете использовать gparted для этого, если вы хотите что-то графическое. Я верю, что вы также можете смонтировать устройство (вместо раздела), но я не уверен, какие ОС работают, а какие нет, если вы делаете это. WhyNotHugo 12 лет назад 0
@romeovs: я не разделил диск. В этом весь смысл его обнуления, удаления таблицы разделов и старых остатков файловой системы и помещения файловой системы UDF во весь неразмеченный диск. Создание таблицы разделов может привести к путанице. CesarB 12 лет назад 4
У меня не работал внешний жесткий диск SeaGate FreeAgent Desktop USB 2.0 емкостью 500 ГБ (не уверен, должен ли он, так как эта тема посвящена флэш-накопителям). Windows 7 всегда показывала диск как «нераспределенный» в утилите «Управление дисками». Я пробовал несколько разных комбинаций вариантов. Adam Monsen 12 лет назад 3
Большое спасибо за продолжение. Редко, если не в первый раз, я вижу умный вопрос, на который затем детально отвечает ОП после нескольких дней / недель тестирования. Отличная работа, спасибо! Luc 10 лет назад 2
Это создает файловую систему UDF версии 2.01, я полагаю? David Balažic 10 лет назад 0
См. Также [скрипт от Питера Уилля] (http://sipa.ulyssis.org/2010/02/filesystems-for-portable-disks/), который автоматизирует процесс создания UDF и создает таблицу разделов для лучшей совместимости. Я разместил его как [альтернативное решение] (http://superuser.com/a/762693/53308). dolmen 10 лет назад 1
Некоторые версии UDF могут быть прочитаны даже Win95. Anixx 10 лет назад 0
Кстати, большинство USB-накопителей используют гораздо больший размер стираемого блока. Размер страницы также больше 512 байт. Таким образом, использование 2048-байтовых секторов / блоков прекрасно и разумно. Daniel B 9 лет назад 0
Обоснованность этого ответа сомнительна. 1. Переформатирование флеш-памяти убийствами выравнивания. Это плохая идея, см. [Здесь] (http://goo.gl/xpkxNG) и [здесь] (https://goo.gl/Alw8jb) 2. Очистка всей флэш-накопителя не требуется, если что-либо вызывает нежелательный носить. 3. UDF-накопитель не имеет UUID. Вы должны смонтировать его по имени тома, которое не получается из формата с `mkudffs`, поэтому вы должны присвоить имя тома в Windows. Мне было бы интересно узнать, как люди работают с флешками в формате UDF. длительный срок, интенсивное использование и т. д. RolfBly 9 лет назад 0
Я бы порекомендовал назвать файловую систему: `mkudffs --media-type = hd -b 512 --vid = PENDRIVE --lvid = PENDRIVE` Tometzky 9 лет назад 1
Почему вы говорите, что сектор в флешках всегда 512b? [Разве этот размер не отличается в каждой палке] (https://github.com/bradfa/flashbench)? Или, может, я что-то путаю? Hi-Angel 8 лет назад 0
Большинство USB-накопителей * выставляют * свою память в виде блоков по 512 байт. В то время как внутренне все намного сложнее (разного размера, в зависимости от того, говорите ли вы о блоках записи (обычно несколько килобайт), стирании блоков (много килобайт) или единицах выделения (несколько мегабайт)). В некоторых системах UDF нужен такой размер блока == размер сектора. Так что "-b 512" DrYak 8 лет назад 1
7
j0nam1el

CesarB did a great job getting to the crux of the issue. One thing that can't be underscored enough is how important it is to use the proper block size when formatting UDF.

Inspired by CesarB's post (and my other research/testing), I wrote a script to automate the process of formatting in UDF--using the properly detected sector size. See format-udf on GitHub. Notable features:

  • Formats a block drive (hard drive or Flash drive) in Universal Disk Format (UDF)
    • UDF revision 2.01 used for maximal compatibility
    • First 4096 sectors are zeroed out to erase any existing MBR (necessary for proper UDF detection)
  • Resulting file system can be read/written across multiple operating system families (Windows, OS X, and Linux)
  • Runs on any OS having a Bash environment

Because of the last point, this script I wrote cannot be used on Windows. However, the script will run on OS X and Linux. After doing so, Windows should be able to magically detect the newly formatted UDF drive.

To directly answer the questions posted, format-udf will:

  • choose the appropriate tool for formatting based on operating system and environment
  • automatically detect and populate all parameters necessary for formatting
  • maximize OS compatibility (see GitHub page for compatibility chart)
  • yield the maximum feature set (and minimal limitations) that the asker is looking for
Я взглянул на вашу утилиту format-udf на Github, и у меня есть один вопрос по этому поводу. Скрипт определяет размер физического блока накопителя. Вы уверены, что параметр Linux называет «размер физического сектора (блока)», а не «размер логического сектора», является правильным для использования? Физическое и логическое может означать много вещей. То, что hdparm называет «Размер логического сектора», является единицей адресации, используемой протоколом SATA, тогда как «Размер физического сектора» является внутренним элементом накопителя. Для меня более логично, что «физические блоки» в спецификации UDF действительно означают «логические блоки» Linux. Johan Myréen 7 лет назад 1
ты на месте, @ JohanMyréen. Я приглашаю вас присоединиться к обсуждению этой темы на GitHub. https://github.com/JElchison/format-udf/issues/13 Существует неизбежное изменение в соответствии с вашим вопросом в ожидании дополнительного тестирования в Windows 7 и 10. j0nam1el 7 лет назад 0
format-udf действительно хорош. Только что протестировал его на Linux, и мог читать / записывать отформатированный диск на OS X и на Windows 10. mivk 7 лет назад 1
Хотя возможность «работать на любой ОС с bash» имеет некоторую привлекательность, было бы еще лучше реализовать тот же подход непосредственно в «mkudffs»; Я имею в виду добавление некоторой новой опции `--best-block-size` в` mkudffs`. MarcH 7 лет назад 0
3
Ronald Pottol

Кажется, я вспомнил, что, сделав это, проблема, которую я обнаружил, заключается в том, что версия linux, которую я смонтировал, была доступна только для чтения, поскольку драйвер не был собран для r / w. Это работает в Windows, и я думаю, Mac.

Да, хорошее решение найти сложно. Некоторое время у меня был внешний диск с разделом fat32, на котором были драйверы для win и mac, раздел mac и большой раздел ext3. Это работало, но это означало установку драйверов. Отличный трюк в том, что он также загружался на Mac (fw & usb), вы должны оставить пробел и сделать некоторые заметки, затем вы можете добавлять разделы через командную строку и таблицу разделов mac.

Мир нуждается в бесплатной, доступной всем, файловой системе. ZFS был бы хорошим выбором. :-)

ZFS было бы неплохо иметь, но многих людей смутило бы. Это также немного излишне для внешних СМИ, не так ли? Больше подходит для гигантских файловых серверов, насколько я могу судить. Mike Cooper 15 лет назад 0
Ну, ZFS проверяет суммирование и исправление ошибок, что имеет большой смысл для нестабильных потребительских вещей. :-D В наши дни мы все храним достаточно, чтобы в конечном итоге что-то съесть, что сгниет немного (см. Исследование, проведенное Sun по проблеме, которая ведет к ZFS, также обратите внимание на необнаруженную частоту ошибок при кодировании на HD). Нам нужны настоящие fs, которые могут использовать все, а fatX не так ли. Еще не здесь, правда. Ronald Pottol 15 лет назад 2
ZFS не работает в Linux ignis 12 лет назад 0
2
dolmen

Pieter Wuille wrote a tool to partition and format a disk to make a UDF layout that will be compatible with both Windows (>= Vista, read only for XP), MacOS X 10.5, Linux 2.6.30+:

И поскольку сервер со сценариями Питера Уайля, кажется, не работает, есть более новый сценарий, выполненный JElchisson: (Format-UDF) [https://github.com/JElchison/format-udf], с объяснениями здесь: (Sharing a Hard / Flash Drive в Windows, OS X и Linux с UDF) [https://j0nam1el.wordpress.com/2015/02/20/sharing-a-hardflash-drive-across-windows-os-x-and-linux -с-UDF /] DrYak 8 лет назад 3
1
Pali

Для достижения максимальной совместимости вы должны использовать mkudffs из проекта udftools как минимум в версии 2.0. Никаких специальных параметров не требуется, все определяется автоматически.

Есть 3 больших ограничения:

  1. Системы Microsoft Windows не распознают несъемный жесткий диск, если на нем нет таблицы разделов MBR или GPT.

  2. Системы Apple Mac OS X не распознают файловую систему UDF на многораздельном диске.

  3. Вероятно, все системы (кроме недавних ядер Linux) не распознают файловую систему UDF, если размер блока UDF не соответствует размеру логического сектора диска.

Инструмент mkudffs начиная с версии 2.0 обрабатывает все 3 ограничения. При форматировании несъемных жестких дисков создается «фальшивая» таблица MBR, которая начинается в секторе 0 и охватывает весь диск. Таким образом, файловая система UDF может быть прочитана либо из первого раздела (необходим для Microsoft Windows), либо с целого диска (необходим для Apple Mac OS X). См. Справочную страницу mkudffs 2.0 для более подробной информации.

0
user10547

NTFS, с NTFS-3G вы можете писать в него с помощью Linux и посмотреть http://macntfs-3g.blogspot.com/ для вашего Mac.

Кажется, это связано с дополнительными драйверами для Mac. Mike Cooper 15 лет назад 4
Если он не хочет использовать FAT, он застревает, и NTFS-3G уже работает на Mac, ему нужно то, что я связал для записи. user10547 15 лет назад 0
Одна небольшая проблема заключается в том, что это не _my_ Mac. Я бы предпочел не устанавливать драйвер на компьютеры других людей. CesarB 15 лет назад 4
-1
spapakons

There are drivers for Windows (and Mac) that can access EXT3 partitions, so you can format it to EXT3 and use it (with drivers) to everywhere. Another way would be to use an archiever to store the large file in two or more files up to 4GB each. This way you can use the FAT32 filesystem which is universal. On the host computer you have to extract the archive in order to use it, but it's a way to do it without drivers. Use a RAR format archiver since it works on Windows, Linux, Mac, although I think a ZIP format could work as well. But I would go with the drivers. Once installed you can do anything without restrictions. In the PC I have used Ext2Fsd for full EXT2, EXT3 and EXT4 access and Macdrive for full MacOS format access. Surely similar tools exists for Linux and MacOS as well to fully access NTFS partitions etc. If you only need read access, you don't need any drivers, Linux and MacOS support reading of NTFS partitions, so format the USB as NTFS! If all these computers are at the same network, things are easier! Make the USB either format and share it on the network. Other computers should not have problem accessing it!

-1 потому что в ответе даже не упоминается UDF! dolmen 10 лет назад 2

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