Linux磁盘挂载

磁盘挂载原理

磁盘挂载的底层原理,就是一个链接文件,指向另一个文件
在这里插入图片描述


将目录挂载到另一个目录

参考: https://www.cnblogs.com/xingmuxin/p/8446115.html

mount --bind参数可以将一个目录挂载到另一个目录

# 将test1挂载到test2目录
mount --bind test1 test2
    1. mount --bind连接的两个目录的inode号码并不一样,只是被挂载目录的block被屏蔽掉,inode被重定向到挂载目录的inode(被挂载目录的inode和block依然没变)。
    1. 两个目录的对应关系存在于内存里,一旦重启挂载关系就不存在了。

挂载磁盘(Linux分区挂载)

格式化前分区,格式化后文件系统.正确的描述应该是挂载文件系统.

# 原生的文件系统格式直接使用mount 分区路径 挂载点路径
mount 分区路径 挂载点(要挂载到哪个目录)

# 非原生的文件系统格式,挂载时需要加上文件系统格式
mount fstype 分区路径 挂载点

查看挂载记录

# 查看/dev/sr0的挂载记录
mount |grep /dev/sr0

在这里插入图片描述


查看是否挂载成功

# 查看分区挂载信息
df -Th
## -T 显示文件系统的类型
## -h 显示人类易读的内容

查看inode节点的使用情况

inode节点满了之后,磁盘空间还有,但就是创建不了文件

# 查看inode节点的使用情况
df -iTh

在这里插入图片描述


xfs挂载重复UUID

xfs不能同时挂载重复的UUID

## -o ro 以只读模式挂载
# --nouuid 不检查uuid
mount -o ro,nouuid /dev/vgo/log-snapshot /mnt/snap

在这里插入图片描述


查看分区的文件系统格式

https://www.linuxcool.com/blkid

# 查看分区的uuid和文件系统格式
blkid

在这里插入图片描述

https://www.linuxcool.com/lsblk

# 查看磁盘分区的文件系统
## -f 显示文件系统信息
lsblk -f

在这里插入图片描述

# 或
ls -l /dev/disk/by-uuid/

在这里插入图片描述


卸载(取消挂载)磁盘

umount 磁盘设备

# 或者 
umount 挂载点(当前挂载的目录)
# 卸载时 只需要 一个参数即可,设备或挂载点 都可以

强制卸载(取消挂载)磁盘

## -l 使用"lazy"模式卸载,正在占用挂载点会强制进行卸载
umount 挂载点 -l

卸载挂载点失败,查找谁在占用挂载点

umount 设备
## 有时候会卸载失败,想找到原因

在这里插入图片描述


安装fuser命令

# 安装fuser命令
yum install psmisc -y

查看谁在占用挂载点

可以查看到占用挂载点的pid

# 查看谁在占用挂载点
## -m 显示挂载点
## -u 显示用户
## -v 显示详情
fuser -muv /mnt

## 回显
/mnt:                10584c

在这里插入图片描述


结束占用的pid

# 结束占用的pid
kill -9 $pid

# 识别和终止正在访问指定文件或文件系统的进程
## -m:指定匹配模式为挂载点,只管挂载点相关的进程
## -v:显示详细信息,包括进程的命令行参数
## -i:交互式模式,要求在终止进程之前进行确认
## -k:终止进程
fuser -m -v -i -k /mnt

强制卸载挂载点

# -f参数强制卸载
umount -f /data1/img

/etc/fstab持久挂载

fstab中配置信息,重启依然会自动挂载分区。

/etc/fstab详解
https://blog.51cto.com/lspgyy/1297432

将挂载信息写入这个文件,挂载信息就会永久生效。
/etc/fstab字段详解,配置格式如下:

设备路径挂载点文件系统格式权限是否自动备份是否自动校验
fs specfs filefs vfstypefs mntopsfs freqfs passno
磁盘路径 或 磁盘UUID 或磁盘LABEL挂载点ext4等,可以是auto一般是默认值1或0(0会快一点)1或0(0会快一点)
/dev/sdb4/media/testxfsdefaults00

在这里插入图片描述

字段具体说明:

  • fs spec:分区定位,可以给UUID或LABEL,例如:UUID=6E9ADAC29ADA85CD或LABEL=software
  • fs file:具体挂载点的位置,例如:/data
  • fs vfstype:挂载磁盘类型,Linux分区一般为ext4 | xfs,Windows分区一般为NTFS
  • fs mntops:挂载参数,一般为defaults;
    • nofail 如果该设备不存在,则不要报告该设备的错误。
    • nobootwait 它可以应用于非远程文件系统,以明确指示 mountall(8) 不要为它们阻止引导;
      • 由于“nobootwait”不适用于 systemd,正确的方法是使用“x-systemd.device-timeout=9”设置一个较短的超时时间,比如 9 秒”。
    • bootwait 它可以应用于安装在 /usr 或 /var 之外的远程文件系统,没有它 mountall(8) 将无法为这些文件系统提供引导;
    • optional 如果在启动时不知道文件系统类型,这会导致忽略该条目;和
    • showthrough 这允许在其父安装点之前安装一个安装点(应谨慎使用后者,因为它可能导致引导挂起)。
  • fs freq:磁盘检查,默认为0
  • fs passno:磁盘检查,默认为0,不需要检查

在这里插入图片描述

# 快速写入到/etc/fstab
echo "/dev/sdb4 /mnt/test xfs defaults,nofail 0 0" >> /etc/fstab

配置完/etc/fstab之后,保存会立即生效

如果未生效,执行 mount -a 命令,再通过 df -h 查看
执行 mount -a 命令后,如果设备已经挂载,会忽略.

# 检查/etc/fstab配置文件是否正确
# 自动挂载/etc/fstab
mount -a

常用参数

https://wiki.archlinuxcn.org/wiki/Fstab

  • nofail 如果该设备不存在,则不要报告该设备的错误。
  • _netdev网络就绪后再执行挂载
  • noatime 选项完全禁用每次读取文件时将文件访问时间写入驱动器。
  • nodiratime 选项仅对目录禁用文件访问时间的写入,而其他文件仍会写入访问时间。

自从内核4.0版本起还有另一个相关的选项:

  • lazytime 通过仅在内存中维护对 inode 时间戳的更改来减少对磁盘的写入(访问,修改 和 创建时间)。磁盘时间戳仅在以下情况下更新:
    • (1) 文件 inode 需要针对与文件时间戳无关的某些更改进行更新,
    • (2) 发生与磁盘的同步,
    • (3) 从内存中逐出未删除的 inode 或
    • (4) 如果自上次将内存中的副本写入磁盘已超过 24 小时。
      警告: 如果系统崩溃, 磁盘上的访问和修改时间可能会距离当前时间最多 24 小时。

防止挂载点错误导致系统启动失败

## nofail 如果该设备不存在,则不要报告该设备的错误。
## x-systemd.device-timeout=9`”设置9秒的超时
### Ubuntu偶尔会在启动时进行快速文件系统检查,持续时间默认超过3秒
/dev/sda2  /mnt/other  auto  defaults,nofail,x-systemd.device-timeout=9  0  2

# Centos7实例
/dev/vdb2 /disk auto defaults,nofail 0 0

在这里插入图片描述



开机自动挂载硬盘分区

参考 https://www.cnblogs.com/EasonJim/p/7447000.html


先查看硬盘信息

# 查看分区表
sudo fdisk -l

# 查看磁盘分区的uuid
sudo blkid

在这里插入图片描述
在这里插入图片描述

UUID写入到/etc/fstab

移动设备如果要持久化挂载,一定要写uuid,设备如果换插了接口,设备路径会变化

在这里插入图片描述

# 配置开机自动挂载
sudo vim /etc/fstab

# 写入挂载信息
UUID=11263962-9715-473f-9421-0b604e895aaa /media/user/data ext4 defaults 0 0
# 最后这两个一般都是0,只有系统盘才不需要设置为0

如果修改这个文件导致系统挂了,可以使用Ubuntu的Live CD功能(即Try Ubuntu…)进入系统来修改回这个文件。


自动挂载ntfs并使用系统回收站

转载自:https://blog.csdn.net/hyc679/article/details/81065260

  1. 在目标挂载点新建目录(必需, 一般在/media下), 新建目录Application
  2. 编辑/etc/fstab文件, sudo vi /etc/fstab, 在末尾添加:
## 磁盘路径 挂载点 文件系统  权限 是否自动备份 是否自动校验
/dev/sda1 /media/Application ntfs defaults 0 0
  1. 重启,硬盘已经成功挂载, 但是发现当删除文件时,文件会出现强制删除的提示,不能进入回收站, 接着来吧.
  2. 百度, 参考http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=484559, 使用id 当前用户名命令, 查看到用户当前用户名uidgid1000, 继续编辑/etc/fstab文件, 将刚刚修改的地方添加上uidgid, 修改为:
## 磁盘路径 挂载点 文件系统  权限 是否自动备份 是否自动校验
/dev/sda1 /media/Application ntfs defaults,uid=1000,gid=1000 0 0
  1. 重启, 现在删除文件就可以直接删除了, 删除的文件进入了系统的回收站, 再也不怕误删文件啦
    但是此时还有一个问题, 刚刚是通过硬盘在系统中的s设备名/dev/sda1挂载的, 此种方法在添加拨出硬盘时,可能会导致未拨出的硬盘不能正常挂载, 同样的挂载点却挂载了另一个硬盘等现象(设备标识在添加拔出硬盘时会改变), 使用硬盘的UUID来唯一对应某一硬盘即可解决
  2. 使用sudo blkid查看所有硬盘的UUID, 找到要挂载的硬盘的UUID并复制, 继续编辑/etc/fstab文件, 将/dev/sda1修改为UUID=硬盘的UUID:
## 磁盘路径 挂载点 文件系统  权限 是否自动备份 是否自动校验
UUID=88A0F1B6A0F1AAB8 /media/Application ntfs defaults,utf8,uid=1000,gid=1000 0 0

以上解决Ubuntuntfs硬盘的一般挂载使用, 其中utf8为指定文件的编码, 防止中文乱码, 视情况加吧.

详细设置请参考:https://www.cnblogs.com/ahslnx/articles/4833604.html

# 指定utf8为防止乱码
## 磁盘路径 挂载点 文件系统  权限 是否自动备份 是否自动校验
UUID=88A0F1B6A0F1AAB8 /media/Application ntfs defaults,utf8,uid=1000,gid=1000 0 0

加挂硬盘

新安装磁盘到物理机后,找不到磁盘

# 安装hdparm
yum install hdparm -y

# 硬盘硬件安装后,此命令测试linux系统是否能找到挂载的未分区硬盘
sudo hdparm -I /dev/sdb       

挂载点相关问题定位思路

• 通过mount命令检查挂载点具体参数配置
重点关注:
重复挂载非磁盘挂载设备(loop设备、img文件等)。


重复挂载

# 查看当前已挂载的文件系统列表
mount |grep -i "挂载点"

找到重复挂载文件系统,并确定重复挂载挂载点
在这里插入图片描述

# 卸载重复挂载的文件系统
umount <挂载点>
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值