linux入门之磁盘管理文件系统挂载
Linux入门之磁盘管理(3)文件系统挂载
当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实现文件系统的挂载及管理。
挂载命令的使用
mount 命令
用法:
mount [option] DEVICE mountdir
DEVICE(要挂载的设备):
设备名:如/dev/sdb1 /dev/hda2
卷标名:-L “LABLE” 如 -L mydata
UUID :-U UUID
伪文件系统:proc sysfs tmpfs devpts
mountdir(挂载点):
一般使用一个空目录,如果目录有内容,挂载此目录,内容被隐藏
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 -a
exec/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
#直接挂载 [[email protected] ~]# mount /dev/sdb1 /mnt/sdb1
解析:不指定挂载选项,且默认挂载选项没有额外的功能,是没有什么提示的
#查看/dev/sdb1的挂载属性 [[email protected] ~]# mount | grep ‘^/dev/sdb1‘ /dev/sdb1 on /mnt/sdb1 type ext2 (rw)
#查看更详细的信息 [[email protected] ~]# cat /proc/mounts | grep ‘^/dev/sdb1‘ /dev/sdb1 /mnt/sdb1 ext2 rw,seclabel,relatime,errors=continue,acl 0 0
卸载设备
umount /dev/db1 #一般没有消息说明卸载成功,卸载时要停止对其文件使用,否则无法卸载
使用特定选项来挂载
#挂载为只读挂载点 [[email protected] ~]# mount -r /dev/sdb1 /mnt/sdb1 #再次写入数据,显示了错误提示:只读的文件系统 [[email protected] ~]# echo "data" >> /mnt/sdb1/file.log -bash: /mnt/sdb1/file.log: Read-only file system #重新挂载为可读可写 [[email protected] ~]# mount -o remount,rw /dev/sdb1 #查询挂载设备信息,多了rw [[email protected] ~]# findmnt /dev/sdb1 TARGET SOURCE FSTYPE OPTIONS /mnt/sdb1 /dev/sdb1 ext2 rw,relatime,seclabel,errors=continue,acl
注意:重新挂载不要再指明挂载点,因为上次挂载操作后,默认会在/etc/mtab保存列表信息,重新挂载会读取相应信息
挂载目录
#将一个文件夹当设备挂载 [[email protected] ~]# mount --bind /boot /mnt/boot #df查看的只是系统内核支持的文件系统类型,所有无法识别 [[email protected] ~]# df | grep ‘/boot‘ /dev/sda1 194241 34107 149894 19% /boot #使用mount查看所有挂载点并找出/boot相关挂载,发现2个 [[email protected] ~]# mount | grep ‘/boot‘ /dev/sda1 on /boot type ext4 (rw) /boot on /mnt/boot type none (rw,bind)
然后用ls分别查看两个挂载点信息:
解析:发现两个挂载点的文件内容一样,这时因为,/boot本事是一个挂载点,设备为/dev/sda1,
这时再使用挂载点挂载对应的目录,只是提供了两个访问入口
禁止普通用户在指定挂载点运行程序文件
#切换到/dev/sdb1的挂载点 [[email protected] ~]# cd /mnt/sdb1/ [[email protected] sdb1]# pwd /mnt/sdb1 #创建一个脚本文件 [[email protected] sdb1]# echo "echo xxxx" > hello.sh #添加所有用户有执行权限 [[email protected] sdb1]# chmod +x hello.sh #切换到普通用户 [[email protected] sdb1]# su hadoop #因为普通用户为其它人,所有有执行权限可以执行 [[email protected] sdb1]$ ./hello.sh xxxx #退出普通用户 [[email protected] sdb1]$ exit exit #挂载为禁止普通用户运行程序、脚步文件 [[email protected] sdb1]# mount -o remount,noexec /dev/sdb1 #再次切换 [[email protected] sdb1]# su hadoop #即使对文件有执行权限,但是挂载点禁止了普通用户运行程序文件的行为 [[email protected] sdb1]$ ./hello.sh bash: ./hello.sh: Permission denied
本文出自 “神剑特兰克斯” 博客,请务必保留此出处http://mengzhaofu.blog.51cto.com/10085198/1843600
相关内容
linux入门之磁盘管理/etc/fstab与交换分区
Linux入门之磁盘管理(4)/etc/fstab与交换分区
在linux通过挂载命令可以使用各种选项进行不同文件系统的设备文件进行挂载,当然不仅限于块设备,但是无论怎么挂载,一般默认新建的文件系统进行挂载开机是不会自动挂载的,每次开启自动挂载的分区时通过/etc/fstab文件进行读取的。
/etc/fstab文件 简介:
此文件内容每一行都被定义一个条目的对应挂载信息,如果把每行条目按空格切割成多断那么可以分为下面几列:
要挂载的设备或者伪文件系统
挂载点
文件系统类型
挂载选项
转储频率
自检次序
挂载设备:一般为:设备名、LABEL=”设备卷标名”、UUID=”设备UUID”
伪文件系统:proc、sysfs、tmpfs、devpts等
挂载选项:默认为defaults,当然mount -o选项中的各种属性也都支持
转储频率:0:不做备份
1:每天转储
2:每隔一天转储
自检次序:0:开机不自检
1:开机自检;一般只有rootfs才用1,也就是/
文件例子:
这里是centos6.8版本中的配置:
这里是centos7.2版本中的配置:
解析:其中6版本中还是配置了一些伪文件系统,但是到了7版本,这些慰伪文件系统不在于/etc/fstab 文件中进行配置
注意:一般在创建分区的时候,是可以指定分区编号的,那么也就是说分区编号并不能说明分区柱面划分就是按顺序而来,所以,从6版本系统默认对文件系统是采用UUID进行识别并挂载,因为UUID在分区被格式化时创建的一个唯一编号,这样会避免冲突。
在对某个设备创建了文件系统之后,可以使用一些命令进行查看其UUID:
blkid 、tune2fs
1、根据blkid命令进行分区UUID查看,得出指定分区的UUID及其编号
这里注意,如果分区类型为xfs的话,左侧显示的并不是设备文件名称,而是另一种称呼:
[[email protected] ~]# blkid | grep ‘xfs’ /dev/block/8:2: UUID="c8360f6a-32ef-4bbc-b293-ce9f643bf845" TYPE="xfs" /dev/block/8:1: UUID="3ed1c49c-09b5-4989-a405-0032a3ad73d3" TYPE="xfs"
这里的设备直接以块设备主设备号和此设备号来命令
[[email protected] ~]# ls -l /dev/block/ total 0 lrwxrwxrwx. 1 root root 6 Aug 29 12:17 11:0 -> ../sr0 lrwxrwxrwx. 1 root root 6 Aug 29 12:17 8:0 -> ../sda lrwxrwxrwx. 1 root root 7 Aug 29 12:17 8:1 -> ../sda1 lrwxrwxrwx. 1 root root 6 Aug 29 14:03 8:16 -> ../sdb lrwxrwxrwx. 1 root root 7 Aug 29 12:17 8:2 -> ../sda2 lrwxrwxrwx. 1 root root 7 Aug 29 12:17 8:3 -> ../sda3 lrwxrwxrwx. 1 root root 7 Aug 29 12:17 8:4 -> ../sda4 lrwxrwxrwx. 1 root root 7 Aug 29 12:17 8:5 -> ../sda5
自动挂载设置:
#这里显示的是一个目录 [[email protected] ~]# ls -ld /mountdir drwxr-xr-x. 2 root root 4096 Aug 17 06:45 /mountdir
#在/etc/fstab中添加条目 /mountdir /umount none bind 0 0
#读取/etc/fstab条目进行挂载 [[email protected] ~]# mount -a
#因为是目录,所以df、lsblk等命令支持块设备,就使用mount来查看 [[email protected] ~]# mount | grep ‘/mountdir‘ /mountdir on /mnt/mountdir type none (rw,bind)
说明:无论挂载什么,挂载点必须存在,否则会出现错误。
交换分区:
交换分区设置命令:
mkswap [option] /path/to/swapdev :将指定设备文件格式化为交换分区
-L ‘LABEL’ :创建时设置卷标
mkswap -s :查看当前启用的所有交换分区
swapon -a :重新启动所有交换分区
swapon [option] /path/to/swapdev :
-p # : 设置其优先级为#
swapoff /path/to/swapdev : 禁用或卸载交换分区
在交换分区创建之前最好指明类型标
#新建的/dev/sdc磁盘分区默认Id标识为83
#下面调整Id,输入t进行修改
#这里的type codes列表可以再输入t之后查看,也可以在命令行界面查看,如:
[[email protected] ~]# echo -e "l q" | fdisk /dev/sdc 2> /dev/null | grep -v ‘^[[:space:]]?$‘ | grep -v ‘^Command‘
下面进行交换分区创建:
使用mkswap命令:
#设置卷标并创建为交换分区 [[email protected] ~]# mkswap -L swap1 /dev/sdc1 Setting up swapspace version 1, size = 1060252 KiB LABEL=swap1, UUID=df562741-4e26-403a-8065-4ab99b9b8f95
#查看当前启用交换分区 [[email protected] ~]# cat /proc/swaps FilenameTypeSizeUsedPriority /dev/sda3 partition20971480-1
#启用交换分区: [[email protected] ~]# swapon /dev/sdc1
#再次查看启用中的交换分区 [[email protected] ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda3 partition20971480-1 /dev/sdc1 partition10602520-2
解析:最后一列表示优先级,数值越大,优先级越大
#禁用交换分区 [[email protected] ~]# swapoff /dev/sdc1
#查看/dev/sdc1已经被禁用 [[email protected] ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda3 partition20971480-1
设置自动挂载:
#为了分区的准确表示,这里使用UUID,但是UUID很长,可以使用vim的末行模式的命令调用来读取命令结果到文件中。
#然后回车,这样删除多余的数据就行了
#修改为/etc/fstab识别的格式,然后保存退出
#重新启用
[[email protected] ~]# swapon -a [[email protected] ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda3 partition20971480-1 /dev/sdc1 partition10602520-2
查看交换分区使用状态
free 命令
free [option]
-m : 以MB为单位
-g : 以GB为单位
#直接使用free查看
查看系统空间占用信息:
df 命令
df [option]
-H :按1MB=1000KB来换算
-T :列出文件系统的类型
-h :易读取方式显示
-i :显示每个分区的inode使用情况
-P :以Posix兼容格式输出,也就是更整齐的排版
显示某目录总体占用状态
du 命令
du [option] /path/to/dir
-s :只显示目录本身及大小
-h :显示大小后跟单位
本文出自 “神剑特兰克斯” 博客,请务必保留此出处http://mengzhaofu.blog.51cto.com/10085198/1844484