linux下分区内部mv和跨分区mv的区别

本文探讨了文件系统中文件的保存方式,以Linux下的ext2文件系统为例,解释了inode和block的概念。在同分区和跨分区进行mv操作时,文件移动的原理和速度差异。同分区mv只需更新inode信息,速度快;而跨分区mv涉及数据块的复制和源文件的删除,因此速度较慢。即使跨分区mv失败,原有文件也不会受影响,因为数据在删除源inode前已完整复制。
摘要由CSDN通过智能技术生成

§ 0x01 问题列表

  1. 为什么不同,为什么一个快一个慢?
  2. 为什么跨区域mv失败时,不影响原来的文件?

这样的释疑过程也是自己对文件系统(filesystem)理解的加深过程。

§ 0x02 原理+释疑

文件系统中文件是如何保存的?

  1. 文件在文件系统中保存时(以linux下的ext2文件系统为例),是通过inode+block组织的。inode对应文件的元数据,block对应真实的数据;
  2. inode对block的管理不能跨分区,因为inode保存的block信息是按照分区中的block序号进行的,脱离对应的分区将没有意义;
  3. linux VFS中文件树是通过inode组件起来的。

分区内部mv的过程:mv a b 因为是在内部移动,所以只是修改了inode的父节点inode。

  1. 将inode a的父节点指向b位置,将inode a对应的文件名,修改为b。

对应的是一个rename的系统调用。

跨分区mv过程:

  1. 分配inode b;
  2. 将a中的block copy到b所在分区中,将对应的block归到inode b之下;
  3. 将inode a删除。

通过以上过程回答2个问题。

  1. 为什么同分区快?因为不涉及底层数据block的拷贝或者移动,数据block都在一个分区内。
  2. 跨分区mv失败时,为什么不影响原来的文件?因为跨分区也是block的copy过程,不是move,在第3步删除inode a之前,a对应的数据都是完整的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值