linux的文件link占用空间的差别,Linux 文件系统磁盘空间与连接文件

磁盘与目录的容量

我们知道磁盘的整体数据hi在superblock块中,但是各文件的容量则在inode中记载。

df:列出文件系统的整体磁盘使用量

5d2c1e13d4b7cb1bfe16191dd79020fb1cf.png

ab2eaaa4c1794a4ddf4c2684b6ce4d51.png

由于df主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在Super block内的信息,所以这个命令显示结构的速度非常快。在显示的结果中

你需要特别留意的是那个根目录的剩余容量,因为我们所有的数据都是由根目录衍生出来的。因此当根目录的剩余容量剩下0时,那你的系统可能问题就大了。

如果使用-a这个参数时,系统会出现/pro这个挂载点,但是这里面的东西都是0,不要紧张。/proc的东西都是Linux系统所需加载的系统数据,而且是挂载在内存

当中的,所以当然没有占任何内存。

至于/dev/shm/目录,是利用内存虚拟出来的磁盘空间。由于是通过内存虚拟出来的磁盘,因此你在这个目录下面新建任何数据文件时,访问速度是非常快速的

(在内存工作)。不过,由于是在内存虚拟出来的,因此这个文件系统的大小在每个主机上都不一样,而且新建的东西下次开机就消失了,因为是在内存中。

du:评估文件系统的磁盘使用量

ef804904f1391679ed625a665bec995e.png

du这个命令会直接到文件系统内查找所有的文件数据,默认将所有文件的大小列出来,然后最终的容量会加总一次,如果想要列出

某目录下的全部数据,加上-S,减少子目录的计算。

连接文件:ln

Linux下面有两种连接文件:一种是类似Windows的快捷方式功能的文件,可以让你快速连接到目标文件;另一种是通过文件系统的inode

连接来产生新文件名,而不是产生新文件,这种称为硬连接。

hard link (硬连接)

每个文件都会占用一个inode,文件内容由inode的记录来指定。想要读取文件,必须经过目录记录的文件名来指向到正确的inode号码才能

读取。文件名只与目录有关,但是文件内容与inode有关。如果有多个文件名对应到同一个inode号码呢那就是hard link。hard link 是在某个目录下

新建一条文件名连接到某inode号码的关联记录。

cd4faa22515a217c4314ea408d6f8bebce9.png

示意图:

c972671cc3556b9d43f5e08ff1266d44c03.png

使用hard link最大的好处就是安全,如果将任何一个“文件名”删除,inode与block都还是存在。可以通过另一个文件名读取正确的文件数据。不论你

使用哪个“文件名”来编辑,最终的结果都会写入到相同的inode与block中。

hard link限制:

不能跨文件系统

不能连接到目录

symbolic link(符号连接快捷方式)

symbolic link就是再创建一个独立文件,而这个文件会让数据的读取指向它连接的那个文件的文件名,当源文件删除之后,symbolic link的文件会

显示“无法打开某文件”。实际上是找不到源文件而已。

创建一个符号连接文件到/etc/crontab

92293c0d2c133bf0b324866c2b775dfb370.png

从上面结果可以知道两个文件指向不同的inode号码,当然就是两个独立的文件存在。而且连接文件的重要内容就是它会写上目标文件的“文件名”

图示:

66574f12b52f9f1adf28b1426be9b59c177.png

1号inode读取到连接文件的内容仅有文件名,根据文件名连接到正确的目录去取得目标文件inode,最终得到正确数据。如果目标文件被删除,那么整个环节

就无法进行下去了。由symbolic link创建的文件为一个独立的新文件,会占用掉inode和block。似乎hard link比较安全,因为即使某个目录下的关联数据被删除

也没有关系。不过由于hard link显示太多,反而是symbolic link使用广泛。

ln命令制作连接文件

0ee5f22fad3eb8bde2305805f79cb475949.png

095c6e9ea229340a5e3afdf59115b798.png

/tmp这个目录是给大家作为暂存盘用的,所以你会发现,过去我们在进行测试时都会将数据移动到/tmp下面去练习,因此,没事的时候可以将

/tmp下的怪异数据清一清。

目录的连接数

如果在新建目录时,它默认的连接数是多少?“空目录”里面至少会有“.”与".."这两个目录,例如,新建一个目录“/tmp/testing”,基本上会有三个

东西:

/tmp/testing

/tmp/testing/.

/tmp/testing/..

/tmp/testing与/tmp/testing/.是一样的,代表/tmp/testing。而/tmp/test/..代表/tmp。所以说当新建一个目录时,新目录的连接数为2.而上层目录的连接

会增加1.

3de70fc8bf1d5d6189a4ba339e914ed121f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值