ext2文件系统如何计算最大磁盘容量和最大单一文件容量
2014-04-19 18:49
369 查看
一、基本概念
ext2文件系统由inode,data block和一个super block组成。这几个数据库的作用分别是:
super block:记录次文件系统的整体信息,包括inode/data block的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的data block号码;
data block:实际记录文件的内容,若文件太大时,会占用多个block,在ext2文件系统中所支持的data block大小有1KB,2KB,4KB三种。
文件系统一开始就将inode与data block规划好了,除非重新格式化(或者利用resize2fs等命令更改文件系统大小),否则inode与data block固定后就不再变动。
二、单个文件最大容量计算
在计算容量之前,还必须了解inode的机制。如下:
1.每个文件仅会占用一个inode
2.每个inode大小均固定位128bytes,但是大部分空间是用来存储文件属性的,另外inode记录一个data block需要花掉4byte
3.ext2文件系统为了让inode记录尽可能多的data block,定义了四个记录block号码的区域,分别为12个直接记录区,一个间接记录区,一个双间接记录区,一个三间接记录区,所谓间接记录区就是用data block记录data block号码,
inode结构如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/20/998673310905e8f68fd0b404c08a0df6.jpg)
假设data block 为1K,现在开始计算容量:
(1)12个直接记录区容量:12 * 1K = 12K
一个直接记录区记录一个data block号码,一个data block 1K
(2)1个间接记录区容量:256 * 1K = 256K
间接记录区指向一个data block,由该data block间接记录文件data block号码,由于data block为1K,记录一个data block要4byte,所以一个data block可以保持1024 / 4 = 256 个data block号码
(3)1个双间接记录区容量:256 * 256 * 1K = 65536K
总共有256个data block间接记录文件data block号码
(4)1个三间接记录区容量:256 * 256 * 256 * 1K = 16777216K
将四个记录区容量相加,总容量为16843020K,约等于16G。
需要说明的是:这个计算方法不能用在4K的block大小的情况下,因为大于2K的block将会受到ext2文件系统本身的限制,ext2文件系统限制单个文件最大容量为2T。
最大磁盘容量貌似是系统规定的(不确定),尚未找到计算方法。
ext2文件系统由inode,data block和一个super block组成。这几个数据库的作用分别是:
super block:记录次文件系统的整体信息,包括inode/data block的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的data block号码;
data block:实际记录文件的内容,若文件太大时,会占用多个block,在ext2文件系统中所支持的data block大小有1KB,2KB,4KB三种。
文件系统一开始就将inode与data block规划好了,除非重新格式化(或者利用resize2fs等命令更改文件系统大小),否则inode与data block固定后就不再变动。
二、单个文件最大容量计算
在计算容量之前,还必须了解inode的机制。如下:
1.每个文件仅会占用一个inode
2.每个inode大小均固定位128bytes,但是大部分空间是用来存储文件属性的,另外inode记录一个data block需要花掉4byte
3.ext2文件系统为了让inode记录尽可能多的data block,定义了四个记录block号码的区域,分别为12个直接记录区,一个间接记录区,一个双间接记录区,一个三间接记录区,所谓间接记录区就是用data block记录data block号码,
inode结构如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/20/998673310905e8f68fd0b404c08a0df6.jpg)
假设data block 为1K,现在开始计算容量:
(1)12个直接记录区容量:12 * 1K = 12K
一个直接记录区记录一个data block号码,一个data block 1K
(2)1个间接记录区容量:256 * 1K = 256K
间接记录区指向一个data block,由该data block间接记录文件data block号码,由于data block为1K,记录一个data block要4byte,所以一个data block可以保持1024 / 4 = 256 个data block号码
(3)1个双间接记录区容量:256 * 256 * 1K = 65536K
总共有256个data block间接记录文件data block号码
(4)1个三间接记录区容量:256 * 256 * 256 * 1K = 16777216K
将四个记录区容量相加,总容量为16843020K,约等于16G。
需要说明的是:这个计算方法不能用在4K的block大小的情况下,因为大于2K的block将会受到ext2文件系统本身的限制,ext2文件系统限制单个文件最大容量为2T。
最大磁盘容量貌似是系统规定的(不确定),尚未找到计算方法。
相关文章推荐
- Fix chrome 下flash crash的问题
- linux常用命令详解
- spring mvc4使用及json 日期转换解决方案
- C++中的内存管理(二)
- 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut .
- C#XML文件操作类(二)
- c++位运算和逻辑运算
- PreferenceActivity的使用
- 【EF 译文系列】模型和数据库连接
- new java接口
- TextView 单行显示长文本
- C++反汇编->模板分析
- i3wm配置笔记
- 最小堆操作(元素的添加和删除)
- 基本的哈夫曼编码算法的实现
- Java知识总结——StringBuilder、StringBuffer、String类之间的区别
- boost准模板库date_period()(时间段使用 续1)时间段之间的关系运算
- poj1003——HangOver
- vm.overcommit_memory和vm.overcommit_ratio
- C#:XML操作类