文件系统挂载和管理工具
一.通过linux的开机原理来了解文件系统
1.关于根文件系统
linux开机原理图,可以看到图中的根文件系统是系统开机之后被识别到的,并挂载上去。
2.linux启动后文件系统情况
[1]除了根文件系统,其他分区都需要mount命令挂载
[2]其他分区可以通过根分区上的空目录挂载文件系统
二.文件系统管理
1.将额外文件系统与根文件系统某现存的目录建立联系,进而使得此目录做为其他文件访问入口称之为挂载(mount)
2.解除关联关系称之为卸载(umount)
3.挂载点下原有的文件在挂载完成之后会被隐藏
4.挂载文件系统的原理图:逐级挂载
可以看出最先从根分区出发,在根目录下进行分割挂载,但是这里有需要注意的一点,根目录下与开机过程有关的目录,就不能够与根目录放到不同的分割槽去,那哪些目录不可与根目录分开呢?有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
三.mount挂载命令详解
mount DEVICE mount_point
例1:将/dev/sda1分区挂载到/mydata目录然后卸载
mount /dev/sda1/ /mydata/ #挂载
umount /dev/sda1 #卸载
例2:将/dev/sda1以卷标名为“MYDATA”挂载到/mydata然后卸载
mount -L "MYDATA" /mydata/ #以卷标名进行挂载
umount /dev/sda1
例3:将/dev/sda1只读挂载到/mydata目录然后再卸载
mount -r -L "MYDATA" /mydata/ #只读挂载
umount /dev/sda1
例4:将/dev/sda1指定文件系统ext4挂载到/mydata目录
mount -t ext4 /dev/sda1 /mydata
注意:使用中的挂载设备无法被卸载
/etc/mtab:显示当前系统已挂载的文件系统,mount命令
/etc/proc:查看内核,追踪到已挂载的所有设备:cat /proc/mounts
[3]atime/notime #atime表示每次访问该文件时间戳会更新,比如使用cat命令进行查看,相反,notime表示不更新,每次访问更新时间戳放在磁盘中,ext4支持motime,但是修改不能隐藏更新时间戳。
[4]diratime/nodiratime #目录访问时间戳
[5]auto/noauto #是否支持自动挂载
[6]exec/noexec #是否支持系统上应用程序运行为进程,当有来历不明的文件系统有应用程序带来病毒,noexec很有用
[7]dev/nodev #是否在在此文件系统上使用设备文件
[8]suid/nosuid #若来历不明的文件系统上有suid文件,类似于passwd这样的文件偷偷混入,这样黑客可以直接使用此文件来更改你的密码,非常危险
[9]remount #重新挂载
[10]rw #读写挂载
[11]user/nouser #是否允许普通用户挂载此设备
[12]acl #启用此文件系统上的acl功能
[13]defaults #注意上述选项可多个同时使用,彼此使用逗号分隔,默认挂载选项defaults,相当于rw,suid,dev,exec,auto,nouser,async
四.卸载命令umount
umount dev 例:umount /dev/sda1
fuser -v /mydata/ #查看谁在访问
fuser -km /mydata/ #把访问的人提出系统
注意:不要轻易在生产环境里面执行此操作
[1]swapon #启用 swapon [option] device
-a #激活所有的交换分区
-p #指定优先级
[2]swapoff #禁用 注意:创建完分区之后用partx -a /dev/sda 尽量不要使用交换分区,伤性能
free [option]
-m:以MB为单位查看
-g:以GB为单位查看
例:我们来查看本机的内存状况
free -m
total used free shared buffers cached
Mem 980 667 313 3 88 215
-/+buffers/cache 362 618
swap 2047 0 2047
#注解:1.Mem物理内存 2.swap交换内存 3.buffers缓冲 4.cached 缓存 5.total内存总大小 6.used已使用内存空间 7.free空闲的内存空间 8.shared共享的内存空间 9.buffers和cached为常用数据存放,比如我们经常访问的目录或文件,这些就缓存在内存中方便我们快速查看,如果从磁盘中读取,那么速度必然会慢很多。
#原理:linux为了实现系统时加速访问效果,文件放在硬盘上再访问速度过慢,因为硬盘的I/O读写速度比内存I/O读写速度慢很多,所以我们将经常访问的的数据或者元数据尽量放在内存中去方面读写,但这样会占用内存空间,也可以清理出去,再加载进来也可以,而buffers缓冲与cached缓存是为了协调两个组件性能有差异有意设定的。
-h #易读方式查看
-p #利于文本处理
-i #inodes of blocks
du [option]… DIR
-h #human-readable 易读模式
-s #summary 总和
例:我们来查看/etc目录的大小
du -sh /etc
38M /etc #注意这里要使用-s选项,不然的话会显示出一大堆子目录的大小,太分散了。
五.练习
mke2fs -b 2048 -t ext4 /dev/sdb
mount -L 'TEST' -o defaults,acl /dev/sdb1 /testing
但是,我们这里要注意到一句话,“开机自动挂载”,所以应该在/etc/fstab里面进行操作才能开机自动挂载。
vim /etc/fstab
#/etc/fstab
LABEL='TEST' /testing ext4 defaults,acl 0,0
:wq
mount -a
2.创建一个5G的文件系统/dev/sdb2,卷标为HUGE,要求此分区自动挂载至/mydata目录,文件系统为ext3.
vim /etc/fstab
#/etc/fastab
"HUGE" /mydata ext3 defaults 0,0
:wq
mount -a
vim fdiskshow.sh
#/bin/bash
#
disk=$(fdisk -l /dev/[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-z]" | wc -l)
if [ $disk -eq 1 ];then
fdisk -l /dev/[sh]da
else
fdisk -l /dev/[sh]d[a-z] | grep "^Disk /dev/[sh]d[a-z]| tail -1"
:wq
一家之言,仅供参考,如有错误欢迎指正。如有疑问,欢迎咨询楼主我~