Linux 文件系统及 ext2 文件系统
linux 支持的文件系统类型
# cat /proc/cpuinfo
# cat /proc/sys/net/ipv4/ip_forward
# echo "" > /proc/sys/net/ipv4/ip_forward
# echo "" > /proc/sys/net/ipv4/ip_forward
$ mount
文件系统的几个基本概念
Inodes
Directories
Links
# ln /root/file1 /root/file2
ln -s /path/to/file1.txt /path/to/file2.txt
$ ln FileAFileB#创建一个硬链接
$ ls -il FileAFileB#具有相同的 inode 号
-rw-r--r-- bruno bruno 21May515:55FileA
-rw-r--r-- bruno bruno 21May515:55FileB
$ rm FileA
$ cat FileB#将看到FileA的内容
$ ln -s FileBFileC#创建软链接
$ ls -il FileBFileC#FileC文件类型是l-链接文件,且与 FileB 具有不同的 inode
-rw-r--r-- bruno bruno 21May515:55FileB
lrwxrwxrwx bruno bruno 5May516:22FileC->FileB
$ rm FileB
$ cat FileC#提示不存在该文件,皮之不存毛将焉附?
硬链接 | 软链接 |
硬链接不能在目录间创建 | 可以在不同目录间创建 |
不能跨越文件系统边界 | 可以跨文件系统边界 |
指向源头,即使源头被移动或者移除 | 不会更新 |
Device files
The Second Extended File system(EXT2)
Block Offset | Length | Description |
---|---|---|
byte 0 | 512 bytes | boot record (if present) |
byte 512 | 512 bytes | additional boot record data (if present) |
-- block group 0, blocks 1 to 1439 -- | ||
byte 1024 | 1024 bytes | superblock |
block 2 | 1 block | block group descriptor table |
block 3 | 1 block | block bitmap |
block 4 | 1 block | inode bitmap |
block 5 | 23 blocks | inode table |
block 28 | 1412 blocks | data blocks |
Block Offset | Length | Description |
---|---|---|
byte 0 | 512 bytes | boot record (if present) |
byte 512 | 512 bytes | additional boot record data (if present) |
-- block group 0, blocks 1 to 8192 -- | ||
byte 1024 | 1024 bytes | superblock |
block 2 | 1 block | block group descriptor table |
block 3 | 1 block | block bitmap |
block 4 | 1 block | inode bitmap |
block 5 | 214 blocks | inode table |
block 219 | 7974 blocks | data blocks |
-- block group 1, blocks 8193 to 16384 -- | ||
block 8193 | 1 block | superblock backup |
block 8194 | 1 block | block group descriptor table backup |
block 8195 | 1 block | block bitmap |
block 8196 | 1 block | inode bitmap |
block 8197 | 214 blocks | inode table |
block 8408 | 7974 blocks | data blocks |
-- block group 2, blocks 16385 to 24576 -- | ||
block 16385 | 1 block | block bitmap |
block 16386 | 1 block | inode bitmap |
block 16387 | 214 blocks | inode table |
block 16601 | 3879 blocks | data blocks |
ext2—Inode
Offset (bytes) | Size (bytes) | Description |
---|---|---|
0 | 2 | i_mode |
2 | 2 | i_uid |
4 | 4 | i_size |
8 | 4 | i_atime |
12 | 4 | i_ctime |
16 | 4 | i_mtime |
20 | 4 | i_dtime |
24 | 2 | i_gid |
26 | 2 | i_links_count |
28 | 4 | i_blocks |
32 | 4 | i_flags |
36 | 4 | i_osd1 |
40 | 15 x 4 | i_block |
100 | 4 | i_generation |
104 | 4 | i_file_acl |
108 | 4 | i_dir_acl |
112 | 4 | i_faddr |
116 | 12 |
i_osd2
|
Constant | Value | Description |
---|---|---|
-- file format -- | ||
EXT2_S_IFSOCK | 0xC000 | socket |
EXT2_S_IFLNK | 0xA000 | symbolic link |
EXT2_S_IFREG | 0x8000 | regular file |
EXT2_S_IFBLK | 0x6000 | block device |
EXT2_S_IFDIR | 0x4000 | directory |
EXT2_S_IFCHR | 0x2000 | character device |
EXT2_S_IFIFO | 0x1000 | fifo |
-- process execution user/group override -- | ||
EXT2_S_ISUID | 0x0800 | Set process User ID |
EXT2_S_ISGID | 0x0400 | Set process Group ID |
EXT2_S_ISVTX | 0x0200 | sticky bit |
-- access rights -- | ||
EXT2_S_IRUSR | 0x0100 | user read |
EXT2_S_IWUSR | 0x0080 | user write |
EXT2_S_IXUSR | 0x0040 | user execute |
EXT2_S_IRGRP | 0x0020 | group read |
EXT2_S_IWGRP | 0x0010 | group write |
EXT2_S_IXGRP | 0x0008 | group execute |
EXT2_S_IROTH | 0x0004 | others read |
EXT2_S_IWOTH | 0x0002 | others write |
EXT2_S_IXOTH | 0x0001 | others execute |
ext2—Block Groups,块组
ext2—Superblock,超级块
ext2—Block Group Descriptor,组描述符
Offset (bytes) | Size (bytes) | Description |
---|---|---|
0 | 4 | bg_block_bitmap |
4 | 4 | bg_inode_bitmap |
8 | 4 | bg_inode_table |
12 | 2 | bg_free_blocks_count |
14 | 2 | bg_free_inodes_count |
16 | 2 | bg_used_dirs_count |
18 | 2 | bg_pad |
20 | 12 | bg_reserved |
ext2—Block Group Descriptor Table,组描述符表
ext2—Block Bitmap
ext2—Inode Bitmap
ext2—Inode Table
Constant Name | Value | Description |
---|---|---|
EXT2_BAD_INO | 1 | bad blocks inode |
EXT2_ROOT_INO | 2 | root directory inode |
EXT2_ACL_IDX_INO | 3 | ACL index inode (deprecated?) |
EXT2_ACL_DATA_INO | 4 | ACL data inode (deprecated?) |
EXT2_BOOT_LOADER_INO | 5 | boot loader inode |
EXT2_UNDEL_DIR_INO | 6 | undelete directory inode |
ext2—Directories,目录
Offset (bytes) | Size (bytes) | Description |
---|---|---|
0 | 4 | inode |
4 | 2 | rec_len |
6 | 1 | name_len[a] |
7 | 1 | file_type[b] |
8 | 0-255 | name |
Constant Name | Value | Description |
---|---|---|
EXT2_FT_UNKNOWN | 0 | Unknown File Type |
EXT2_FT_REG_FILE | 1 | Regular File |
EXT2_FT_DIR | 2 | Directory File |
EXT2_FT_CHRDEV | 3 | Character Device |
EXT2_FT_BLKDEV | 4 | Block Device |
EXT2_FT_FIFO | 5 | Buffer File |
EXT2_FT_SOCK | 6 | Socket File |
EXT2_FT_SYMLINK | 7 | Symbolic Link |
Table . Sample Linked Directory Data Layout, 4KiB blocks
Offset (bytes) | Size (bytes) | Description |
---|---|---|
Directory Entry 0 | ||
0 | 4 | inode number: 783362 |
4 | 2 | record length: 12 |
6 | 1 | name length: 1 |
7 | 1 | file type: EXT2_FT_DIR =2 |
8 | 1 | name: . |
9 | 3 | padding |
Directory Entry 1 | ||
12 | 4 | inode number: 1109761 |
16 | 2 | record length: 12 |
18 | 1 | name length: 2 |
19 | 1 | file type: EXT2_FT_DIR =2 |
20 | 2 | name: .. |
22 | 2 | padding |
Directory Entry 2 | ||
24 | 4 | inode number: 783364 |
28 | 2 | record length: 24 |
30 | 1 | name length: 13 |
31 | 1 | file type: EXT2_FT_REG_FILE |
32 | 13 | name: .bash_profile |
45 | 3 | padding |
Directory Entry 3 | ||
48 | 4 | inode number: 783363 |
52 | 2 | record length: 16 |
54 | 1 | name length: 7 |
55 | 1 | file type: EXT2_FT_REG_FILE |
56 | 7 | name: .bashrc |
63 | 1 | padding |
Directory Entry 4 | ||
64 | 4 | inode number: 783377 |
68 | 2 | record length: 12 |
70 | 1 | name length: 4 |
71 | 1 | file type: EXT2_FT_REG_FILE |
72 | 4 | name: mbox |
Directory Entry 5 | ||
76 | 4 | inode number: 783545 |
80 | 2 | record length: 20 |
82 | 1 | name length: 11 |
83 | 1 | file type: EXT2_FT_DIR =2 |
84 | 11 | name: public_html |
95 | 1 | padding |
Directory Entry 6 | ||
96 | 4 | inode number: 669354 |
100 | 2 | record length: 12 |
102 | 1 | name length: 3 |
103 | 1 | file type: EXT2_FT_DIR =2 |
104 | 3 | name: tmp |
107 | 1 | padding |
Directory Entry 7 | ||
108 | 4 | inode number: 0 |
112 | 2 | record length: 3988 |
114 | 1 | name length: 0 |
115 | 1 | file type: EXT2_FT_UNKNOWN |
116 | 0 | name: |
116 | 3980 | padding |
Offset (bytes) | Size (bytes) | Description |
---|---|---|
-- Linked Directory Entry: . -- | ||
0 | 4 | inode: this directory |
4 | 2 | rec_len: 12 |
6 | 1 | name_len: 1 |
7 | 1 | file_type: EXT2_FT_DIR =2 |
8 | 1 | name: . |
9 | 3 | padding |
-- Linked Directory Entry: .. -- | ||
12 | 4 | inode: parent directory |
16 | 2 | rec_len: (blocksize - this entry's length(12)) |
18 | 1 | name_len: 2 |
19 | 1 | file_type: EXT2_FT_DIR =2 |
20 | 2 | name: .. |
22 | 2 | padding |
-- Indexed Directory Root Information Structure -- | ||
24 | 4 | reserved, zero |
28 | 1 | hash_version |
29 | 1 | info_length |
30 | 1 | indirect_levels |
31 | 1 | reserved - unused flags |
Table 4-6. Indexed Directory Entry Structure (dx_entry)
Offset (bytes) | Size (bytes) | Description |
---|---|---|
0 | 4 | hash |
4 | 4 | block |
目录的查找算法
目录的插入算法
参考资料:
Linux 文件系统及 ext2 文件系统的更多相关文章
- Linux磁盘管理——Ext2文件系统
前言 通常而言,对于一块新磁盘我们不是直接使用,而是先分区,分区完毕后格式化,格式化后OS才能使用这个文件系统.分区可能会涉及到MBR和GPT问题.至于格式化和文件系统又有什么关系? 这里的格式化指的 ...
- 认识 EXT2 文件系统
认识ext文件系统 硬盘组成与分割 文件系统特性 Linux 的 EXT2 文件系统(inode) 与目录树的关系 EXT2/EXT3 文件的存取与日志式文件系统的功能 Linux 文件系统的运行 挂 ...
- EXT2 文件系统
转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/22/2651641.html#ext2_filesystem 认识ext文件系统 硬盘组成与分 ...
- Linux磁盘管理——日志文件系统与数据一致性
参考:Linux磁盘管理——Ext2文件系统 数据不一致 上图是Ext2结构图,其他FS结构类似. 一般来说,我们将 inode table 与 data block 称为数据区:至于其他例如 sup ...
- linux的分区和文件系统
一.分区类型 主分区 总共最多能分四个 扩展分区 只能有一个,也算做主分区的一种,也就是说主分区加扩展分区最多有4个. 但是扩展分区不能存储数据和格式化,必须在划分成逻辑分区才能使用. 逻辑分区 逻辑 ...
- Linux分区类型EXT2、EXT3、EXT4详解
一.EXT2与EXT3 Linux之前缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定.但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺 ...
- Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里
这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争.最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间.学习吧又不想学习,看电视娱乐吧也 ...
- linux ext2 文件系统学习
Linux ext2文件系统理解 硬盘组成: 硬盘由多个圆形硬盘片组成.按照硬盘片能够容纳的数据量分为单盘和多盘.硬盘的数据读取主要靠机械手臂上的磁头,在机械手臂上有多个磁头.机械手臂不动硬盘旋转一 ...
- Linux ext2文件系统
Linux最传统的磁盘文件系统(filesystem)使用的是ext2 1.ext2文件系统结构ext2文件系统划分为多个块组,每个块组拥有独立的inode/block,一个文件系统只有一个Super ...
随机推荐
- vscode中的live-server配置https?
json文件中使用绝对路径添加证书 "liveServer.settings.https": { "enable": true, "cert" ...
- 视觉SLAM算法框架解析(3) SVO
版权声明:本文为博主原创文章,未经博主允许不得转载. SVO(Semi-direct Visual Odometry)[1]顾名思义是一套视觉里程计(VO)算法.相比于ORB-SLAM,它省去了回环检 ...
- numpy中的ndarray与pandas中的series、dataframe的转换
一个ndarray是一个多维同类数据容器.每一个数组有一个dtype属性,用来描述数组的数据类型. Series是一种一维数组型对象,包含了一个值序列,并且包含了数据标签----索引(index). ...
- JavaScript学习总结(六)数据类型和JSON格式
转自:http://segmentfault.com/a/1190000000668072 什么是JSON JSON:JavaScript 对象表示法(JavaScript Object Notati ...
- but for|lest,in case和for fear (that)|confidential|item|adapted for|fee|debates| retain|substantial|proceeded to|refrain from|clear|perceive
He ________ you if you ________ to see him that afternoon. A. might tell, were going B. told, were ...
- 前后端分离,使用nginx解决跨域问题
前端:vue.js+nodejs+webpack 后台:SpringBoot 反向代理服务器:nginx 思想:将前端代码打包,让nginx指向静态资源,nginx对后台请求进行转发. 1.将前端代码 ...
- (一)mybatis简易搭建
mybatis(基础及其搭建) 声明:该文章及该分类中的内容均基于正在开发的项目和一本参考书(深入浅出MyBatis技术原理与实战 by 杨开振) 一.mybatis核心组件(简要介绍) Sql ...
- Springboot整合Dubbo和Zookeeper
Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...
- Spring Boot框架开发的Java项目在CentOS7上的部署
需求:上级拿来一份Spring Boot框架开发的Java项目代码让我在服务器上运行起来,只说了一句该框架是自带了Tomcat(不用重新安装Tomcat),一份代码下有两个项目(一个管理端项目,一个用 ...
- Linux用户与用户组的关系
一.用户和用户组文件 1. /etc/passwd:所创建的用户账号和信息均存放在次文件中,所有用户可读取: 最后一个字段的值一般为/sbin/nologin,表示该账号不能用来登陆linux系统: ...