CentOS挂载详解

接前文,CentOS下ext4、vfat文件系统创建、修改,以及swap分区管理

在Linux中,存储设备的使用一般分三步,分区,创建文件系统(格式化),挂载。

什么是挂载?个人理解,Linux通过倒树形的根文件系统来管理所有的文件,内核只能识别并管理根目录/所在的文件系统及其下的目录和文件。因此其他文件系统想要使用,都需要为其指定在现存目录下的访问入口。

将额外的文件系统,与现存的Linux能够识别的目录,建立起映射关系,实现将现存目录作为访问额外文件系统的入口的功能,这个过程称为挂载;用于访问额外文件系统的,现存文件系统中的指定目录,称为挂载点

挂载的逆过程,解除额外的文件系统与现存Linux能够识别的目录之间的映射关系,称为卸载


一,查询所有块设备信息

挂载需要两个参数,挂载的设备或文件系统,挂载点;
  1. 挂载点,是现有文件系统下的某个目录,是由我们自己指定的;
  2. 要挂载的设备或文件系统,其信息要如何获得?

1. 如果要挂载的是磁盘,可以尝试用fdisk -l命令配合dffree命令

为了更直观的比较,可以加上grep以过滤显示结果,例如:


fdisk配合df和free查看磁盘挂载情况

从结果中可以看到,swap分区只有sda3,并且大小和现有swap大小基本一样,可知swap分区已全部挂载。
已挂载磁盘只有sda1和sda2,sdb1没有挂载。

2. 使用blkid -o format命令

blkid命令用于显示所有块设备属性,无论该设备有没有被挂载

blkid -o format的format常用值有
  full:显示设备名称、UUID和文件系统类型
  value:显示UUID和文件系统类型(不是像full里那样的键值对,而是逐一打印UUID和TYPE的值)
  list:以对用户较友好的格式输出块设备属性
  device:输出设备名称

其中,full显示的内容=device+value,list格式最常用,格式也更友好

在format的多个值中比较推荐list或full,full模式下会显示设备名称、UUID和文件系统的类型

blkid -o full

而list模式更便于我们阅读,此时会显示设备名称、文件系统类型、表现名称、挂载点(会显示挂载点或未挂载状态)和UUID。如下图,根据提示很容易可以看得出/dev/sdb1/dev/sr0处于未挂载状态。

blkid -o list

3. 使用lsblk命令

lsblk:list block devices,显示块设备信息
用法:
  lsblk [选项] [<设备> ...]
常用选项:
  -f, --fs:输出文件系统信息
  -m, --perms:输出权限信息
  -p, --paths:打印完整设备路径

例如,lsblk -fmp,不指定设备则显示所有块设备信息,很容易看到sbd1和sr0没有挂载点,说明他们处于未挂载状态。

显示效果

通过上面三种方法,我们可以了解到目前尚未挂载的设备信息,即有哪些设备可以挂载。


二,文件系统的挂载

1,挂载和卸载命令的参数:
  挂载使用mount命令,设备、挂载点 两者都需要指明
  卸载使用umount命令,设备、挂载点 两者只需要指明其一

2,一般挂载

命令格式:mount [-nrw] [-t vfstype] [-o options] device dir
  
  device:指明要挂载的设备或文件系统,可以通过以下方式指定
    1)设备文件名称:例如/dev/sda5,默认使用这种方式
    2)卷标:-L 'LabelName',例如 -L 'MYDATA'
    3)UUID:-U UUID,即使设备名称或者卷标改了,也不影响识别
    4)伪文件系统(暂不介绍):proc,sysfs,devtmpfs,configfs
  
  dir:挂载点
    1)事先存在,并建议使用空目录,
    2)如果是长期挂载,尽量不要使用mnt和media目录
    3)处于busy状态(例如正在被访问的目录)的设备无法被卸载
  
  mount命令本身选项
    -r:readonly,只读挂载(整个分区只读);
    -w:read and write, 读写挂载;
    -n:默认情况下,设备挂载或卸载的操作会同步更新至/etc/mtab文件中;
      -n用于禁止此特性:挂载但不更新/etc/mtab文件;
    -t vfstype:指明要挂载的设备上的文件系统的类型;多数情况下可省略,此时mount会通过blkid来判断要挂载的设备的文件系统类型;
    -L LABEL:挂载时以卷标的方式指明设备;
      mount -L LABEL dir
    -U UUID:挂载时以UUID的方式指明设备;
      mount -U UUID dir
  
  -o options:挂载选项,多用于定义挂载时文件系统的特性
    sync/async:同步/异步操作;
    atime/noatime:文件或目录在被访问时是否更新其访问时间戳;
    diratime/nodiratime:目录在被访问时是否更新其访问时间戳;
    remount:重新挂载;
    acl:支持使用facl功能;
      # mount -o acl device dir
      # tune2fs -o acl device
      # mount -o remount,acl device dir #重新挂载并增加acl特性
    ro:只读,-o ro 等效于 -r
    rw:读写,-o rw 等效于 -w
    dev/nodev:此设备上是否允许创建设备文件;
    exec/noexec:是否允许运行此设备上的程序文件;
    auto/noauto:是否支持自动挂载,即是否支持mount -a,如果是noauto,那么即使在fstab中加入记录,启动时也不会自动挂载该设备;
    user/nouser:是否允许普通用户挂载此文件系统;
    suid/nosuid:是否允许程序文件上的suid和sgid特殊权限生效;
    
    defaults:使用默认挂载特性: rw, suid, dev, exec, auto, nouser, async, relatime(默认特性和CentOS版本及内核版本有关)
    特别的,如果指定的特性与defaults的默认特性冲突,以额外指定的特性为准,例如mount -o defaults,noauto device dir,默认特性是auto,额外指定noauto,device实际表现的挂载特性是noauto

mount的特殊用法:
  将一个目录绑定至另一个目录上,实现两个不同路径访问同一个目录:
    mount --bind 源目录 目标目录

3,挂载可移动设备或回环设备

  • 挂载光盘
      mount -r /dev/cdrom mount_point
      光盘设备文件一般名称是/dev/cdrom, /dev/dvd,其实都是链接文件,例如我的虚拟机上/dev/cdrom就指向/dev/sr0

    /dev/cdrom其实是个链接文件

  • 挂载U盘
      事先识别U盘的设备文件;

    挂载U盘的过程演示,U盘为FAT32文件系统

  • 挂载本地的回环设备,例如iso镜像或img镜像文件:
    # mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT
      注意/PATH/TO/SOME_LOOP_FILE替换为镜像文件的路径和文件名,MOUNT_POINT替换为挂载点路径

4,设置开机后自动挂载
  
  修改配置文件/etc/fstab,该文件中每一行定义一个要挂载的文件系统及相关属性,每一行的内容分为6个字段:
    (1) 要挂载的设备,可以是以下内容:
      设备文件的名称,如/dev/sda1
      设备的LABEL
      设备的UUID,CentOS 7中较多使用此种方式
      伪文件系统:如sysfs, proc, tmpfs等
    (2) 挂载点路径
      如果是swap类型的设备,挂载点就是swap
    (3) 文件系统类型,如ext4,xfs,btrfs,vfat等等;
    (4) 挂载选项,也就是mount -o命令的那些选项:
      defaults:使用默认挂载选项;
      如果要同时指明多个挂载选项,彼此间以逗号分隔,如:defaults,acl,noatime,noexec
    (5) 转储频率,已经很少使用:
      0:从不备份;
      1:每天备份;
      2:每隔一天备份;
    (6) 自检次序:
      0:不自检;
      1:首先自检,通常只能是根文件系统可用1;
      2:次级自检;

自动挂载和mount -a
  mount -a命令将自动挂载/etc/fstab文件中配置的设备,可以认为系统启动时会执行一次该命令以挂载已配置的设备。
  但自动挂载有个条件——该设备的挂载选项中没有noauto。换句话说,挂载选项中有noauto的设备在执行mount -a时不会被挂载。


三,查看已挂载的文件系统信息

1. 使用findmnt命令
  
  findmnt 命令将列出所有已挂载的文件系统或者搜索出某个文件系统,是查看文件系统时很常用的命令之一。findmnt 命令能够在 /etc/fstab/etc/mtab/proc/self/mountinfo 这几个文件中进行搜索。
  
  命令常用选项:
    -l:表示采用列表形式输出结果,默认采用树形输出结果
    --df 或 -D:以df类型输出结果,显示文件系统及设备空间使用情况
    -t TYPE:只输出文件类型为TYPE的结果
    
  参数:
    findmnt可以指定设备或挂载点,输出相关结果,不带任何参数则输出所有结果,例如:
      findmnt /dev/sda1
      findmnt /

结果如图所示

2. 使用blkid命令
  blkid -o list,在第一部分已经简单介绍过该命令的用法,这里不再重复。
  
3. 使用lsblk命令
  lsblk -fp [device],第一部分也已经介绍过,这里不再重复。
  
4. 使用df命令
  常用df -hT来查看已挂载设备的文件系统及其空间使用情况,-T表示查看文件类型,-h表示以方便识别的方式输出空间情况。
  更多用法请看man手册。

5. 使用mount命令
  直接使用mount命令,不带选项和参数,会输出所有已挂载的系统信息,里面可能有很多我们不需要的信息,常和grep一起使用以查看我们关注的内容。
  如:mount | grep -E "(sd)|(sr)"

mount和grep结合使用一例

6. 使用fdisk -l命令
  该命令是分区命令,因此只能看到能够进行分区操作的设备信息(比如光盘就不会显示),同时无论分区有没有挂载都会显示。
  
上面的命令可以简单分为
  可以查看\color{red}{未挂载}设备信息:blkidlsblkfdisk
  只能查看\color{red}{已挂载}设备信息:findmntdfmount


四,文件系统的卸载

卸载使用命令umount,设备或挂载点任意指定其中之一即可:umount device|dir
  
  卸载时有可能会遇到挂载点正在被其他进程访问,无法卸载的情况:

挂载点被其他进程访问,无法卸载

  按照系统提示的2个命令查看:
    lsof /test
    fuser -v /test
查看挂载点正被哪些进程访问

解决办法有2个:
  
  1. 终止所有正在访问某挂载点的进程,比如使用命令fuser -km /test(这个命令有可能导致其他进程出问题,生产环境慎用),或者kill掉访问挂载点的进程,然后再卸载。
  2. 强制卸载:umount -l /testumount -l会等到挂载点空闲后再卸载,相对让人放心一些。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,827评论 0 5
  • 参考文档 https://www.linuxidc.com/Linux/2017-09/146760.htmhtt...
    三杯水Plus阅读 4,270评论 0 8
  • 一.分区工具fdisk (1)分区工具fdisk工具的使用:fdisk -l -u :查看分区表,该命令是在磁盘上...
    楠人帮阅读 728评论 0 1
  • 目录磁盘结构磁盘分区磁盘分区管理文件系统管理挂载 一、磁盘结构 (一)设备文件 设备文件:linux系统下一切皆文...
    哈喽别样阅读 993评论 0 0
  • 今天,无意发现小家伙写的一篇作文,感觉挺有意思的,发出来和大家分享一下,原文如下: 秋天的夜色笼罩了天空,一轮明月...
    紫墨zm阅读 1,078评论 9 20