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 ...
随机推荐
- labview的bool(布尔)按键机械属性
在学习LabVIEW(简称LV)时,布尔控件是常用的控件.布尔控件分为按钮型控件和开关型控件,LV内部并没有区分按钮型还是开关型.这两种布尔控件可以根据需要相互转换,通过配置布尔控件的机械动作属性来实 ...
- Nginx笔记总结二:Nginx编译参数
-prefix= 安装路径-with-http_ssl_module ...
- Python-多任务复制文件夹
import multiprocessing import os import time def copy_file(queue, file_name, old_folder_name, new_fo ...
- geoserver整合swagger2支持自动生成API文档
网上各种博客都有关于swagger2集成到springmvc.springboot框架的说明,但作者在整合到geoserver中确碰到了问题,调试一番最后才解决,遂总结一下. swagger2集成只需 ...
- 【转载/部分修改】超实用STL——set的入门使用
本文部分转载自他人博文,少部分自行进行了添改qwq 参考文章:https://blog.csdn.net/chaoyueziji123/article/details/38422211 作者:chao ...
- 由生到死10个月!做App中的“二”有多难
十月,原本是怀胎过程的喜悦时光,但这段个时光,如今却是绝大多数App从生到死的所有时间.在App市场表面形式一片大好,彻底主宰我们生活.工作.娱乐的当下,绝大多数用户只是在App海洋中只取一瓢饮,其他 ...
- 杀入红海市场 ZUK手机底气在哪?
从越来越奢华的发布会舞台屏幕,到创意越来越烧脑的邀请函,一款新手机的发布工作变得越来越系统化.何时展示.如何亮相,都成为影响一部手机情怀,甚至销售好坏的重要因素.虽然很难以一个固定标准衡量各个手 ...
- HTC新机A9足以取代iPhone 你相信吗?
你相信吗?" title="HTC新机A9足以取代iPhone 你相信吗?"> 自信和嘴硬之间,往往就是成功与失败的分水岭.乔老爷子当年推出iPhone.iPad等 ...
- Geohash介绍
Geohash介绍 Geohash是一种地址编码,能把二维的经纬度编码成字符串,某一区域范围内的经纬度是一致的,其中有编码长度控制区域的范围 精度参考 使用场景 实时LBS应用 LBS应用中,搜索某某 ...
- QIs for Spread
玩了好几天,看了好多剧,所以这几天的进度稍微有点慢,另外,<一起同过窗>真香! 延展特性涉及解集覆盖的区域.一个具有良好分布的解集应该包含来自PF每个部分的解集,而不遗漏任何区域.然而,大 ...