别人的Linux私房菜(7)Linux磁盘与文件系统管理

虚拟机的磁盘通常为:/dev/vd[a-p]

LVM和软件磁盘阵列 software RAID可以将一个分区格式化为多个文件系统或者多个分区格式化为一个文件系统。

索引式文件系统中:如ext2、ext3等

文件系统初始已经将inode和数据区块规划好,不再变动。

在磁盘的整体规划分区过程中,文件系统最前有启动扇区。之后为一个个块(block group)。在block group下有:

超级区块:记录文件系统的整体信息,数据区块与inode的总量(已使用,未使用)。区块大小(1k 2k 4k)。挂载时间。是否挂载有效位数值。

inode:记录文件的属性,一个文件占用一个inode。

文件读写属性,拥有者,大小,建立改变时间,最近读取时间,修改时间,文件uid,指向等。

inode大小在ext2中为128B。(ext4或xfs有256B)。inode记录一个区块使用4B。

inode区域定义了12个直接。1个间接,1个双间接,1个三间接。

以1k每block算,寻址大小为:1k*12+1024B/4B *1k  + (1024B/4B *1k)*1024/4*1k +  ((1024B/4B *1k)*1024/4*1k)*1024/4*1k =16G。

计算受到文件系统的影响会有差异。

数据区块:记录实际的文件内容 ,在ext2文件系统中,每个block的大小影响了最大磁盘容量和单文件的大小限制。

如block大小为1k(2k 4k),则单一文件最大16G,总容量最大2T。大小识别,还受到软件的限制。

文件系统描述说明

记录该区开始与结束位置,每个区段的位置,可以用dumpe2fs观察(ext2~4使用)xfs不能用。

区块对照表

记录使用的和未使用的区块

inode对照表

记录使用和未使用的inode号码

其它的文件系统:如fat格式,

每个区块号码记录在前一个文件区块中,像链表。可能磁盘转一圈无法获得所有的数据。需要碎片整理等。

ls -li列出文件占用的inode号码

建立目录和文件时,文件系统分配一个inode和至少一个区块给目录。

读取文件的流程为:读取相应的目录和区块,直到最后一层的文件。

新增文件首先确定目录权限wx,分配inode对照表和区块对照表,写入inode和数据区块。更新元数据(inode对照表和区块对照表,超级区块)

ext2之后的ext3和ext4加入了日志式文件系统,记录写入或修改文件的步骤,简化一致性检查的过程。e2fsck软件可以进行检查一致性。

系统会将内存中被改过的数据文件(dirty)不定时写回磁盘,保持磁盘与内存数据一致性。通过sync命令强制执行写回,正常关机执行了sync命令。

挂载点为目录,作为进入该文件系统的入口,通过inode判断不同文件名是否为相同文件

猜你喜欢

转载自www.cnblogs.com/bai2018/p/10695944.html