磁盘调度器的三十年迷途:从电梯算法到"无调度"的技术突围
2004年,Linux内核开发者面临一个棘手的问题:传统的电梯调度算法在特定工作负载下会导致请求饥饿——某些I/O请求可能永远等不到服务。这个问题的根源在于,当磁盘忙于服务某一方向的请求时,反方向的请求可能被无限期忽略。Jens Axboe设计的Deadline调度器正是为了解决这个问题,它给每个请求设定一个"死线",保证请求不会无限期等待。 ...
2004年,Linux内核开发者面临一个棘手的问题:传统的电梯调度算法在特定工作负载下会导致请求饥饿——某些I/O请求可能永远等不到服务。这个问题的根源在于,当磁盘忙于服务某一方向的请求时,反方向的请求可能被无限期忽略。Jens Axboe设计的Deadline调度器正是为了解决这个问题,它给每个请求设定一个"死线",保证请求不会无限期等待。 ...
2017年1月31日,一个普通的周二,GitLab.com的工程师在尝试修复数据库复制问题时,意外地在主数据库服务器上执行了 rm -rf 命令。大约300GB的数据在几秒钟内被删除。 ...
1992年3月,ACM Transactions on Database Systems发表了一篇题为《ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging》的论文。这篇由IBM Almaden研究中心的C. Mohan等人撰写的文章,定义了此后三十余年数据库崩溃恢复的基本范式。 ...
2014年,某取证实验室收到了一个棘手的案件:嫌疑人删除了大量文件后立即断电,试图销毁证据。按照当时主流认知,SSD启用TRIM后删除的文件应该瞬间消失。然而,取证人员却成功恢复了80%以上的已删除数据。 ...
2018年3月,PostgreSQL开发者Craig Ringer在邮件列表中披露了一个令人震惊的发现:PostgreSQL对fsync()错误处理不当可能导致数据损坏。这个后来被称为"fsyncgate"的事件揭示了一个更深层的问题——许多开发者对fsync()的语义存在根本性误解。 ...
2009年3月,Ubuntu用户论坛上出现了一连串关于"ext4数据丢失"的报告。用户们描述了一个令人不安的现象:系统正常关机后重启,发现最近编辑的文件变成了零字节。这不是磁盘故障,不是恶意软件,而是Linux内核中一个精心设计的性能优化机制——延迟分配(delayed allocation)——在特定场景下的"副作用"。 ...