V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xiaoyanbot
V2EX  ›  问与答

为什么 Win 10 磁盘格式化界面: NTFS 格式可以最低 4KB 分配单元,而 exFAT 格式最低 128KB 呢? 可以用更低的分配单元吗?用什么工具吗?

  •  2
     
  •   xiaoyanbot · 35 天前 · 1459 次点击
    这是一个创建于 35 天前的主题,其中的信息可能已经有所发展或是发生改变。

    同一块磁盘,大小是 2TB,格式化工具, NTFS 可以设置最低 4KB 分配单元,而 extfat 最低只能 128KB 。 请问有什么工具可以让 exfat 支持更低的分配单元吗?

    Snipaste_2021-04-04_08-34-53.jpg


    Snipaste_2021-04-04_08-37-40.jpg

    15 条回复    2021-04-09 15:39:38 +08:00
    Eytoyes
        1
    Eytoyes   35 天前
    我试了 DG 可以给 exfat 分区指定簇大小,但是要 v5.0 以后的版本才支持

    Windows 会根据目标磁盘的容量决定默认簇大小
    https://support.microsoft.com/zh-cn/topic/%E5%AF%B9%E4%BA%8E-ntfs-fat-%E5%92%8C-exfat-%E7%9A%84%E9%BB%98%E8%AE%A4%E7%B0%87%E5%A4%A7%E5%B0%8F-9772e6f1-e31a-00d7-e18f-73169155af95
    aheadlead
        2
    aheadlead   35 天前
    好奇问一句为啥要设那么小?
    hahasong
        3
    hahasong   35 天前 via iPhone
    簇大小设小了是可以节约空间,同时你的 U 盘掉速会很严重
    hahasong
        4
    hahasong   35 天前 via iPhone
    建议你接受 win10 的设置
    flynaj
        5
    flynaj   35 天前   ❤️ 1
    如果你存的都是大文,把族设大性能更好. cmd 命令行可以指定参数

    ```
    /A:size 替代默认分配单元大小。强烈建议你在通常情况下使用
    默认配置。
    ReFS 支持 4096 、64K 。
    NTFS 支持 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K 、
    128K 、256K 、512K 、1M 、2M 。
    FAT 支持 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K,
    (128K 、256K 用于大于 512 个字节的扇区)。
    FAT32 支持 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K,
    (128K 、256K 用于大于 512 个字节的扇区)。
    exFAT 支持 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K 、
    128K 、256K 、512K 、1M 、2M 、4M 、8M 、16M 、32M 。

    请注意,FAT 和 FAT32 文件系统
    对卷上的群集数量施加以下限制:

    FAT: 群集数量 <= 65526
    FAT32: 65526 < 群集数量 < 4177918

    如果判定使用的指定群集大小无法
    满足以上需求,将立即
    停止格式化。

    大于 4096 的分配单元大小
    不支持 NTFS 压缩。
    ```
    xiaoyanbot
        6
    xiaoyanbot   33 天前
    @hahasong
    @aheadlead

    某些前端代码( npm )的, 会有 实际 100MB 的代码, 占用 17GB 空间的情况...
    aheadlead
        7
    aheadlead   33 天前 via iPhone
    @xiaoyanbot 不如考虑单独做个分区存这些玩意?记得弄个 ssd...
    xiaoyanbot
        8
    xiaoyanbot   33 天前
    @flynaj 请问完整的命令是 format 这个命令吗?
    xiaoyanbot
        9
    xiaoyanbot   33 天前
    @Eytoyes 发现分区助手, 可以 exfat 支持 4KB
    xiaoyanbot
        10
    xiaoyanbot   33 天前
    @Eytoyes 发现 DG ( Diskgenius )最小的大小, exfat 是 4KB
    flynaj
        11
    flynaj   33 天前
    @xiaoyanbot #8 就是这个 format,
    @xiaoyanbot #6 这个还用 exfat 那性能就太差了. 小文件可以用 reiserfs ,或者 ext4.
    xiaoyanbot
        12
    xiaoyanbot   33 天前
    @flynaj 主要是为了 win 和 mac 之间用的时候, 读写兼容性 ... reiserfs 和 ext4 在 win 上都没有原生支持吧...
    xiaoyanbot
        13
    xiaoyanbot   33 天前
    exfat 格式 ,使用分区助手格式化为了 4KB 的簇大小, 在 分区助手 的扇区和簇信息那里看的是正确的 4KB, 在 chkdsk 工具里看着也是正确的:

    ![Snipaste_2021-04-06_14-29-45.jpg]( https://i.loli.net/2021/04/06/TVrX2HUGvBxzMiO.jpg)

    但用小的文本文件看占用空间(使用资源管理器 explorer.exe )看的时候,结果发现是 占用空间 1024KB, 很奇怪

    然后用 treesize free 这样的工具看的时候, 也是显示 4KB

    好奇怪, 是 资源管理器 的 bug 吗?
    @flynaj
    flynaj
        14
    flynaj   33 天前
    @xiaoyanbot #12 如果 wsl2 算的话就有了.那你还不如用 ntfs

    @xiaoyanbot #13 应该是 bug 了
    ZhuMa12345678
        15
    ZhuMa12345678   30 天前
    那是因为微软在 Windows 的图形界面格式化窗口里对 exFAT 文件系统做了恶意限制,比如强制隐藏了本地硬盘的 exFAT 格式化选项以及>64G 分区的 4096 字节分配单元大小选项等等。
    然而对于系统自带的 format.com 命令行格式化程序则没有对 exFAT 文件系统施加任何人为限制,那么解决方案自然就是:先以管理员身份运行 CMD 命令提示符,注意空格输入:"Format X: /FS:exFAT /Q /A:4096 /Y"不包含引号即可将任意类型的盘快速格式化为 exFAT-4K 簇,其中"X:"为要格式化卷的盘符,"/A:"参数为自行指定一个簇大小。或者直接使用 DiskGenius 等第三方软件来格式化为 exFAT 也是可以的。


    至于 NTFS 与 exFAT 格式化对分区容量的要求问题,这里先明确一点:只要能格式化为 NTFS 的盘就一定也能格式化为 exFAT,但反过来则不一定。
    首先 exFAT 和 NTFS 在底层元数据结构上都是使用四个字节即 32 位簇项来描述总簇数,在使用同等簇大小下这两个文件系统能支持的最大卷容量都是一样大的。
    也就是说,单个 exFAT 卷最多可以有 2^32 个簇,这样即使使用最小的 512B 簇最大也能支持到 512B×2^32B=2T 的分区大小,而使用 4K 簇的话最大则能支持到 4096B×2^32B=16T 的分区大小。
    当然不管是 exFAT 还是 NTFS 文件系统,如果在格式化时簇大小设置的太大了,那么存储大量小文件肯定就会很浪费空间,这个没特殊需求直接使用 4K 簇大小即可,前提是只要分区容量不超过 16T 就行。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2205 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 14:43 · PVG 22:43 · LAX 07:43 · JFK 10:43
    ♥ Do have faith in what you're doing.