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 ...
随机推荐
- 从程序到系统:建立一个更智能的世界——记Joseph Sifakis“21世纪的计算”大会主题演讲
Sifakis"21世纪的计算"大会主题演讲" title="从程序到系统:建立一个更智能的世界--记Joseph Sifakis"21世纪的计算&q ...
- VB.Net制作-历朝通俗演义
原先的回数,全是汉语数字,为此我先转换成了阿拉伯数字,遗憾的是阿拉伯数字100居然排在1和2之前!所以必须设置为3位数字才行!否则顺序是乱的. 以下是用VBA批量重命名的代码: Dim FSO As ...
- python2查找匹配数据及类型转换
判断一个字符是否包含在另一个字符串中,如果包含,但是数据类型不同,需要进行数据类型转换 下面这个是针对python2
- leetcode第23题:合并K个排序链表
首先我想到的是采用一般递归法,将K个链表合并化为(k-1)两个链表合并 class Solution: def mergeKLists(self, lists: List[ListNode]) -&g ...
- CF-1102E-Monotonic Renumeration
比较可惜昨天比赛的时候时间不够了,在比赛结束之后五分钟找出了bug提交通过了.然并软: 首先这题说b数组的后一项要么等于前一项,要么等于前一项加一,而且如果a[i] == a[j] ,那么b[i] = ...
- Mysql错误问题:ERROR 1005 (HY000): Can't create table 'crm_1.tbl_client' (errno: 150)
MySQL外键创建条件: 1.两个表必须是InnoDB数据引擎2.外键表的外键字段必须是主键3.字段类型必须一致 创建表时创建外键: create table tbl_client(userName ...
- Android开发之《libyuv库的使用》
转自:http://bashell.nodemedia.cn/archives/build-google-libyuv-with-ndk-for-android.html 官方网站:https://c ...
- python爬虫练手项目快递单号查询
import requests def main(): try: num = input('请输入快递单号:') url = 'http://www.kuaidi100.com/autonumber/ ...
- jq ajaxPrefilter 防止重复提交ajax
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CPU网卡亲和绑定
#!/bin/bash # # Copyright (c) , Intel Corporation # # Redistribution and use in source and binary fo ...