Linux 文件系统及 ext2 文件系统
linux 支持的文件系统类型
# cat /proc/cpuinfo
# cat /proc/sys/net/ipv4/ip_forward # echo "1" > /proc/sys/net/ipv4/ip_forward # echo "0" > /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 号 1482256-rw-r--r-- 2 bruno bruno 21May515:55FileA 1482256-rw-r--r-- 2 bruno bruno 21May515:55FileB $ rm FileA $ cat FileB#将看到FileA的内容 $ ln -s FileBFileC#创建软链接 $ ls -il FileBFileC#FileC文件类型是l-链接文件,且与 FileB 具有不同的 inode 1482256-rw-r--r-- 1 bruno bruno 21May515:55FileB 1482226 lrwxrwxrwx 1 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 |
目录的查找算法
目录的插入算法
参考资料:
转载于:https://www.cnblogs.com/codetravel/p/4779430.html
Linux 文件系统及 ext2 文件系统相关推荐
- Linux中的EXT2文件系统
1.分区 分区是为了方便操作系统在一块硬盘上进行数据访问,即去哪里读取数据. 分区的要点是记录每一个分区的起始和结束柱面.这个数据存在MBR的分区表中.MBR只能存四个分区的记忆,可以是四个主分区或三 ...
- 文件系统---认识ext2文件系统
磁盘的物理组成: 扇区为最小的物理存储单位,每个扇区为512字节. 将扇区组成一个圆,那就是柱面,柱面是分区的最小单位. 第一个扇区很重要,里面有硬盘主引导记录(Masterbootrecord,MB ...
- Linux 文件系统之 MINIX 文件系统
MINIX 文件系统与标准 UNIX 的文件系统基本相同,它由 6 个部分组成:①引导块:②超级块:③ i 节点位图:④逻辑块位图:⑤i 节点:⑥数据块.对于一个普通的磁盘块设备来说,其各部分的分布见 ...
- Linux EXT2文件系统结构分析(详情见附件)
Linux的第一个版本是基于Minix文件系统的.当 Linux成熟时,引入了扩展文件系统(Ext FS) ,它包含了几个重要的扩展,但提供的性能不令人满意.在 1994 年引入了第二扩展文件系统(s ...
- ext显示服务器文件,使用linux的fsck.ext2命令检查及修复ext2文件系统
使用linux的fsck.ext2命令检查及修复ext2文件系统 发布时间:2020-07-18 13:40:16 来源:亿速云 阅读:138 作者:清晨 栏目:服务器 不懂使用linux的fsck. ...
- linux 如何格式化ext2,Linux的Ext2文件系统(InodeBlock)详解
前述:Linux系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不可以太小,太大会导致磁盘容量的浪费,太小会导致产生的文件无法存储的问题.在Linux里面文件是由两部分数据组 ...
- linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图
0. 文件系统和图书馆 在linux上操作文件,和在图书馆借书是非常相似的. 硬盘上的文件系统,好比图书馆的书架:而vfs则是图书馆的管理系统. 内核的工作: 1. 维护一个文件的目录树(dentry ...
- 【Linux系统】Linux EXT2文件系统
Linux EXT2文件系统 0 引言 1 基本结构 1.1 Block group 1.2 Boot group 2 Block group 的组成 2.1 Superblock(超级块) 2.2G ...
- Linux Ext2文件系统
介绍 Ext2文件系统全称为Second Extended FileSystem(第二扩展文件系统),既然是第二个那么就存在第一个,第一个就是扩展文件系统 Extended FileSystem.当然 ...
最新文章
- 「GAN优化」如何学会以正确的姿势定量评价你的GAN
- windows怎么用gpu跑python程序_在GPU(windows)上运行Theano的命令
- 京东智联云张晓东cdn_京东智联云:数智力量驱动实体经济复苏
- android 新浪微博客户端的表情功能的实现,flutter教程pdf
- 教程 | xampp mysql的可视化界面出现
- 详解数据库锁机制和原理
- 纯HTML5+CSS3仿B站首页
- 设置路由器虚拟服务器拦截广告,路由器怎么安装防火墙?拦截病毒广告就这么简...
- Mac 电脑如何使用HTTP代理
- Xilinx zynq zynqMP SD EMMC
- HML_FwLib_8051使用补充说明
- Java编程:通过获取当前时间,判断今天星期几
- 【原创】三星、镁光、海力士内存颗粒命名规则摘录
- 大学生html5实训心得体会,实训心得体会600字(精选5篇)
- 论文解读:基于共享混合深度学习架构的DNA形状特征预测转录因子结合位点
- 在知网下载时只能caj,不能pdf
- P3853 [TJOI2007]路标设置(二分答案)
- 物联网——Al二哈人脸识别
- 路由与接口技术——直连网络总结
- 操作系统实验之时间片轮转RR进程调度算法
热门文章
- Texlive安装与环境变量配置
- Linux shell 学习笔记(3)— shell 父子关系及内建命令
- Linux 交叉编译简介
- TVM Reduction降低算力
- 客快物流大数据项目(十七):自定义镜像mycentos
- 2021年大数据Kafka(九):kafka消息存储及查询机制原理
- 2021年大数据Flink(三十六):​​​​​​​Table与SQL ​​​​​​案例三
- ZooKeeper简介和概念知识
- python 把集合转成字典的方法
- java 数组的基本操作