linux硬盘概述,Linux文件系统概述

以Linux 0.11为实例,个人总结,不保证正确性。。。

[文件系统]

磁盘上的数据以块为单位进行读写,每一个块称为一个逻辑块。在理解磁盘的逻辑视图时,以逻辑块为单位来理解。

磁盘上数据按照使用情况分,可以分成以下几个部分:引导块、超级块、i节点位图区、逻辑块节点位图区、i节点区、数据区

引导块中是整个系统的启动代码,只有用于启动的文件系统才有数据,其它的文件系统这个块没有数据(可以这样理解)

超级块中存放的是关于整个文件系统的布局描述的数据

i节点位图区中存放的是i节点区中i节点的使用情况

逻辑块节点位图区中存放的是磁盘中逻辑块的使用情况

i节点区中存放的是对应文件的i节点数据

数据区存放文件数据的部分

示意图如下

f784361ad84675ff938ef5b4523530bf.png

[超级块]

超级块中含有描述整个文件系统分布的数据。相应的数据结构如下(fs.h)

struct d_super_block {

unsigned short s_ninodes; //i节点个数

unsigned short s_nzones; //磁盘上全部的逻辑块的个数

unsigned short s_imap_blocks;  //i节点位图区所使用的逻辑块的个数

unsigned short s_zmap_blocks; //逻辑块位图区所使用的逻辑块的个数

unsigned short s_firstdatazone; //第一个数据块的逻辑块号

unsigned short s_log_zone_size;

unsigned long s_max_size; // 最大文件长度

unsigned short s_magic;  //文件系统魔数

};

struct d_super_block是对磁盘上的超级块的数据描述。

在内存中的超级块的数据结构,除了要存放磁盘中相应的数据外,还要存放一些额外的信息。如读写标志、加锁标志、该文件系统安装的根节点、i节点位图区的高速缓存、设备号等。内存中超级块的数据结构描述如下

struct super_block {

unsigned short s_ninodes;

unsigned short s_nzones;

unsigned short s_imap_blocks;

unsigned short s_zmap_blocks;

unsigned short s_firstdatazone;

unsigned short s_log_zone_size;

unsigned long s_max_size;

unsigned short s_magic;

/* These are only in memory */

struct buffer_head * s_imap[8];  //i节点位图区的高速缓存数组,8个逻辑块的大小

struct buffer_head * s_zmap[8]; //逻辑块位图区的高速缓存数组,8个逻辑块的大小

unsigned short s_dev;  //设备号

struct m_inode * s_isup;  //被安装文件系统根目录i节点

struct m_inode * s_imount;  //该文件系统被安装的i节点

unsigned long s_time;  //修改时间

struct task_struct * s_wait;  //等待在该超级块上的进程

unsigned char s_lock; //加锁标志

unsigned char s_rd_only; //只读标志

unsigned char s_dirt;  //内容是否已修改标志

};0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值