Linux基础篇学习——Linux文件系统之文件存储与读取:inode,block,superblock
Linux文件类型
代表符号 | 含义 |
---|---|
- | 常规文件,即file |
d | directory,目录文件 |
b | block device,块设备文件,支持以"block"为单位进行随机访问 |
c | character device,字符设备文件,支持以"character"为单位进行线性访问 |
l | symbolic link,符号链接文件 |
p | pipe,命名管道 |
s | socket,套接字文件 |
文件命名规则
1.严格区分大小写
2.目录也是文件
3.除过/以外的任意字符表示
4.长度不超过255
文件存储与读取
文件存储
1.文件存储在硬盘上
2.文件存取最小单位是块(block),块(block)由扇区组成,最常见的块大小为4KB,即8个连续的sector组成一个block
3.硬盘的最小存储单位叫做扇区(sector),每个扇区存储512字节
文件读取
操作系统读取硬盘数据:一次性读取一块数据
流程 以要读取/etc/passwd文件内容为例
Linux文件系统
Linux文件系统可以简单分为inode table和data area,inode table中存有inode,文件系统通常会将文件的权限与属性放置到inode中,至于实际内容则放置到data block区块中。另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息。
inode | block | superblock |
---|---|---|
记录文件的元数据 | 记录文件的数据 | 记录文件系统的整体信息 |
文件的元数据 :权限(rwx)与属性(拥有者、群组、时间参数、大小等) | ||
文件的数据:实际记录文件的内容 若文件太大时,会占用多个block | ||
文件系统的整体信息:inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等 |
inode补充
1.可以通过stat命令查看文件的元数据
[root@localhost ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1241 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 16797762 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2019-09-07 16:17:23.995429241 +0800
Modify: 2019-09-07 16:17:24.005456452 +0800
Change: 2019-09-07 16:17:24.005456452 +0800
Birth: -
File 文件名称
Size 文件大小
Blocks 占用的磁盘块数
IO Block IO块大小
regular file 文件类型
Device 所在设备
Inode Inode节点号
Links 被链接的次数
Access① 访问权限
Uid uid号和属主
Gid gid号和属组
Access② 文件最近一次的访问时间
Modify 文件的修改时间
Change 文件的改变时间
2.inode同时也记录此文件的资料所在的block号码
3.inode消耗磁盘空间
在磁盘格式化时,操作系统会自动将磁盘分为两个区域,一个数据区,一个inode区。整个磁盘的可用容量由inode和磁盘空间共同决定,当inode消耗完之后,磁盘空间还有剩余也无法存储数据。
补充
1.小文件问题:可能会使inode耗尽,使得文件文法创建。(磁盘利用率低)--->对于小文件比较多的场景,将block划分小一点。
2.大文件问题:一个文件占用多个block,使得文件读写速率慢。---->将block划分大一点。
3.ext文件系统——xfs文件系统