在 UNIX/Linux 中如何避免文件重叠?
Posted
技术标签:
【中文标题】在 UNIX/Linux 中如何避免文件重叠?【英文标题】:How is file overlap avoided in UNIX/Linux? 【发布时间】:2016-05-03 16:20:48 【问题描述】:如果我创建了一个文件,并且我的操作系统在某个磁盘上的某个内存地址启动该文件,但我最终向我的文件写入了太多数据,以至于文件描述符被移动到同一个文件的下一个文件的磁盘空间中磁盘,操作系统是否有办法保护我有覆盖风险的文件?如果是这样,UNIX/Linux 有什么特别的作用?
【问题讨论】:
我不是 UNIX 专家,但我觉得这很有趣,所以请点赞。 【参考方案1】:通常,操作系统通过允许将文件的内容存储在磁盘的非连续区域中来防止不同文件的内容重叠。将文件扩大到空闲区域只会导致文件包含不相邻的磁盘区域。当磁盘足够满时,这会导致臭名昭著的fragmentation。
请注意,绝不允许用户空间代码直接访问文件内容的磁盘地址。 lseek
返回的文件描述符偏移量不是磁盘上的地址,而是操作系统可以转换为实际地址的虚拟偏移量。地址对用户代码隐藏的事实意味着文件内容也可以移动到磁盘上的其他位置以优化存储。
阅读filesystems,了解有关此主题的更多信息。
【讨论】:
以上是关于在 UNIX/Linux 中如何避免文件重叠?的主要内容,如果未能解决你的问题,请参考以下文章