查看文件信息
ls -l
每行包含7列:
- 模式
- 硬链接数
- 文件所有者
- 组
- 大小
- 最后修改时间
- 文件名
stat查看更多信息
硬盘抽象理解
注意:
- 一个block的大小是由格式化的时候确定的,并且不可以更改
- mke2fs的-b选项可以设定block大小为1024、2048或4096字节。
- Linux的文件在磁盘中存储,是将属性和内容分开存储的!!
各模块解释:
- 启动块(Boot Block)的大小是确定的
- Block Group:ext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。政府管理各区的例子
- 超级块(Super Block):存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了
- GDT,Group Descriptor Table:块组描述符,描述块组属性信息,有兴趣的同学可以在了解一下
- 块位图(Block Bitmap):Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没有被占用
- inode位图(inode Bitmap):每个bit表示一个inode是否空闲可用。inode有唯一编号,inode表示单个文件的所有属性,一般是128字节大小。一个文件就对应一个inode
- i节点表:存放文件属性 如 文件大小,所有者,最近修改时间等
- 数据区:存放文件内容,以块的形式呈现,常见是4KB大选
这里就有一个小问题,为什么平时删除很快?
修改inode位图,使得操作系统在读取时判断从有内容到无内容,就单纯改革0 1关系,当然很快,更改完后,操作系统认为此时这片空间已经被释放,那么下次再存入文件时,新文件将会覆盖之前的内容。
为什么同一个目录下不能有同名文件?
1.目录下,无w--无法创建文件
2.目录下,无r--无法查看文件
3.目录下,无x--无法进入这个目录
在进入判断时,先看目录的inode若为x则可以进入目录,r时表示读取不到文件名此时就找不到应文件的inode映射关系无法查看文件,w时无法写对应映射关系的inode的部分就无法创建对应文件
创建一个新文件主要有一下4个操作:
1. 存储属性
内核先找到一个空闲的i节点(这里是263466)。内核把文件信息记录到其中。
2. 存储数据
该文件需要存储在三个磁盘块,内核找到了三个空闲块:300,500,800。将内核缓冲区的第一块数据
复制到300,下一块复制到500,以此类推。
3. 记录分配情况
文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。
4. 添加文件名到目录
新的文件名abc。linux如何在当前的目录中记录这个文件?内核将入口(263466,abc)添加到目录文
件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来