linux 软链接_Linux文件管理:文件软硬链接

系统链接文件

文件有文件名和数据,在Linux上被分成两个部分:用户数据(user data)与元数据(metadata)

用户数据:文件数据块(data block),数据块是记录文件真实内容的地方,我们将其称为Block
元数据:文件的附加属性,例如:文件大小,创建时间,属组,属主...等,我们称其为Inode

在Linux中,inode是文件元数据的一部分,但其并不包含文件名,inode号即索引节点号

文件名仅是为了方便人们的记忆和使用,系统或者程序通过inode号寻找正确的文件数据块。

下图为文件读取的流程:

66807e680eecc5c24e64745e713f4d82.png

Linux系统引入了两种链接:
1.硬链接(hard link)
2.软链接(又叫:符号链接即soft linksymbolic link

软链接

1.什么是软链接?

软链接相当于windows的快捷方式,软链接文件会将inode指向源文件的block

当我们访问这个软链接文件时,其实就是在访问源文件的本身。
1.那么当我们对一个文件创建多个软链接时,其实就是多个 inode指向同一个 block
2.那么当我们删除软链接文件时,其实只是删除了一个 inode的指向,并不会对源文件造成影响。
3.如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。
[root@db04 ~]# touch soft_link
[root@db04 ~]# ln -s soft_link /tmp/soft_link
[root@db04 ~]# ls -li soft_link /tmp/soft_link
662184 -rw-r--r-- 1 root root 0 6月   1 10:42 soft_link
915769 lrwxrwxrwx 1 root root 9 6月   1 10:42 /tmp/soft_link -> soft_link

72a0d812791191404d211731cf4b7474.png

2.软链接的应用场景
1)软件升级
2)代码发布
3)不方便移动的目录
4)数据回滚
5)程序读取

硬链接

1.什么是硬链接

若一个inode号对应多个文件名,则称这些文件为硬链接。换句话说,硬链接就是同一个文件使用了多个别名,如下图所示hard link就是file的一个别名,他们有共同的inode

[root@db04 ~]# ls -li /tmp/hard_link
662189 -rw-r--r-- 2 root root 0 6月   1 12:21 /tmp/hard_link
[root@db04 ~]# ls -li hard_link
662189 -rw-r--r-- 2 root root 0 6月   1 12:21 hard_link

889d05ed040682e001fa3c779e2c2b05.png

总结:硬链接与软链接的区别

1)创建命令不同
    软链接:ln -s
    硬链接:ln
2)目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以
3)硬链接文件与源文件inode相同,软链接文件与源文件inode不同
4)删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
5)删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响

面试题:当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。

1T磁盘,用户数据把inode沾满了

[root@db04 ~]# df -i
Filesystem                   Inodes IUsed   IFree IUse% Mounted on
/dev/mapper/vg_db01-lv_root 1152816 76391 1076425    7% /
tmpfs                        238319     1  238318    1% /dev/shm
/dev/sda1                    128016    39  127977    1% /boot

#模拟
[root@db04 ~]# dd if=/dev/zero of=/opt/disk bs=1K count=1024
[root@db04 ~]# mkfs.ext4 -i 1024 /opt/disk
[root@db04 ~]# mkdir /data1
[root@db04 ~]# mount -t ext4 -o loop /opt/disk /data1
[root@db04 data1]# touch file{1..2000}
touch: 无法创建"file1014": 设备上没有空间
touch: 无法创建"file1015": 设备上没有空间
touch: 无法创建"file1016": 设备上没有空间
touch: 无法创建"file1017": 设备上没有空间
touch: 无法创建"file1018": 设备上没有空间
[root@db04 data1]# df -h
Filesystem                   Size  Used Avail Use% Mounted on
/dev/mapper/vg_db01-lv_root   18G  2.0G   15G  12% /
tmpfs                        931M     0  931M   0% /dev/shm
/dev/sda1                    485M   39M  421M   9% /boot
/opt/disk                    891K   39K  801K   5% /data1

[root@db04 data1]# df -i
Filesystem                   Inodes IUsed   IFree IUse% Mounted on
/dev/mapper/vg_db01-lv_root 1152816 76393 1076423    7% /
tmpfs                        238319     1  238318    1% /dev/shm
/dev/sda1                    128016    39  127977    1% /boot
/opt/disk                      1024  1024       0  100% /data1

硬连接数计算

[root@db04 ~]# mkdir hard
[root@db04 ~]# ll hard -d
drwxr-xr-x 2 root root 4096 6月   1 12:50 hard
[root@db04 ~]# cd hard
[root@db04 hard]# mkdir test1
[root@db04 ~]# ll -d hard
drwxr-xr-x 3 root root 4096 6月   1 12:50 hard
[root@db04 ~]# cd hard
[root@db04 hard]# touch test
[root@db04 ~]# ll -d hard
drwxr-xr-x 3 root root 4096 6月   1 12:50 hard
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值