Linux 文件系统

------------恢复内容开始------------

一、linux 开机流程

第一步:开机自检,加载BIOS
第二步:读取MBR(Master Boot Record)主引导记录 MBR在大小为512字节,存放预启动信息、分区表等信息,
第三步:Boot Loader grub引导菜单
第四步:加载kernel内核。在MBR程序中找到其前446字节的Boot Loader。Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
第五步:init进程依据inittab文件夹来设定运行级别
第六步:init进程执行rc.sysinit
第七步:启动内核模块
第八步:执行不同运行级别的脚本程序
第九步:执行/etc/rc.d/rc.local
第十步:执行/bin/login程序,启动mingetty,进入登录状态

 

 Linux 文件系统

 

 

2.文件系统介绍
Ext
全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过为了快速恢复文件系统,减少一致性检查的时间,增加了日志功能, 所以Ext2被称为索引式文件系统,而Ext3/Ext4被称为日志式文件系统。
查看Linux支持的文件系统:ls -l /lib/modules/$(uname -r)/kernel/fs

 

 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。 Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F等。

Linux的文件结构是单个的树状结构.可以用tree进行展示。 在Ubuntu下安装tree(sudo apt-get install tree),并可通过命令来查看。

每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:

–      任何一个分区都必须挂载到某个目录上。

–      目录是逻辑上的区分。分区是物理上的区分。

–      磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。

–      根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

以下是我们可能存在的一种目录和分区关系

Linux 文件系统

 

 

fdisk查看硬盘分区表

–      df:查看分区使用情况

–      du: 查看文件占用空间情况

Q: 为什么要分区,如何分区?

–      可以把不同资料,分别放入不同分区中管理,降低风险。

–      大硬盘搜索范围大,效率低

–      磁盘配合只能对分区做设定

–      /home /var /usr/local经常是单独分区,因为经常会操作,容易产生碎片


二、inode和block

inode:记录文件的权限、属性和数据所在块block的号码,每个文件都有且仅有一个的inode,每个inode都有自己的编号,可以把inode简单地理解为文档索引。
在磁盘格式化后,inode的大小和数量都已经固定了,大小均为128Bytes(新的Ext4和xfs为258Bytes)。读取文件时,先读取inode里面记录的文件属性和权限,匹配正确后,才会读取文件内容(block)。在Linux系统中,实际使用inode来识别文件,而不是文件名,类似于用户标识和昵称的设计 。

扇区:文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区储存512字节
block:操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个block。

文件数据都储存在“块”中,那么很显然,我们还必须找到一个地方储存文件的“元信息”,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
inode包含文件的元信息,具体来说有以下内容:
Size 文件的字节数
Uid 文件拥有者的User ID
Gid 文件的Group ID
Access 文件的读、写、执行权限
文件的时间戳,共有三个:
Change 指inode上一次变动的时间
Modify 指文件内容上一次变动的时间
Access 指文件上一次打开的时间
Links 链接数,即有多少文件名指向这个inode
Inode 文件数据block的位置
Blocks 块数
IO Blocks 块大小
Device 设备号码

可以用stat命令,查看某个文件的inode信息:


总之,除了文件名以外的所有文件信息,都存在inode之中。
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。
每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。

 

1、uname -r : 显示操作系统的发行版号
2、uname -a :显示系统名、节点名称、操作系统的发行版号、内核版本等等。


//查看当前目录下各个文件及目录占用空间大小
du -sh *
du -h --max-depth=1 /home

------------恢复内容结束------------

上一篇:20191223-第11章学习笔记


下一篇:《Unix/Linux系统编程》第十一章学习笔记