[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fbhx-uKXDdJgNtjiL1hnzqyrP0ZpXjn53ect8Vp8bNUA":3},{"item":4,"related":44},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":35,"sourceName":36,"sourceUrl":37,"status":38,"seoTitle":7,"seoDescription":9,"canonicalUrl":35,"isFeatured":39,"sno":40,"sortOrder":41,"publishedAt":42,"updatedAt":43,"createdAt":43},"2ff97b85-3142-4a75-924f-e6afa339d700","article","NVMe ZNS：为什么有些 SSD 要求数据按区域顺序写？","nvme-zns-zoned-namespace","ZNS 把 SSD 命名空间划分为必须顺序写入的区域，让主机参与闪存数据布局与回收。本文解释这种分工如何减少无效搬运，也说明它给文件系统和应用带来的管理成本。","传统 SSD 常常让主机把数据写到任意逻辑地址，设备内部再负责把新数据搬到合适的闪存位置。闪存有擦除块、写入页等物理限制，因此 SSD 需要后台整理和垃圾回收。NVMe ZNS（Zoned Namespace）改变了主机与设备分工：把命名空间切成许多区（zone），并要求主机按照规则在每个区内顺序写入。\n\n为什么顺序写有帮助？NAND 闪存通常不能像覆盖内存那样直接改写任意位置。设备必须把有效页搬走、擦除整块、再写入新数据。传统 SSD 会用闪存转换层隐藏这些操作，但随机更新可能造成额外写入，也就是写放大。ZNS 把一部分布局责任交给主机，让应用知道数据属于哪个区、何时关闭区、何时重置区，从而更好地将生命周期相近的数据放在一起。\n\n一个 zone 通常有自己的写入位置状态。主机不能随意跳到区中间覆盖旧内容，而要按顺序追加；区写满后，可在数据不再需要时整体重置。对日志、分层存储、视频流或某些数据库工作负载而言，把连续写入的数据放进相同生命周期的区域，能让空间回收更可预测，也可能减少设备内部不必要的数据搬迁。\n\n代价是软件必须参与管理。应用或文件系统要处理 zone 的状态、并发写入顺序、空间分配与回收；如果数据更新模式不适合顺序追加，迁移和重写逻辑可能反而增加复杂度。ZNS 也不会自动让每一块 SSD 都更快、更耐用。效果取决于设备实现、主机软件、工作负载与运维策略。\n\n可以把它想成仓库里的单向货架：每个区域只允许从入口依次摆放货物，不允许在中间随手抽换；当整区都过期后，再一次性清空重用。这样仓库管理员（主机软件）更容易规划整理，但必须自己记住货物的位置与去留。传统 SSD 则更像由仓库内部员工接管布局，主机简单一些，内部搬运对主机不透明。\n\n因此，ZNS 的核心不是“新型文件系统”或“取消 SSD 控制器”，而是通过顺序写区域把部分闪存管理责任显式交给主机。它为可预测、高效的存储软件打开了空间，也要求整个软件栈理解分区写入规则。挑选场景时应先确认应用是否天然适合追加写和按区回收。\n\n来源：[NVM Express：Zoned Namespaces (ZNS) Command Set](https:\u002F\u002Fnvmexpress.org\u002Fspecification\u002Fnvme-zoned-namespaces-zns-command-set-specification\u002F)","\u002Fuploads\u002F2026-10-13\u002Fd2d45247-533f-4b02-b1a8-56f14d1dade3.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn","foundit-ai-editorial",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31],{"id":24,"name":25,"slug":26},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":28,"name":29,"slug":30},"8d35e42e-9f5b-4dd9-b30f-dc2c53d06096","硬件","hardware",{"id":32,"name":33,"slug":34},"a202d639-99a6-488a-a712-4d4c6ffd7e15","开发","dev",null,"NVM Express","https:\u002F\u002Fnvmexpress.org\u002Fspecification\u002Fnvme-zoned-namespaces-zns-command-set-specification\u002F","published",false,46,0,"2026-10-13T00:00:00.000Z","2026-10-13T02:13:43.485Z",[45,53,62],{"id":46,"type":6,"title":47,"slug":48,"summary":49,"coverUrl":50,"authorName":14,"sno":51,"publishedAt":42,"createdAt":52},"5f2d281d-4673-42f3-b5e4-4cc68974abc6","SR-IOV：一张实体网卡怎样变成多个可分配给虚拟机的设备？","sriov-pci-device-virtual-functions","SR-IOV 允许支持该能力的 PCIe 设备由物理功能创建多个虚拟功能，供不同工作负载更直接地使用。本文解释 PF\u002FVF 分工、性能价值，以及为什么硬件虚拟化本身不等于完整隔离。","\u002Fuploads\u002F2026-10-13\u002F8b63e99b-a5e9-4f90-bbdb-81b28a2a38be.jpg",44,"2026-10-13T02:13:46.843Z",{"id":54,"type":6,"title":55,"slug":56,"summary":57,"coverUrl":58,"authorName":14,"sno":59,"publishedAt":60,"createdAt":61},"ccf00154-c4a8-4439-a8e8-4151b1c20721","AF_XDP：Linux 怎样把高速网卡数据直接交给用户程序？","linux-af-xdp-fast-packet-path","AF_XDP 是 Linux 面向高性能收发包的套接字接口，可把 XDP 处理后的数据送入用户态环形队列。本文从网卡、缓冲区和队列讲清数据路径，并说明所谓零拷贝依赖驱动与硬件支持。","\u002Fuploads\u002F2026-10-17\u002Ffdcc8edb-927f-41dc-8802-1e9053c47bfa.jpg",45,"2026-10-17T00:00:00.000Z","2026-10-17T03:08:33.177Z",{"id":63,"type":6,"title":64,"slug":65,"summary":66,"coverUrl":67,"authorName":14,"sno":68,"publishedAt":60,"createdAt":69},"0376ac9f-8733-4176-bab5-0d693977ea1e","MTE：处理器怎样给内存加上“标签”，揪出越界访问？","arm-mte-memory-tagging-extension","Arm 的 Memory Tagging Extension 为指针和内存区域附加小型标签，访问时由硬件比对，帮助发现部分越界读写和释放后使用。本文拆解标签如何工作、能抓住哪些错误，以及它为何不是内存安全的万能保险。","\u002Fuploads\u002F2026-10-17\u002Fb3ba5676-d466-4a2a-bf38-f1bc77aaff05.jpg",50,"2026-10-17T03:08:27.651Z"]