Linux的磁盘与文件系统(1)-------inode,block,df和du,软硬链接

inode : 记录文件的属性,一个文件占用一个inode
block  : 实际记录文件的内容,若是文件太大时,会占用多个block。
Superblock : 就是记录整个filesystem相关信息的地方。


data block 就是用来放置文件内容数据地方。
在Ext2文件系统中所支持的block大小就有1k,2k,4k三种。
在格式化时,block的大小就已经固定了。而且每一个block都会有编号,以方便inode的记录。

superblock记录的信息主要有:
•block 与inode的总量
•未使用与已使用的inode/ block 数量
•block 与inode的大小(block 为1, 2, 4K,inode为128 bytes)
•filesystem的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck) 的时间等文件系统的相关信息
•一个valid bit 数值,若此文件系统已被挂载,则valid bit 为0 ,若未被挂载,则valid bit 为1


block bitmap 记录的是使用与未使用的block 号码,至于inodebitmap 则是记录使用与未使用的inode号码!


磁盘的目录和容量

我们知道磁盘的整理数据就是在superblock中,但是每个个别文件的容量则是在inode中记载的。

df    :    列出文件系统的整体磁盘使用量
du   :    评估文件系统的磁盘使用量(常用在推估目录所占容量)

df中要记住的几个常用选项
-h    : 用人们常见的方式显示大小。比如10M,10G,10T.





du   

-a   :  列出所有的文件和目录容量
-h   :       以人们易读的容量格式显示
-s    :       列出总量,而不列出每个个别的目录占用容量
-k    :       以kbytes 列出容量显示






ln
在Linux 底下的链接有两种,一种是类似Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录);另一种则是透过文件系统的inode连结来产生新档名,而不是产生新文件!这种称为实体链接(hard link)。

Hard Link (实体链接, 硬链接或实际链接)
•每个文件都会占用一个inode,文件内容由inode的记录来指向;
•想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读取。


所以简单的说:hard link 只是在某个目录下新增一笔档名链接到某inode号码的关联记录而已。

,假设我系统有个crontab他是/etc/crontab的实体链接,也就是说这两个档名连结到同一inode,自然这两个文件名的所有相关信息都会一模一样(除了文件名之外)。实际的情况可以如下所示:




实体链接不能够跨Filesystem,不能link目录。

Symbolic Link (符号链接,亦即是快捷方式)
Symbolic link 就是在创建一个独立的文件,而这个文件会让数据的读取指向他link 的那个文件的档名!由于只是利用文件来做为指向的动作,所以,当来源档被删除之后,symbolic link 的文件会『开不了』,会一直说『无法开启某文件!』。实际上就是找不到原始『档名』而已啦!





关于目录的链接数量
如果创建目录时,他默认的link 数量会是多少?让我们来想一想,一个『空目录』里面至少会存在些什么?
存在. 与.. 这两个目录,那么,当我们创建一个新目录名称为/tmp/testing 时,基本上会有三个东西,那就是:
n/tmp/testing
n/tmp/testing/.
n/tmp/testing/..
而其中/tmp/testing 与/tmp/testing/. 其实是一样的!都代表该目录,而/tmp/testing/.. 则代表/tmp这个目录,所以说,当我们创建一个新的目录时,新的目录的link 数为2 ,而上一级目录的link 数则会添加1。




猜你喜欢

转载自blog.csdn.net/lvxiaojiahuo/article/details/79963634