Skip to content

Commit 621fa95

Browse files
authored
Linux内核文件系统原理与实现
1 parent c880a5b commit 621fa95

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
## 1、定义
2+
3+
- 文件系统为我们直接操作文件和目录与存储设备之间充当桥梁和中介的角色
4+
5+
## 2、分类
6+
7+
- 基本文件文件(拓展文件系统)
8+
- ext
9+
- 单文件大小最大2GB
10+
- 数据块分散在存储设备(碎片化),读取速度慢
11+
- ext2
12+
- 单文件最大支持32TB
13+
- 数据块分组,读取速度提升
14+
- 系统崩溃和断电时易损坏文件系统
15+
- 存储文件依赖于索引节点表
16+
- 日志文件系统
17+
- 定义
18+
- 先将数据写入到日志,直到文件成功写入存储设备和更新索引节点表后再删除日志项,系统崩溃或断电恢复后,继续将上次未写入存储设备的日志文件继续写入
19+
- 日志方法
20+
- 数据模式
21+
- 索引节点和文件都会被写入日志(安全性好但性能差)
22+
- 有序模式
23+
- 只有索引节点数据会被写入日志,但只有数据成功写入后才删除(安全性和性能居中)
24+
- 回写模式
25+
- 只有索引节点数据会被写入日志,但不控制文件数据何时写入(安全性差但性能好)
26+
- 分类
27+
- ext3
28+
- 日志方法为有序模式(可修改)
29+
- 没有数据压缩和加密功能
30+
- 无法恢复误删文件
31+
- ext4
32+
- 支持数据压缩和加密功能
33+
- 支持extent(区段)特性
34+
- 预分配技术为大文件预留空间
35+
- Reiser
36+
- 日志方法为回写模式
37+
- 支持在线调整文件系统大小
38+
- 可把一个文件数据写到另一个文件的数据块的空白位置(尾部压缩技术)
39+
- JFS
40+
- 日志方法为有序模式
41+
- 基于extent的文件分配,减少碎片化
42+
- XFS
43+
- 日志方法为回写模式
44+
- 在线调整文件系统仅支持扩大
45+
- 写时复制文件系统(cow)
46+
- 定义
47+
- 修改数据时,先把源文件克隆或打快照的方式,避免直接修改源文件的内容,然后文件系统会再另外一个位置创建一块空间,以供存放新数据
48+
- 分类
49+
- Btrf
50+
- 高稳定性和易用性,支持动态调整已挂载的文件系统大小
51+
- ZFS
52+
- 无GPL许可,非Linux默认文件系统
53+
54+
## 3、命令
55+
56+
- 创建分区
57+
- 创建分区
58+
`fdisk /dev/sdx`
59+
- 打印存储设备/dev/sdx的详细信息
60+
`p`
61+
- 创建一个新分区
62+
`n`
63+
- 指定分区数量
64+
`num`
65+
- 指定起始扇区
66+
`输入2048或回车`
67+
- 指定终止扇区
68+
`+num G或回车(如果是单个分区)`
69+
- 保存更改信息
70+
`w`
71+
- 创建文件系统
72+
- 格式化文件系统
73+
`mkfs.ext4 /dev/sdx`
74+
- 挂载到虚拟目录的挂载点
75+
`mount -t ext4 /dev/sdx /mnt/`
76+
- 实现开机自挂载
77+
`echo -e "/dev/sdx\t/mnt\t ext4\t defaults\t 0 0" >>/etc/fstab`
78+
- LVM
79+
- 1.定义物理卷
80+
- 在建立的分区基础上改变分区类型
81+
`t`
82+
- 声明该分区仅为LVM系统的一部分
83+
`8e`
84+
- 打印该分区信息
85+
`p`
86+
- 保存分区信息更改
87+
`w`
88+
- 2.创建物理卷
89+
- 把分区定义为LVM系统的分区
90+
`pvcreate /dev/sdx(x=a-z)`
91+
- 查看已创建的物理卷列表
92+
`pvdisplay /dev/sdx`
93+
- 3.创建卷组
94+
- 创建卷组
95+
`vgcreate vgname /dev/sdx`
96+
- 查看已创建卷组信息
97+
`vgdisplay vgname`
98+
- 4.创建逻辑卷
99+
- 创建占用全部逻辑区段(卷组)的逻辑卷
100+
`lvcreate -l 100%FREE -n lvname vgname`
101+
- 查看已创建的逻辑卷信息
102+
`lvdisplay vgname`
103+
- 5.创建文逻辑卷件系统
104+
`mkfs.ext4 /dev/vgname/lvname`
105+
- 6.挂载逻辑卷到虚拟目录
106+
`mount /dev/vgname/lvname /mnt`
107+
- LVM修改
108+
- 激活或禁用卷组
109+
`vgchange`
110+
- 删除卷组
111+
`vgremove`
112+
- 把物理卷加入到卷组中
113+
`vgextend`
114+
- 从卷组中删除物理卷
115+
`vgreduce`
116+
- 增加逻辑卷大小
117+
`lvextend`
118+
- 缩减逻辑卷大小
119+
`lvreduce`
120+
- 重新格式化逻辑卷的文件系统
121+
`resize2fs`
122+
123+
## 4、注意事项
124+
125+
> - 文件系统通过索引节点表来存放文件信息,并通过索引节点号来标识文件
126+
> - IDE驱动器的存储设备名使用dev/hdx,SCSI和SATA驱动器的存储设备名使用/dev/sdx(x=a-z)
127+
> - 传统模式的拓展文件系统空间只能通过调整单块磁盘的分区大小或是购置更大磁盘,再把文件系统手动移动到新磁盘的方式
128+
> - 逻辑卷管理允许将一个或多个物理磁盘和物理分区加入到现有文件系统,动态拓展文件系统空间
129+
> - 一个或多个物理磁盘或物理分区组成一个卷组
130+
> - 逻辑分区建立在卷组基础上,逻辑分区包含文件系统
131+
> - 一个逻辑卷相当于一个物理分区,可以在逻辑卷建立文件系统,然后挂载到虚拟目录使用
132+
> - 逻辑卷管理架构:硬盘--物理分区--物理卷--卷组--逻辑分区--逻辑卷
133+
> - LVM使用的三种技术为快照,条带化,镜像
134+
> - 卷组名用来标识创建逻辑卷时使用的卷组
135+
136+
----
137+
138+
版权声明:本文为博主[Tjane'Blogs](https://www.cnblogs.com/tjane)的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
139+
140+
原文链接: https://www.cnblogs.com/tjane/p/16795365.html
141+

0 commit comments

Comments
 (0)