Linux入门真经-033文件系统的挂载与卸载

2024-03-04 17:48

本文主要是介绍Linux入门真经-033文件系统的挂载与卸载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

1、手动挂载文件系统

 

我们已经知道,Linux使用的是倒状的树形结构,一切都源于根目录。

因此,根文件系统以外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;

如下图,当我们要使用sdb1上的空间时,我们可以在现有的文件层级目录中新建一个目录forsdb1。在挂载之前,forsdb1应该指向的是/所在分区的某一个物理空间。当sdb1挂载到forsdb1之后,forsdb1所指向的就改为sdb1分区上的某一段物理空间,因此,我们访问forsdb1的目录的时候,其实是在访问sdb1这个分区中的数据。linux通过这种机制来使用其他硬盘中的空间。

如果在挂载之前,forsdb1目录下面有数据,那么挂载之后这些数据将被暂时隐藏起来。(因为原本forsdb1指向的是这些数据,挂载之后指向了另一个分区,相当于通往这些数据的入口不见了)。因此,建议作为挂载点的目录,在挂载之前不要存放其他数据。但是将分区卸载后,forsdb1会指回原本的数据。

作为挂载点的目录:
(1) 应该事先存在,如果事先不存在,应该手动创建;

(2) 应该是未被或不会被其它进程使用到的目录;

(3) 挂载点下原有的文件将会被隐藏;

 

挂载方法:mount命令

mount [-nrw]  [-tvfstype]  [-o options] device  dir

命令选项:

-r:readonly,只读挂载;

-w:read and write, 读写挂载;

-n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;-n用于禁止此特性;

-t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;

-L LABEL:挂载时以卷标的方式指明设备;

 -o options:挂载选项

 sync/async:同步/异步操作;

atime/noatime:文件或目录在被访问时是否更新其访问时间戳;

diratime/nodiratime:目录在被访问时是否更新其访问时间戳;

 

remount:重新挂载;

acl:支持使用facl功能;

# mount -o acl  device dir

ro:只读

rw:读写

dev/nodev:此设备上是否允许创建设备文件;

exec/noexec:是否允许运行此设备上的程序文件;

auto/noauto:

是否自动挂载

      user/nouser:是否允许普通用户挂载此文件系统;

suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;

如果以上都不指定,默认的选项是:suid,dev, exec, auto, nouser, async, and relatime.

 

举例:

将/dev/sdb1挂载到/opt目录下。

 

[root@localhost ~]# mount /dev/sdb1 /opt

 

可以使用df -h查看挂载情况

 

[root@localhost opt]# df -h

Filesystem               Size  Used Avail Use% Mounted on

/dev/mapper/centos-root   17G 1.1G   16G   6% /

devtmpfs                 476M     0 476M   0% /dev

tmpfs                    488M     0 488M   0% /dev/shm

tmpfs                    488M  7.7M 480M   2% /run

tmpfs                    488M     0 488M   0% /sys/fs/cgroup

/dev/sda1               1014M  130M 885M  13% /boot

tmpfs                     98M    0   98M   0% /run/user/0

/dev/sdb1                9.4G   33M 9.3G   1% /opt

[root@localhost opt]#

 

可以发现sdb1已经mounted on /opt这个目录上了。此后,我们在opt目录及其子目录上新增的文件,使用的都是sdb1的空间

 

挂载光盘:

 

[root@localhost opt]# mount /dev/sr0 /mnt/

mount: /dev/sr0 is write-protected,mounting read-only

[root@localhost opt]# cd /mnt/

[root@localhost mnt]# ls

CentOS_BuildTag  EULA images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7

EFI              GPL   isolinux Packages RPM-GPG-KEY-CentOS-7  TRANS.TBL

[root@localhost mnt]#

 

umount:卸载分区或挂载点

umount 分区/挂载点

注意:正在被进程访问到的挂载点无法被卸载;

查看哪些进程在使用该挂载点:(lsof和fuser最小安装不自带,现在了解即可,以后学会yum或者rpm之后再来装这两个命令)

lsof MOUNT_POINT

或者

fuser -v MOUNT_POINT

 

终止所有正在访问某挂载点的进程:

fuser -km  MOUNT_POINT

 

2、开机自动挂载文件系统

 

之前多次强调过:我们使用命令执行之后,通常会立即生效,但是相关配置只是在内存中启用,重启之后还是会时效。要永久地更改配置一般要修改配置文件,修改配置文件不会立即生效,但是重启进程或重启服务器之后则会生效。

因此,只用mount命令进行挂载,重启之后是无法实现自动挂载的。

自动挂载需要修改/etc/fstab文件(不陌生吧,之前举例经常拿这个文件玩~)。

 

[root@localhost mnt]# cat /etc/fstab

 

#

# /etc/fstab

# Created by anaconda on Tue Jul 2418:32:49 2018

#

# Accessible filesystems, by reference, aremaintained under '/dev/disk'

# See man pages fstab(5), findfs(8),mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root /                       xfs     defaults       0 0

UUID=d36d93ea-2551-4c6a-a3c9-df98d458b5bc/boot                   xfs     defaults        0 0

/dev/mapper/centos-swap swap                    swap    defaults        0 0

[root@localhost mnt]#

 

这个文件的格式是这样的:

一行里有6个字段,中间用空格或者tab分隔:

(1) 要挂载的设备:

可以用设备文件表示,也可以是LABEL、UUID(cenots7目前默认使用此方式)

(2) 挂载点

         swap类型的设备的挂载点为swap;

(3) 文件系统类型;

 

(4) 挂载选项

defaults:使用默认挂载选项;

如果要同时指明多个挂载选项,彼此间以逗号分隔;

         如:defaults,acl,noatime,noexec

 

(5) 转储频率(备份频率)

0:从不备份;

1:每天备份;

2:每隔一天备份;

 

(6) 自检次序

0:不自检;

1:首先自检,通常只能是根文件系统可用1;

2:次级自检

3:2之后自检

……

不同设备可以使用同一个自检次序

 

使用mount -a可以挂载此文件中支持挂载的所有文件。

我们来修改fstab使得sdb1能够开机自动挂载:

 

[root@localhost~]# vi /etc/fstab

 

在fstab里增加这一行:

/dev/sdb1      /opt   xfs     defaults 0 0

修改后的fatab文件:

 

[root@localhost ~]# cat /etc/fstab

 

#

# /etc/fstab

# Created by anaconda on Tue Jul 2418:32:49 2018

#

# Accessible filesystems, by reference, aremaintained under '/dev/disk'

# See man pages fstab(5), findfs(8),mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root /                       xfs     defaults       0 0

UUID=d36d93ea-2551-4c6a-a3c9-df98d458b5bc/boot                   xfs     defaults        0 0

/dev/mapper/centos-swap swap                    swap    defaults        0 0

/dev/sdb1         /optxfs    defaults0 0

[root@localhost ~]#

 

重启后再用df -h命令查看,会发现实现了自动挂载。

 

下节对文件系统相关知识和常用命令进行补充。

关注本公众号获取每日更新

这篇关于Linux入门真经-033文件系统的挂载与卸载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773958

相关文章

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信