ISO 文件中可以有一个 exFAT 分区吗?

ISO 文件中可以有一个 exFAT 分区吗?

我使用的是具有 16GB 存储空间的 USB 2.0 棒,并且有一个 2.8GB 的​​安装程序 ISO。当将此 ISO 刷入棒时,我注意到速度非常慢(5 分钟),而将 ISO 文件本身复制到棒上(4 秒)。

为什么刷新所花的时间是将文件复制到现有分区所花时间的 75 倍?

我的假设是,这是因为 ISO 上存在旧的 ISO 9660 文件系统。有人能确认这个文件系统很慢吗?

我还想知道是否可以制作包含较新文件系统(例如 exFAT)分区的 ISO。如果不行,为什么 ISO 仍然是操作系统安装程序映像的标准格式?如果可以,为什么有人会放弃 exFAT 而改用 ISO 9660?

有关 ISO 的信息:

> isoinfo -d -i EndeavourOS_Galileo-Neo-2024.01.25.iso
Setting input-charset to 'UTF-8' from locale.
CD-ROM is in ISO 9660 format
System id: 
Volume id: EOS_202401
Volume set id: 
Publisher id: ENDEAVOUROS <HTTPS://ENDEAVOUROS.COM>
Data preparer id: PREPARED BY MKARCHISO
Application id: ENDEAVOUROS LIVE/RESCUE CD
Copyright File id: 
Abstract File id: 
Bibliographic File id: 
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 1347830
El Torito VD version 1 found, boot catalog is in sector 126

Joliet with UCS level 3 found.
SUSP signatures version 1 found
Rock Ridge signatures version 1 found
Rock Ridge id 'RRIP_1991A'
Eltorito validation header:
    Hid 1
    Arch 0 (x86)
    ID ''
    Cksum AA 55 OK
    Key 55 AA
    Eltorito defaultboot header:
        Bootid 88 (bootable)
        Boot media 0 (No Emulation Boot)
        Load segment 0
        Sys type 0
        Nsect 4
        Bootoff 7F 127

提前致谢!

编辑:我还尝试使用以下方法刷新 ISO:

dd bs=4M if=my.iso of=/dev/sda conv=fdatasync status=progress

这花了 15 分钟,结果如下:

2747269120 bytes (2.7 GB, 2.6 GiB) copied, 160 s, 17.2 MB/s2760355840 bytes (2.8 GB, 2.6 GiB) copied, 160.008 s, 17.3 MB/s
   
658+1 records in
658+1 records out
2760355840 bytes (2.8 GB, 2.6 GiB) copied, 856.116 s, 3.2 MB/s

以下是有关闪存分区的一些信息:

> lsblk -f /dev/sda
NAME   FSTYPE  FSVER            LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda    iso9660 Joliet Extension EOS_202401  2024-01-25-18-25-14-00                              
├─sda1 iso9660 Joliet Extension EOS_202401  2024-01-25-18-25-14-00                              
└─sda2 vfat    FAT16            ARCHISO_EFI 8093-0377                 

答案1

为什么刷新所花的时间是将文件复制到现有分区所花时间的 75 倍?

大部分文件未复制到分区中然而– 它正在等待操作系统缓冲区/缓存,稍后刷新。如果您在执行此操作后尝试syncumount文件系统,它仍需要几分钟来刷新待处理的写入。

我的假设是,这是因为 ISO 上存在旧的 ISO 9660 文件系统。有人能确认这个文件系统很慢吗?

不是。作为只读文件系统,它在 20 世纪 90 年代就完成了这项工作,而且在现代 CPU 上速度并不慢。(至少与 exFAT 相比,exFAT 根本不是一个现代文件系统——exFAT 甚至不是基于扩展的,它仍然使用簇链就像 1980 年代的前辈一样)。

但除此之外,“刷新”磁盘映像通常意味着以 1:1 的方式逐扇区写入,在这种情况下,文件系统不涉及整个过程完全没有问题——整个文件系统结构只是作为一系列连续的扇区被复制,而不会尝试对其进行解释。使用将 1GB 图像写入磁盘的过程gnome-disks应该花费完全相同的时间,无论该图像的内容如何。

(例外情况是以下程序:真正“刷新”或“写入”映像,而是将其内容提取到新准备的文件系统中(Rufus 就是这样一个例子)。在这种情况下,新目标文件系统(几乎总是 FAT32)的“速度”将比源文件系统更重要,因为更新数据结构比读取数据结构慢 - 而且通常,提取几百个较小的文件确实会比复制单个大文件慢 - 但即使文件系统结构不是最理想的,例如 ISO 9660 和 exFAT 之间的差异在任何类型的现代 CPU 上都几乎不会引人注目。)

编辑:我还尝试使用以下方法刷新 ISO:

在这个特定的例子中,你没有指定块大小,bs=所以我怀疑至少部分问题是 'dd' 默认一次只读取和写入 512 个字节(单个扇区)。其他方法bs=1M通常会更快一些。

我还想知道是否可以制作包含较新文件系统(例如 exFAT)分区的 ISO。如果不行,为什么 ISO 仍然是操作系统安装程序映像的标准格式?如果可以,为什么有人会放弃 exFAT 而改用 ISO 9660?

ISO 9660 仍在使用,因为“ISO”图像CD/DVD首先是图像,这是它们的标准文件系统。(但如果它们是 DVD 图像,那么它们将使用较新的 UDF 而不是 ISO 9660。例如,任何最近的 Windows.iso 实际上都是仅具有“存根”ISO 9660 文件系统的 UDF 图像。)

您拥有的 Linux 映像恰好已被准备好isohybrid同时用作可启动 CD/DVD 光盘(使用 El Torito 标准)和可启动 HDD(使用典型的 BIOS 和 UEFI 启动格式),使用所涉及的不同分区表的一些创造性交错;但一般来说,“ISO”映像是用来刻录到 CD 中的。

所以真正的问题是为什么操作系统安装映像仍然制作成 CD/DVD 映像而不是常规磁盘映像。(我不知道答案。)

对于使用其他文件系统的 CD/DVD,从技术上讲,可能与 UDF 相同,因为 CD/DVD引导过程可以工作 - 从技术上来说这应该是可行的,但至少特定的扇区 0x11 需要看起来像一个有效的 ISO 9660“引导记录”,以便 PC 固件能够将 CD 识别为可引导的,因此新的文件系统必须包装在一个虚拟的 ISO 9660 结构中,并且操作系统需要预期并识别这一点 - 但很可能做不到。

相关内容