您的位置:首页 > 运维架构 > Linux

Linux入门之磁盘管理(3)文件系统挂载

2016-08-28 20:47 791 查看
Linux入门之磁盘管理(3)文件系统挂载当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实现文件系统的挂载及管理。
挂载命令的使用

mount 命令
用法:
mount [option] DEVICE mountdirDEVICE(要挂载的设备): 设备名:如/dev/sdb1 /dev/hda2 卷标名:-L “LABLE” 如 -L mydata UUID :-U UUID 伪文件系统:proc sysfs tmpfs devptsmountdir(挂载点): 一般使用一个空目录,如果目录有内容,挂载此目录,内容被隐藏option:-t vfstype :指定文件系统用于识别,比如ISO9660表示为镜像文件-a :安装/etc/fstab中指定的设备及挂载点进行挂载-n :挂载时不更新/etc/mtab-r : 只读挂载-w : 读写挂载-L LABEL :指定卷标名为挂载设备-U UUID :指定对应UUID的挂载设备-B 或者 --bind :将一个目录当作设备进行挂载-o OPTIONS:额外的挂载选项async :异步挂载sync :同步挂载noatime/atime :不更新/更新挂载中所有文件(包含目录)的访问时间nodiratime/diratime :不更新目录的访问时间/更新目录访问时间auto/noauto :是否支持自动挂载,就是是否支持mount -aexec/noexec :是否支持在此挂载点上运行程序文件dev/nodev :是否支持在此挂载点上使用设备文件suid/nosuid :是否支持此挂载点上suid 和 sgid权限位remount : 重新挂载ro :只读挂载rw :读写挂载acl :启用acl功能user/nouser :是否支持普通用户挂载此设备,默认为管理员才能使用Defaults(一般默认挂载选项,这里排除tune2fs中使用 -o选项添加的额外挂载):rw, suid, dev, exec , suid, nouser, async

卸载命令 umount 命令umount DEVICE | MOUNT_POINT :指明挂载点目录或者挂载设备都可以卸载

命令使用案例:
查看挂载点列表
使用mount命令
mount      #直接输入mount表示查看当前系统所有挂载点


使用findmnt命令
findmnt    #默认为查看所有,可以查看指定设备挂载状态
findmnt  /dev/sdb1  #查看/dev/sdb1的挂载信息


可以通过查看系统文件映射文件来查看
cat  /proc/mounts     #查看所有被挂载的文件系统




挂载设备
mount /dev/sdb1 /mnt/sdb1
#直接挂载
[root@mzf ~]# mount /dev/sdb1 /mnt/sdb1
解析:不指定挂载选项,且默认挂载选项没有额外的功能,是没有什么提示的
#查看/dev/sdb1的挂载属性
[root@mzf ~]# mount | grep '^/dev/sdb1'
/dev/sdb1 on /mnt/sdb1 type ext2 (rw)
#查看更详细的信息
[root@mzf ~]# cat /proc/mounts | grep '^/dev/sdb1'
/dev/sdb1 /mnt/sdb1 ext2 rw,seclabel,relatime,errors=continue,acl 0 0

卸载设备
umount  /dev/db1    #一般没有消息说明卸载成功,卸载时要停止对其文件使用,否则无法卸载

使用特定选项来挂载
#挂载为只读挂载点
[root@mzf ~]# mount -r /dev/sdb1 /mnt/sdb1
#再次写入数据,显示了错误提示:只读的文件系统
[root@mzf ~]# echo "data" >> /mnt/sdb1/file.log
-bash: /mnt/sdb1/file.log: Read-only file system
#重新挂载为可读可写
[root@mzf ~]# mount -o remount,rw /dev/sdb1
#查询挂载设备信息,多了rw
[root@mzf ~]# findmnt /dev/sdb1
TARGET    SOURCE    FSTYPE OPTIONS
/mnt/sdb1 /dev/sdb1 ext2   rw,relatime,seclabel,errors=continue,acl
注意:重新挂载不要再指明挂载点,因为上次挂载操作后,默认会在/etc/mtab保存列表信息,重新挂载会读取相应信息
挂载目录
#将一个文件夹当设备挂载
[root@mzf ~]# mount --bind /boot /mnt/boot
#df查看的只是系统内核支持的文件系统类型,所有无法识别
[root@mzf ~]# df | grep '/boot'
/dev/sda1         194241   34107    149894  19% /boot
#使用mount查看所有挂载点并找出/boot相关挂载,发现2个
[root@mzf ~]# mount | grep '/boot'
/dev/sda1 on /boot type ext4 (rw)
/boot on /mnt/boot type none (rw,bind)
然后用ls分别查看两个挂载点信息:

解析:发现两个挂载点的文件内容一样,这时因为,/boot本事是一个挂载点,设备为/dev/sda1,这时再使用挂载点挂载对应的目录,只是提供了两个访问入口
禁止普通用户在指定挂载点运行程序文件
#切换到/dev/sdb1的挂载点
[root@mzf ~]# cd /mnt/sdb1/
[root@mzf sdb1]# pwd
/mnt/sdb1
#创建一个脚本文件
[root@mzf sdb1]# echo "echo xxxx" > hello.sh
#添加所有用户有执行权限
[root@mzf sdb1]# chmod +x hello.sh
#切换到普通用户
[root@mzf sdb1]# su hadoop
#因为普通用户为其它人,所有有执行权限可以执行
[hadoop@mzf sdb1]$ ./hello.sh
xxxx
#退出普通用户
[hadoop@mzf sdb1]$ exit
exit
#挂载为禁止普通用户运行程序、脚步文件
[root@mzf sdb1]# mount -o remount,noexec /dev/sdb1
#再次切换
[root@mzf sdb1]# su hadoop
#即使对文件有执行权限,但是挂载点禁止了普通用户运行程序文件的行为
[hadoop@mzf sdb1]$ ./hello.sh
bash: ./hello.sh: Permission denied
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息