Linux挂载与软连接

在使用 Linux 时,有时候会因为初始时磁盘空间分配估计不足,使用中需要将挂载点扩容的情况,这就需要我们挂载新的磁盘。但是如果我们在 Linux 运行过程中挂载磁盘, Linux 又不能在不重启的情况下自动识别,这时就需要我们使用下面的操作使 Linux 在不重启的情况下识别新挂载的磁盘。
首先,查看主机总线号,磁盘肯定是有总线连接着的:
[root@localhost ~]# ls /sys/class/scsi_host/
host0 host1 host2
其次,重新扫描SCSI 总线来添加设备:
[root@localhost ~]# echo “- - -” > /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo “- - -” > /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo “- - -” > /sys/class/scsi_host/host2/scan
之所以扫描的是SCSI 总线,是因为我们添加的是 SCSI 类型的磁盘。
再次,查看一下新挂载的磁盘,此时 Linux 已经可以识别新添加的磁盘:
[root@localhost ~]# fdisk -l
最后,对新挂载的磁盘进行分区,格式化,挂载即可使用。
 
补充:为挂载点扩容
假设之前我们有一个挂载点为 /data ,此时 /data 已经写满,但依然想在 /data 下添加新的数据,这时可以使用软链接将 /data 软链接到一个新挂载的磁盘分区上以实现扩容。具体步骤如下所示。
(1)创建一个目录,以便稍后作为挂载点:
[root@localhost ~]# mkdir /newdata
(2)将 /dev/sdb1 分区挂载到 /newdata 下:
[root@localhost ~]# mount /dev/sdb1 /newdata
(3)创建 /data 到 /newdata 的软链接:
[root@localhost ~]# ln -s /newdata /data
此时在 /data 目录下会有一个软链接文件 newdata 指向 /newdata/ ,即 newdata -> /newdata/ 。这样一来,只要我们向 /data/newdata 下写文件,实际就写入了 /newdata/ 目录下,相当于我们为原 /data 挂载点新增加了一部分使用空间。也可以手动指定该软链接文件的名称:
[root@localhost ~]# ln -s /newdata /data/customed_name
这样就有 /data/customed_name -> /newdata 。
注:我们也可以利用软链接的这一用途,将比较大的日志文件链接到存储空间充足的磁盘分区的挂载点上。举例来说,如果 /opt/tomcat/logs/catalina.out 日志文件输入很多,占用空间很大,而 /opt 挂载点中所剩空间已经不多,存在溢出风险,通过下面两步就可以将该日志文件软链接到另一个磁盘分区的挂载点上:
[root@localhost ~]# touch /newdata/catalina_link.out
[root@localhost ~]# ln -sf /newdata/catalina_link.out /opt/tomcat/logs/catalina.out
这里还需要注意三点,一是必须先创建一个被链接的文件,否则软链接后失败;二是强制软链接会清空之前 /opt/tomcat/logs/catalina.out 日志文件中的全部内容清空;三是需要重启 tomcat 目录后才能继续向 /opt/tomcat/logs/catalina.out 写入。






目前的项目开发过程中都是采用分布式,在上传文件的时候,文件不一定会在同一台机器中,因此就需要跨机器共享文件,在这里就简单的采用nfs实现跨机器的文件共享。
1、安装nfs和rpcbind(在centOS6之前是portmap)
      检查自己的电脑是否已经默认安装了nfs和rpcbind:
[plain] view plain copy
[root@unsion2 ~]# rpm -aq | grep nfs  
nfs-utils-1.2.3-54.el6.x86_64  
nfs4-acl-tools-0.3.3-6.el6.x86_64  
nfs-utils-lib-1.1.5-9.el6.x86_64  
[root@unsion2 ~]# rpm -aq | grep rpcbind  
rpcbind-0.2.0-11.el6.x86_64  
这表示系统已经默认安装。如果没有安装也没事,可以采用下面的命令安装(需要联网,会用虚拟机的就不多说怎么联网了):
[plain] view plain copy
[root@unsion2 ~]# yum install nfs-utils rpcbind  
2、配置nfs的配置文件和hosts文件
      创建需要共享的目录:
[plain] view plain copy
[root@unsion2 ~]# cd /tmp  
[root@unsion2 tmp]# mkdir test  
配置nfs的配置文件:
[plain] view plain copy
[root@unsion2 ~]# vim /etc/exports  
在这个文件中添加需要输出的目录,如:
/tmp/test 192.168.56.202(rw)
/tmp/test:表示的是服务器共享输入的目录
192.168.56.202:表示可以挂在服务器目录的客户端ip
(rw):表示该客户端对共享的文件具有读写权限
      配置hosts文件:
[plain] view plain copy
[root@unsion2 ~]# vim /etc/hosts  
      在文件中添加下面这句话
      192.168.56.201 unsion2
      192.168.56.201:表示服务器本机的ip地址
      unsion2:表示服务器的机器名
3、启动nfs和rpcbind服务、检测服务状态、已经设置服务开机启动
启动服务:
[plain] view plain copy
[root@unsion2 ~]#service rpcbind start  
[root@unsion2 ~]#service nfs start  
测试状态:
[plain] view plain copy
[root@unsion2 ~]#service rpcbind status  
rpcbind (pid  1063) 正在运行...  
[root@unsion2 ~]#service nfs status  
rpc.svcgssd 已停  
rpc.mountd (pid 2193)正在运行...  
nfsd (pid 22092208 2207 2206 2205 2204 2203 2202) 正在运行...  
rpc.rquotad (pid2188) 正在运行...  
自动启动:
[plain] view plain copy
[root@unsion2 ~]#chkconfig --list rpcbind  
[root@unsion2 ~]#chkconfig --list nfs  
4、检测服务器的nfs状态
[plain] view plain copy
[root@unsion2etc]# showmount -e  //查看自己共享的服务  
Export list forunsion2:  
/tmp/test192.168.56.202  
注意:在执行这个命令的时候如果出现错误,说明DNS不能解析当前的服务器,那就是hosts文件没有配置。
5、客户端挂载NFS中共享的目录
首先是启动nfs和rpcbind服务。
查询服务端共享的文件目录:
[plain] view plain copy
[root@unsion1tmp]# showmount -e 192.168.56.201  
Export list for192.168.56.201:  
/tmp/test192.168.56.202  
创建挂载目录:
[plain] view plain copy
[root@unsion2 ~]# cd/tmp  
[root@unsion2 tmp]#mkdir hehe  
挂载服务端的共享目录:
[plain] view plain copy
[root@unsion1tmp]# mount 192.168.56.201:/tmp/test/ /tmp/hehe/  
mount.nfs: accessdenied by server while mounting 192.168.56.201:/tmp/ test /  
看到此信息表示成功挂载。
查看挂载的状态:
[plain] view plain copy
[root@unsion1tmp]# mount | grep nfs  
sunrpc on/var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)  
nfsd on/proc/fs/nfsd type nfsd (rw)  
192.168.56.201:/tmp/test/on /tmp/hehe type nfs (rw,vers=4,addr=192.168.56.201,clientaddr=192.168.56.202)  
6、测试共享
服务器创建文件:
[plain] view plain copy
[root@unsion2 /]#cd /tmp/test  
[root@unsion2test]# touch 123456  
客户端查看文件:
[plain] view plain copy
[root@unsion1 /]#cd /tmp/hehe  
[root@unsion1hehe]# ll  
总用量 0  
-rw-r--r--. 1 rootroot 0 2月  25 15:37 123456  
Linux 系统中,创建连接(符号链接)是一种常见的文件管理操作,其作用和原因主要包括以下几点: 1. **提供灵活的访问路径** 连接允许用户通过不同的路径访问同一个文件或目录,从而简化文件系统的导航。例如,可以将一个深层嵌套的目录或文件链接到一个更易访问的位置,提高操作效率[^5]。 2. **节省存储空间** 复制文件不同,连接并不复制原始文件的数据,而是仅创建一个指向原始文件的快捷方式。这种方式可以有效节省磁盘空间,同时避免数据冗余。 3. **维护多个版本的兼容性** 在系统升级或维护多个件版本时,连接可以用于指向当前使用的版本。例如,通过创建指向特定版本的连接(如 `python` 指向 `python3.10`),可以确保脚本和应用程序始终调用正确的版本,而无需修改代码[^1]。 4. **简化文件路径管理** 连接可以将长路径或复杂路径映射到更简洁的路径,使用户在操作时更加便捷。例如,将 `/usr/local/bin/python3` 映射到 `/usr/bin/python`,使得用户可以直接使用 `python` 命令调用解释器[^1]。 5. **支持跨文件系统的链接** 硬链接不同,连接可以跨越不同的文件系统进行链接。这种特性使其在处理分布在多个磁盘或挂载点上的文件时具有更高的灵活性[^2]。 6. **便于维护和更新** 如果原始文件或目录的位置发生变化,只需更新连接的目标路径即可,无需修改所有引用该文件的脚本或程序。这在大规模系统维护中尤为有用[^4]。 7. **避免直接操作原始文件的风险** 在某些情况下,直接操作原始文件可能会带来风险,例如误删或修改。通过连接访问文件,可以在一定程度上降低对原始文件的直接操作频率,从而减少意外修改的可能性[^5]。 ### 示例命令 创建连接的常用命令为 `ln -s`,例如: ```bash ln -s /usr/local/bin/python3 /usr/bin/python ``` 此命令创建了一个名为 `python` 的连接,指向 `/usr/local/bin/python3`[^1]。 ### 删除连接 删除连接可以使用 `rm` 命令,例如: ```bash rm /usr/bin/python ``` 需要注意的是,删除连接不会影响原始文件或目录的内容[^5]。 ### 修改连接 在 Ubuntu 系统中,可以直接使用 `ln -s` 或 `ln -snf` 命令修改连接的目标路径;而在 CentOS 系统中,则需要使用 `ln -snf` 命令[^5]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值