文件系统

操作文件系统 > 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信息

posted @ 2021-07-05 11:06  learner-hyb  阅读(142)  评论(0)    收藏  举报