写时复制的两面性:ZFS与Btrfs如何在性能与可靠性之间权衡
2005年,Sun Microsystems的工程师Jeff Bonwick站在白板前,画出了一个革命性的架构图。这个被称为ZFS的文件系统,试图解决困扰存储系统数十年的一个问题:如果磁盘会静默损坏数据,而传统文件系统对此无能为力,我们该如何保护用户的数据? ...
2005年,Sun Microsystems的工程师Jeff Bonwick站在白板前,画出了一个革命性的架构图。这个被称为ZFS的文件系统,试图解决困扰存储系统数十年的一个问题:如果磁盘会静默损坏数据,而传统文件系统对此无能为力,我们该如何保护用户的数据? ...
一个看似简单的问题 当你在Linux终端输入cp /home/user/file.txt /mnt/usb/backup/时,系统在做什么?源文件位于ext4格式的SSD上,目标目录在FAT32格式的U盘里。这两种文件系统的数据结构完全不同——ext4使用extent树管理块分配,FAT32依靠链式的FAT表。然而,cp命令对这种差异一无所知。 ...
2019 年,一个名为「Native File System API」的提案出现在 WICG(Web Incubator Community Group)的讨论区。它的目标很直接:让 Web 应用能够像原生应用一样读写用户的本地文件。三年后,Chrome 86 正式发布了这项功能,更名为 File System Access API。而在大洋彼岸,Mozilla 的工程师在 GitHub issue 中留下了五个字的评价:「harmful」(有害)。 ...
1996年,新西兰奥克兰大学的Peter Gutmann发表了一篇在安全领域影响深远的论文《Secure Deletion of Data from Magnetic and Solid-State Memory》。论文揭示了一个令普通人不安的事实:在磁性存储介质上,即使数据被覆盖多次,仍然可以通过特殊设备恢复。这篇论文后来催生了著名的"Gutmann方法"——通过35次覆写来确保数据无法恢复。 ...
执行 ls -l 时,文件权限后面的那个数字是什么意思?创建一个硬链接后,磁盘空间为什么不增加?删除原文件后,硬链接为什么还能正常访问?这些看似反直觉的现象,背后隐藏着 Unix 文件系统设计中最优雅也最容易被误解的核心概念——inode。 ...
2018年3月,PostgreSQL开发者Craig Ringer在邮件列表中披露了一个令人震惊的发现:PostgreSQL对fsync()错误处理不当可能导致数据损坏。这个后来被称为"fsyncgate"的事件揭示了一个更深层的问题——许多开发者对fsync()的语义存在根本性误解。 ...
1972年3月,Communications of the ACM发表了一篇题为《TENEX, a Paged Time Sharing System for the PDP-10》的论文。论文作者是BBN公司的Daniel G. Bobrow及其同事。在描述内存管理机制时,论文提到了一个当时并不显眼的设计:当一个进程需要访问另一个进程的数据时,系统不会立即复制内存页,而是让两个进程共享同一物理页,直到其中一个进程尝试修改它。 ...