UDF 可以并且应该用作硬盘驱动器格式吗?

dla*_*lin 35 filesystem external-hdd udf

最近有几次我看到有人建议 UDF 作为跨平台格式的解决方案,用于在 Linux、Mac OS X 和 Windows XP 及更高版本上使用的驱动器。

我在这里搜索过,但没有找到相同的建议(大多数建议使用 ntfs-3g,它似乎要花钱并且未预装在 Mac 上)。

所以我的问题是:这是如何正确完成的,有没有人这样做过?然后您是否填满了驱动器并删除了一些文件以腾出空间,发现一切都像真正的 r/w 格式一样工作,即使它似乎主要是一次写入格式?

说我疯了,但如果 UDF 系统也能自动挂载并且可由登录用户写入,我真的很喜欢它。到目前为止我尝试过的(如 kicsyromy 提到的 udftools 格式)并没有解决这个愿望。

小智 16

有人研究了如何使用 udf 格式化闪存驱动器,以便它可以在尽可能多的操作系统上使用。这是他的发现(曾经在那里,现在离线):

  • Windows 7完全支持 UDF v2.6,但 UDF 块大小必须与底层设备的块大小匹配(对于 U 盘和大多数磁盘是 512 字节;“高级格式”磁盘是 4096 字节)。显然,必须对磁盘进行分区。

  • Linux 2.6.30及更高版本完全支持 UDF,至少到版本 2.5。

  • Mac OS X 10.5完全支持 UDF 直到 UDF 2.01,但仅在完整磁盘上使用时才支持,因此未分区。

如上所述,对于 USB 硬盘,Windows 要求对磁盘进行分区。另一方面,UDF 仅在用于完整磁盘(未分区)时才能在 OS X 中使用。相当令人惊讶的是,有一种解决方案适用于两者:同时对磁盘进行分区和未分区。

DOS 分区表存储在主引导记录的字节 446-510 中。此主引导记录存储在磁盘上的第一个扇区中,即扇区 0。通常,指定的第一个分区将进一步启动一些 KB。但是,似乎可以构造一个分区表,其第一个分区从扇区 0 开始,因此结果是一个包含分区表本身的分区。分区编辑器程序似乎拒绝创建这样的表,但至少最近的 Linux 和 Windows 内核似乎不会打扰。

好消息是UDF没有(我想是故意的)使用它所在的分区或磁盘的前几千字节,所以这个地方真的可以用来存储遗留分区表,指的是一个跨越整个分区的分区盘。一些测试表明这确实适用于 Linux、Windows 和 Mac OS X:

  • 在 Linux 2.6.30+、Mac OS X 10.5+、Windows Vista+ 中自动读写挂载
  • 可以在 Windows XP 中以只读方式使用,在 Linux 2.6.0+ 中可以在命令行挂载后使用
  • 支持大文件、UNIX 权限、Unicode 文件名、符号链接、硬链接等。

正确格式化磁盘的脚本Perl 脚本Bash 脚本


Mau*_*lla 15

不。

我们在 2015 年收到此回复。我在 Mactel 机器(Macmini 7,1)上使用 OSX Yosemite、Ubuntu 14.10 和 Windows 10 技术预览版。

我尝试了 UDF 和 exFat。我使用 Ubuntu 进行开发并且确实需要 Unix 风格的权限。

所有以前的指南都不再适用: UDF 驱动程序已经发展,所有操作系统都将接受 UDF 分区,问题和不稳定性比我能说的多。

  • 在 Mac OS 上格式化的 UDF 驱动器:无法安装在 Windows 10 上。
  • 在 Linux 上格式化的 UDF 驱动器:无法在 Windows 10 上安装。
  • 在 Windows 10 上格式化的 UDF 驱动器:在 Linux 上挂载读/写,在 OSX 上只读。

但是,Windows 不允许您在格式化 UDF 卷时指定块大小,因此,您的逻辑块大小可能与分区的物理块大小不同。

我不清楚这是否与我在 OSX 上以读/写方式安装它的困难有关,但是在使用 Linux 删除一定数量的文件后,我再也无法在 OSX 上安装驱动器。

系统进入内核恐慌状态,并以可耻的方式崩溃。

这一点以及有关该主题的各种答案表明此时对此格式的支持不一致。

似乎有一些方法可以使用NTFS卷来在现代文件系统的功能、Unix 风格的权限(我可能可以设置它们)和所有操作系统上的读/写挂载之间实现平衡。

  • @Argo 第二个参考文献指出,“-b 512 是强制文件系统块大小等于 USB 记忆棒的物理块大小,按照 UDF 规范的要求。如果您有幸拥有带有 USB 记忆棒的 USB 记忆棒,请调整它。更合适的块大小。” 因此,它确实允许您“指定”块大小,但必须将其指定为所需的值。 (2认同)
  • 有一个格式化工具可以处理不一致:https://github.com/JElchison/format-udf (2认同)

kic*_*omy 12

我刚刚在 VM 中对此进行了测试。似乎您需要在 Windows 中(重新)创建您的分区,为它分配一个驱动器号,但不要将其格式化为任何文件系统。之后启动到 Ubuntu 并按照说明进行操作,它应该可以用于读/写。

记得备份所有数据!

首先安装UDF工具:

sudo apt-get install udftools
Run Code Online (Sandbox Code Playgroud)

用您希望格式化为 UDF^ 的分区上的任何内容替换第一个块:

sudo dd if=/dev/zero of=/dev/sdxN bs=512 count=1
Run Code Online (Sandbox Code Playgroud)

最后格式化为UDF^:

sudo mkudffs --media-type=hd --blocksize=512 /dev/sdxN
Run Code Online (Sandbox Code Playgroud)

^其中:

  • x 是当前分配给硬盘的字母的占位符

  • N 是分区号的占位符

祝你好运,让我知道它是否适合你。