Mmount
挂载:
将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为
卸载:
为解除此关联关系的过程;
设备关联挂载点(mount Point)———mount;
卸载时,可使用设备,也可以使用挂载点——umount;
挂载点下原有文件在挂载完成后会被临时隐藏;
挂载点目录一般为空;

/app可以挂载到sda3上,无意义,不会循环;
多个设备不能同时挂载到同一个目录上;
即使挂载,生效的是最后一个;前一个被覆盖;

取消挂载,前一个挂载设备就会出现;

一个设备可以同时挂载到多个目录上
centos6.9可以,centos7.3不可以;
不是硬链接和软连接;不同的挂载点对应同一个设备;


查看是否挂载
df和mount都可以查看是否挂载;
mount的挂载信息来源于/etc/mtab;通过查看/etc/mtab文件显示当前已挂载的所有设备;
mount是临时挂载;
挂载和取消的时候,/etc/mtab文件会自动更新(比较特殊);
一般,/etc下的文件,都是静态的,不会自动更新;

用mount命令挂载文件系统
挂载方法:
mount DEVICE MOUNT_POINT
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要挂载的设备;
(1) 设备文件:例如/dev/sda5;
(2) 卷标:-L 'LABEL';
(3) UUID, -U 'UUID';
(4) 伪文件系统名称:proc(内存), sysfs(系统状态), devtmpfs(设备相关), configfs(配置相关),
它们不是真正的硬盘磁盘;
mount -L 'label' dir 把label对应的设备挂载到某目录下

mount -U 'UUID' dir 把UUID对应的设备挂载到某目录下

dir(目录):挂载点
事先存在;建议使用空目录;
进程正在使用中的设备无法被卸载;

mount常用命令选项
mount -t FS_TYPE /dev/DEVICE MOUNT_POINT:指定要挂载的设备上的文件系统类型;
可以降级使用和升级使用;

mount -r /dev/DEVICE MOUNT_POINT 只读挂载;ro(只读)

mount -w /dev/DEVICE MOUNT_POINT 读写挂载;rw(读写)
mount 可以查看挂载信息

mount -n /dev/DEVICE MOUNT_POINT 不更新/etc/mtab,mount看不见挂载信息,被隐藏了

cat /proc/mounts 显示挂载信息(包括隐藏信息);查看内核追踪到的已挂载的所有设备

把文件夹挂载到文件夹里
mount -B DIR MOUNT_POINT 绑定目录到另一个目录上,(实现文件夹挂载到文件夹)
df 只显示设备,不显示文件夹;
实现了两个文件夹同步;


实验:实现ftp共享与http共享;
ftp共享的文件夹 /var/ftp/pub 针对文件夹共享访问
httpd共享的文件夹 /var/www/html 针对网站共享访问
二者关联起来后,在其中一个文件夹里创建和删除文件都是同步的;
1.安装httpd;

2.挂载(关联两个文件夹);

3.更改配置;


4.访问(http://192.168.128.129)

mount -a
自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
mount -o [options] /dev/DEVICE MOUNT_POINT
[options]:挂载文件系统的选项,多个选项使用逗号分隔;
async 异步模式(性能好)
sync 同步模式,内存更改时,同时写磁盘(更安全,性能差)
atime/noatime 包含目录和文件(读时间)
企业网站的atime一直更新(无意义),会降低性能;最好禁用"访问时间(读时间)的更新",优化性能;
diratime/nodiratime 目录的访问时间戳(读时间)


exec/noexec 是否支持在文件系统上运行应用程序
remount 重新挂载(不用取消挂载、不用离开目录,可以直接挂载——方便)



ro 只读
只读文件系统——对root生效(但是root可以设置为无效);
r和w权限——对root无效;
rw 读写

acl 启用此文件系统上的acl功能
centos6.9 默认设备挂载的目录无acl权限,可以自己设置;
centos7.3 默认设备挂载的目录有acl权限;

suid/nosuid 不支持suid和sgid权限
nosuid 包括suid和sgid权限
suid 使权限提升,继承可执行二进制程序属主权限;
sticky位 使权限降低,只有所有者和root可以删除文件;




dev/nodev 是否支持在此文件系统上使用设备文件;
默认挂载情况下,允许设备文件被使用;
nodev 不能再当做分区使用,即不能挂载或修改文件,使设备文件失效;



loop 使用loop设备
可以把文件夹挂载到文件夹上;
传输“挂载文件夹”到别的用户,当U盘用;
实验:传送创建的设备文件
1.在/app下创建一个文件系统;

2.文件夹A挂载到文件夹B;

3.把文件夹A传输到某IP用户;

loop设备简介
使用loop设备,可以自动关联挂载点;

可以查看loop设备关联信息;
losetup -a centos6.9
losetup centos7.3

centos6.9中的loop设备有限(0-7)
centos7.3中的loop设备自动生成


设置loop设备个数(适用于centos6.9)
vim /boot/grub/grub.conf


因为是内核操作,所以重启之后才会生效;

使用loop设备挂载
losetup /dev/loop# dir
mount /dev/loop# mount_Point

1.loop设备好处
确定分区和文件系统之后,空间用完了,想重新创建个文件系统,
不能用已经确定的分区和文件系统(会破坏数据),此时可以利用loop设备,不需要创建新的分区;
2.确定分区后,再想调整大小,很困难;所以分区前,一定要估计好‘业务量’;
3.逻辑卷可以解决分区调整问题;
mount -o 如果不加[options],就是默认选项;
defaults 相当于rw, nosuid, dev, exec, auto, nouser, async
思考
给vim文件设置suid权限,拷贝到U盘里,插到别的机器上,
挂载到某个目录里,是否可以继承所有者(root)权限,编辑文件;
下面两个命令,请查询《mount配置这一文章》
auto/noauto
是否支持自动挂载,是否支持-a选项
user/nouser
是否允许普通用户挂载此设备,/etc/fstab使用,默认普通用户不能挂载设备,必须设置
卸载命令
findmnt MOUNT_POINT|device 查看挂载情况


利用上面的命令可以查看文件系统是否已经挂载;
脚本:
#!/bin/bash
findmnt $1 &> /dev/null || mount $1 /mnt/

操作无错误的情况下,不能取消挂载,说明有人正在访问这个目录;
查看正在访问指定文件系统的进程(谁在用此服务)
lsof MOUNT_POINT
fuser -v MOUNT_POINT

终止所有正在访问指定的文件系统的进程(杀进程),命令历史会丢失;
fuser -km MOUNT_POINT
终止某个正在访问指定的文件系统的进程;
kill PID(进程编号)
终止进程后,要取消挂载,才可以重新挂载;
卸载
umount DEVICE
umount MOUNT_POINT
网友评论