文件系统
操作文件系统 > https://blog.csdn.net/dufufd/article/details/80253561
查看磁盘/目录树
1.df命令查看磁盘的分区和使用量
【df -h】

2.du查询当前目录下所有目录/文件所占的容量

3.dumpe2fs 查看分区具体使用情况

| Filesystem volume name | Filesystem state | Inode count | Block count | Block size |
|---|---|---|---|---|
| 文件系统的别名,可以自己取名 | 文件系统的状态,如果是clean则表示正常 | Inode的数量 | Block块的数量 | 每一个Block块的大小,目前只有1KB,2KB,4KB的取值 |
关于连接文件
在windows系统中,连接文件就像是一个快捷方式,但linux就没有那么简单
一、文件是怎么读取的?
在Linux中,一个文件分为两个部分,一个是文件的权限和属性,另外一个是文件的具体内容,这两者分别存放在inode块和block块中。而每个block块都有一个索引号码,这个索引号码会被记录在inode里面。一个文件可能会很大,所以需要多个block块来存放一个文件的所有内容。每个block的索引都会被记录在inode里面。同时,每个单一文件只允许有一个inode块。所以读取一个文件的流程是这个样子的,先读取这个文件inode块里面存放的所有索引号码,然后按照号码去寻找对应的block块,最后读取block块里面的内容。
文件的inode是怎么被读取的?
通过目录读取。Linux是一个目录树结构,所有的文件全部存放在目录下,想要读取一个文件,必先读取其目录。一个目录也是由inode和block块构成的,区别是目录的block块中存放的是该目录下所有文件的文件名和该文件的inode号码的映射
举个例子:读取/bin/ln这个文件。

- 1.读取“/”目录,因为“/”是挂载点,所以可以知道挂载点的inode号码是2,
- 2.读取bin目录,通过“/”的inode找到“/”的block块,在这个block块里面查询看是否``有“bin”这个文件名字,找到这个名字并返回这个名字对应的inode号码,也就是130817。
- 3.通过编号为130817的inode块来找到对应block块,并查询是否有ln这个文件名,找到这个名字并返回对应的inode号码,也就是130894。
- 4.在130894这个inode中,来查询所有保存了block索引的记录,并读取对应索引的block。
二、硬链接
在Linux中,生成这个所谓的“快捷方式”有两种,一种是硬连接,另外一种是软连接,先介绍硬连接。
举例说明:我现在要在“/root”目录下创建一个对“/bin/ln”的硬连接,连接名字是ln2。那么Linux它会这样做,它会在“/root”目录的block块中添加一条文件名和inode号码的映射,文件名自然是ln2,inode号码就是“/bin/ln”文件的inode号码。

在“/root”目录下生成了ln2的文件,如果双击它,就会执行“/bin/ln”文件。看看最前面的号码130894,两个都是一样的,表示ln和ln2都是连接到同一个inode号码。
还有一点就是,注意到输出数据中的2吗?就是在-rwxr-xr-x后面的,代表的是有多少个硬连接连接到了这个文件。
三、软连接
- 对于硬链接来说,创建一个硬链接只是在目录block块里面创建一条映射记录,并没有多占用额外的inode块及block块。
- 对于软连接来说,创建软连接就是在创建文件,由于一个文件对应有一个inode块以及至少一个block块,新建一个软连接就至少会占用两个block块。其中inode的作用就不用说了,自然是用来记录属性权限和block索引的。但是软连接的block块作用是保存你要连接的文件的完整路径。
注意区别,两个文件的inode号码不一样!!说明我们新建了一个文件。还有,你们看到了那个数字7吗,这个位置的值通常代表文件内容的大小,可是为什么是7呢?记得刚刚说的“软连接的block块是用来保存你要连接的文件的文件名”,“/bin/ln”正好7个字符,一个字符就是一个byte,所以文件内容是7个byte。(其他的区别读者们自己去体会)
四、软连接和硬连接的区别。
软连接会占用额外inode块和block块,而硬连接不会。(忽略block块恰好被沾满的情况)
如果我将“/bin/ln”这个文件删除,那么作为硬连接的“/root/ln2”还是可以正常工作,因为文件被存放在block块中,文件删除只不过是抹去了block上的数据。(这里的正常工作指的是还能够访问之前“/bin/ln”所占用的block块)
如果将“/bin/ln”删除,那么软连接“/root/ln3”将无法工作,它会显示找不到源文件。因为软连接保存的是路径,现在这个路径已经没有了。
磁盘分区: 命令【fdisk】
进入磁盘设备命令【fdisk 磁盘名】

| w | q |
|---|---|
| 此命令会使你的所有对磁盘的操作全部生效,如果不清楚自己所作所为的后果,此命令请慎用。 | 退出磁盘分区程序,之前所有的操作都无效,当然前提是你没有用w。 |
| p | d |
| 查看磁盘分区信息 | 删除分区 |
| n | |
| 添加分区 | |
| 将分好的磁盘格式化 | |
| 选择一种文件格式将新建的分区初始化,是为了让Linux能够识别这个分区里面的文件。所谓的文件格式就是,磁盘的文件是按照怎样的一种形式组织起来,之前提到的文件由两部分组成的,比如inode,block等,就是Linux的所能够识别的文件格式的一种。 | |
| 格式化命令- --mkfs -t | |
| mkfs -t 文件格式 设备文件名 |
PS:还有一个命令是mke2fs,自行man。
检查磁盘是否有问题: 命令 【fsck】
值得注意的一点是:fsck命令可能会损坏文件系统,所以被fsck扫描的分区请不要被挂载
挂载/卸载磁盘
1.挂载磁盘【mount <设备名称> <挂载目录>】
注意点:
- 挂载的目录必须为空,否则目录里面的数据会被隐藏,直到设备被卸载才会显现。
- 挂载的目录每次只能挂载一个设备。
- 同一个设备每次只能挂载到一个目录
挂载过程: - 挂载时,系统要知道设备是何种文件系统,是ext4还是其他的什么。
- 然而系统是不知道设备是什么文件系统系统的,所以它要测试设备是哪一种文件系统,看自己能不能支持,如果支持,则对设备进行挂载。
- 对于Linux支持的文件系统,Linux都会有一个驱动,它会利用这个驱动来测试文件系统的superblock,看能不能匹配。(几乎每个文件系统都会有superblock)
有这个文件很重要:
/proc/filesystems
/lib/modules/$(uname -r) /kernel/fs/
2.卸载磁盘【umount <设备名字/挂载点>】
3.开机挂载
需要配置修改配置文件:/etc/fstab

对应参数:
| file system | mount point | type | options | dump | pass |
|---|---|---|---|---|---|
| 设备名称。磁盘号的UUID | 挂载点 | 分区类型.linux分区一般为ext4。 | 挂载参数。一般为defaults。常用参数如下: auto:开机自动挂载。 default:按照大多数永久文件系统的缺省值设置挂载定义。 noauto:开机不自动挂载。 nouser:只有超级用户可以挂载。 ro:按只读权限挂载。 rw:按可读可写权限挂载。 user:任何用户都可以挂载。 | 磁盘备份。默认为0,表示不备份。 | 磁盘检查。默认为0,表示不检查。 |
查看分区的uid信息


浙公网安备 33010602011771号