什么是软链接?

    文件系统使用inode来组织和管理文件。每个文件系统都有一定数量的inode,其数量在文件系统创建时就确定了,并且通常是固定的。当我们创建新文件时,系统会分配一个空闲的inode给该文件,并将文件与inode关联起来。这样,我们可以通过inode来唯一标识和查找文件,而不仅仅通过文件名。这就类似于图书管理员在每本图书进入图书馆之前,会把该图书的信息记录在“管理手册”上,通过“管理手册”就可以准确无误的查找到该图书了。

    在linux文件系统中与inode相关的概念之一是软链接、硬链接,我们务必要了解,相信大家以后一定会用的上,尤其是服务器外接存储设备时。

    那么何为软链接呢?我们先做一个软链接给大家看看。

[root@localhost ~]# ln -s 大话linux之文件系统.txt 大话linux之文件系统new.txt

[root@localhost ~]# ls -l 大话linux之文件系统.txt 
-rw-r--r--. 1 root root 27 May 21 02:34 大话linux之文件系统.txt

[root@localhost ~]# ls -l 大话linux之文件系统new.txt 
lrwxrwxrwx. 1 root root 30 May 23 20:28 大话linux之文件系统new.txt -> 大话linux之文件系统.txt
链接的语法: ln [参数][源文件或目录][目标文件或目录]

参数-s表示生成软链接

[root@localhost ~]# ln -s 大话linux之文件系统.txt 大话linux之文件系统new.txt     表示对大话linux之文件系统.txt这个文件,做名为大话linux之文件系统new.txt  的软链接。

通过“ls -l 文件名”这个命令,我们可以看到大话linux之文件系统.txt  和 大话linux之文件系统new.txt 这两个文件的详细信息。

[root@localhost ~]# ls -l 大话linux之文件系统.txt
-rw-r--r--. 1 root root 27 May 21 02:34 大话linux之文件系统.txt

-rw-r--r--是什么意思呢?大家数一数总共有多少个字符,总共有10个字符。第一个字符表示文件的类型,“-”表示普通文件。后9 个字符表示文件或目录的访问权限,分别对应三个字符一组的 rwx 权限。前三个字符表示所有者的权限,中间三个字符表示所属组的权限,后三个字符表示其他用户的权限。

  • r 表示读取权限
  • w 表示写入权限
  • x 表示执行权限
  • - 表示没有对应权限

[root@localhost ~]# ls -l 大话linux之文件系统new.txt
lrwxrwxrwx. 1 root root 30 May 23 20:28 大话linux之文件系统new.txt -> 大话linux之文件系统.txt

我们看看新建的软链接信息,开头的“l"表示符号链接,表示大话linux之文件系统new.txt这个文件是个链接文件。大话linux之文件系统new.txt -> 大话linux之文件系统.txt表示这个链接文件的原始文件是大话linux之文件系统.txt。也就是说当你查看大话linux之文件系统new.txt这个文件时,系统其实找到的是大话linux之文件系统.txt这个原始文件,然后再根据原始文件的inode找到磁盘上存储文件的位置,然后读取文件,大话linux之文件系统new.txt这个文件相当于原始文件的路径一样。

软链接的一个很重要的应用是在当系统中某个目录或者文件需要经常接收数据,该目录或者文件将会随着时间的推移慢慢变满,而且由于某种原因目录或文件的路径和名称都不能更改,或者该分区不能扩容时,软链接就可以发挥其作用了。

1、首先我们看看原系统的设备信息

[root@localhost ~]# lsblk     
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 27.7G  0 part /
sr0     11:0    1 1024M  0 rom  


2、我们向系统中添加一块20G大小的磁盘

[root@localhost ~]# lsblk                          
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 27.7G  0 part /
sdb      8:16   0   20G  0 disk 
sr0     11:0    1 1024M  0 rom  

3、我们把这块磁盘挂载到该系统上

mkdir /new              //创建一个名为new的目录

mkfs -t ext4 /dev/sdb   //格式化新添加的磁盘

mount /dev/sdb /new/    //把格式化后的磁盘挂载到/new目录下

[root@localhost ~]# lsblk    //查看磁盘挂载情况
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   50G  0 disk 
├─sda1   8:1    0  300M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 27.7G  0 part /
sdb      8:16   0   20G  0 disk /new
sr0     11:0    1 1024M  0 rom  

4、找到经常要产生数据的目录,然后把该目录移动到/new下(也就是新加的磁盘/dev/sdb下),然后对移动后的目录做软链接。

[root@localhost ~]# mv /opt/ /new/              //假设我们要移动的目录是/opt目录,mv是移动命令

[root@localhost new]# ls             //通过ls命令我们看到/opt目录已经被移动到了目录/new下           
lost+found  opt

[root@localhost /]# ln -s /new/opt/ /opt      //做/ner/opt的软链接/opt

[root@localhost /]# ls -l                     //查看opt目录的详细信息
total 44
lrwxrwxrwx.   1 root root    7 Apr 25 00:52 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 May  7 19:43 boot
drwxr-xr-x.  19 root root 3300 May 25 00:56 dev
drwxr-xr-x. 146 root root 8192 May 25 01:48 etc
drwxr-xr-x.   2 root root    6 May 25 02:00 home
lrwxrwxrwx.   1 root root    7 Apr 25 00:52 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Apr 25 00:52 lib64 -> usr/lib64
drwxr-xr-x.   2 root root   88 May  8 00:42 lnmp
drwxr-xr-x.   2 root root    6 Apr 10  2018 media
drwxr-xr-x.   3 root root   17 Apr 25 01:02 mnt
drwxr-xr-x.   4 root root 4096 May 25 02:33 new
lrwxrwxrwx.   1 root root    9 May 25 02:06 opt -> /new/opt/
dr-xr-xr-x. 219 root root    0 May 25 00:55 proc
dr-xr-x---.  17 root root 4096 May 25 01:01 root
drwxr-xr-x.  44 root root 1280 May 25 01:49 run
lrwxrwxrwx.   1 root root    8 Apr 25 00:52 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 10  2018 srv
dr-xr-xr-x.  13 root root    0 May 25 00:56 sys
drwxrwxrwt.  29 root root 8192 May 25 02:37 tmp
drwxr-xr-x.  13 root root 4096 Apr 25 00:52 usr
drwxr-xr-x.  22 root root 4096 May  7 19:23 var



我们发现opt目录已经做好了软链接,

lrwxrwxrwx.   1 root root    9 May 25 02:06 opt -> /new/opt/

注意观察经过一系列操作现在新添加的磁盘变成了原始文件,系统在/opt下产生的数据实际上是放在了磁盘/dev/sdb上,/opt目录变成了软链接。

软链接颇有金庸武侠小说中吸星大法的感觉,/opt目录下产生的数据(武功)被源源不断的吸入到了/new/opt目录下,/new/opt目录成为了受益者(数据实际上存放在/new/opt下也就是磁盘/dev/sdb上),/opt目录实际上只是个空壳(不存放数据,也就不占用系统原始磁盘空间)。

                                                                                          -------下一章我们讲硬链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值