简单来说:假设我在硬盘上创建一个未格式化的原始分区,并使用标准 c 接口从中读取和写入块 IO:open、pread、pwrite 等。这样做会损坏我的引导加载程序吗?我问这个问题是因为我的引导加载程序在 2 周内被损坏了两次,我不知道发生了什么。
完整故事:我正在运行一个类似数据库的应用程序,该应用程序向磁盘写入和从磁盘读取大小为 8kb 的块 IO。我将其配置为在原始未格式化的分区上运行。这为我的实验工作负载带来了 40-50% 的吞吐量提升,大概是因为我们避免了将数据转换为文件格式和从文件格式转换为文件格式的操作系统开销。我还使用 O_DIRECT 标志绕过操作系统缓存,从而确保所有 IO 都到达磁盘。我正在运行 Ubuntu 13.10。硬盘最初是微米 SSD。
上周,我的电脑突然崩溃了。当时我甚至没有在运行实验。当我尝试重新启动时,BIOS 找不到引导加载程序。我认为这一定是因为 SSD 损坏了,所以我更换了它。我重新安装了所有内容,然后再次开始运行实验。不知什么时候,我的笔记本电脑没电了,当我重新接通电源时,发生了与之前完全相同的事情:BIOS 再次找不到引导加载程序。
这对我来说是个大问题。我不确定是电脑出了问题,还是我的实验一直在破坏引导加载程序。