一、 文件系统的挂载mount:
1. 挂载命令mount使用:
(1)挂载: 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为,挂载点下原有文件在挂载完成后会被临时隐藏
(2) 卸载:为解除此关联关系的过程,可使用设备,也可以使用挂载点
(3) 用法:
mount 设备 挂载点
设备类型:
1) 可以使用设备文件如/dev/sda;
2) 可以使用卷标如SDA_LABEL;
3) 可以使用UUID;
4) 伪文件系统;proc,sysfs……
5) dd创建的image文件使用loop选项
6) 目录挂载至目录,使用bind或-B,fstab配置文件分区类型为none
(4) mount 常用选项:
-t 指定文件系统类型
-r 只读挂载
-w 读写挂载
-n 不更新/etc/mtab,通过mount看不到挂载的文件系统,只有cat /proc/mounts
才可以看到
-a 自动挂载所有支持自动挂载的设备。定义在/etc/fstab中且支持auto功能
-L 以卷标指定的设备挂载
-U 以UUID指定的挂载设备
-B –bind 绑定一个目录到另一个目录
[root@centos7 mnt]# mount -B /root/ /mnt/root
配置文件写法:
[root@centos7 smb]# tail -n1 /etc/fstab /root/ /mnt/root none bind,defaults 0 0 [root@centos7 mnt]# mount |grep "root" /dev/sda2 on /mnt/root type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
挂载windows的共享文件夹:
[root@centos7 mnt]# mount -o username=administrator,password=admin -t cifs //10.1.1.88/f /mnt/smb
挂载loop设备:
[root@cnode6_8 /]# dd if=/dev/zero of=/testdir/loopdev bs=1M count=50 //dd创建一个文件 50+0 records in 50+0 records out 52428800 bytes (52 MB) copied, 2.04763 s, 25.6 MB/s [root@cnode6_8 /]# mkfs.ext4 /testdir/loopdev //将改文件格式化为ext4 mke2fs 1.41.12 (17-May-2010) /testdir/loopdev is not a block special device. Proceed anyway? (y,n) y ====> 回答y开始格式化 Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 12824 inodes, 51200 blocks 2560 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=52428800 7 block groups 8192 blocks per group, 8192 fragments per group 1832 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@cnode6_8 /]# mkdir /mnt/loopdev //创建挂载点 [root@cnode6_8 /]# mount -o loop /testdir/loopdev /mnt/loopdev //手动挂载 [root@cnode6_8 /]# mount |grep loop //检验是否成功 /testdir/loopdev on /mnt/loopdev type ext4 (rw,loop=/dev/loop0) [root@cnode6_8 /]# umount /mnt/loopdev //卸载,尝试写入文件永久挂载 [root@cnode6_8 /]# vim /etc/fstab [root@cnode6_8 /]# tail -n1 /etc/fstab //配置文件添加的部分 /testdir/loopdev /mnt/loopdev ext4 loop,defaults 0 0 [root@cnode6_8 /]# mount -a [root@cnode6_8 /]# mount |grep loop //配置文件生效 /testdir/loopdev on /mnt/loopdev type ext4 (rw,loop=/dev/loop0) [root@cnode6_8 /]# losetup -a /dev/loop0: [0803]:11 (/testdir/loopdev)
注释:通过losetup查看loop设备与分区的关联情况,也可以手工指定哪一个loop设备关联某一个分区,losetup /dev/loop2 /testdir/partfile就是关联loop2和分区关联。可以写loop设备到目录的挂载,分区其实是关联了一个loop设备,在rhel6中有8个loop设备,在rhel7中是动态建立的
使用mknod创建block或者字符设备其中b是指block,7是loop设备的编号,67是第多少个loop设备,可以先查看一下系统的loop设备编号到多少
[root@cnode6_8 testdir]# mknod loopd b 7 67 [root@cnode6_8 testdir]# ll loopd brw-r--r--. 1 root root 7, 67 Jul 27 19:46 loopd
-o 常用选项(多个选项之间用逗号分割,在配置文件/etc/fstab中defaults的位置写)
async:异步模式,加载到内存的文件修改之后不会立即同步到硬盘,能提高性能
sync:同步模式,内存更改立即保存至文件,提高文件可靠性
atime/moatime: 目录访问时间戳,例如web的目录时间戳没必要更新时可禁用
auto/noauto: 是否支持自动挂载,auto时mount -a 自动可挂载
exec/noexec: 是否支持在文件系统上运行应用程序
dev/nodev: 因为设备文件也是文件,dev表示支持在此目录上建立dev设备
suid/nosuid: 是否支持suid和sgid权限
remount :重新挂载
ro:只读
rw:读写模式
user/nouser:是否允许普通用户挂载此设备,默认管理员才能挂载设备
defaults:相当于rw,suid,dev,exec,auto,nouser,async
2. 查看与卸载命令:因为一个文件系统有可能不止一个用户访问,所以有可能不能卸载
findmnt 查看挂载情况;
[root@cnode6_8 ~]# findmnt / TARGET SOURCE FSTYPE OPTIONS / /dev/sda2 ext4 rw,relatime,seclabel,barrier=1,data=ordered [root@cnode6_8 ~]# findmnt /dev/sda1 TARGET SOURCE FSTYPE OPTIONS /boot /dev/sda1 ext4 rw,relatime,seclabel,barrier=1,data=ordered
lsof 或fuser -v 查看访问指定文件系统的进程
[root@cnode6_8 ~]# [root@cnode6_8 ~]# lsof /root 014657 /root lsof 3440 root cwd DIR 8,2 4096 3014657 /root [root@cnode6_8 ~]# fuser -v /root USER PID ACCESS COMMAND /root: root 2292 ..c.. bash root 3357 ..c.. bash
终止所有正在访问指定文件系统的进程:fuser -km MOUNT_POINT
[root@cnode6_8 ~]# umount /testdir //设备忙,无法卸载 umount: /testdir: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@cnode6_8 ~]# fuser -v /testdir //查看到user jack在使用 USER PID ACCESS COMMAND /testdir: jack 3535 ..c.. bash [root@cnode6_8 ~]# fuser -km /testdir //强制杀掉在使用分区的进程 /testdir: 3535c [root@cnode6_8 ~]# umount /testdir [root@cnode6_8 ~]# //再次卸载已经成功
3. 永久挂载的配置文件/etc/fstab
/etc/fstab配置文件是在系统重启时文件系统挂载要读的配置文件,一旦写错可能致使操作系统无法启动,所以操作一定要小心!!!如在rhel6中挂载的设备名字写错,在检测的选项又设置了开机检测文件系统,那么此时在开机时将一直卡在输入ctrl+D或者输入root密码继续,此时可以输入密码重新挂载 / 文件系统,因为此时的 / 文件系统是只读的,需要重新挂载为可读可写的,然后编辑/etc/fstab 文件修改开机检测项为0,即不检测,然后继续,最后继续(ctrl +D)继续开机,等到开机检查哪一项除了问题,修改即可。rhel7不需要重新挂载 / 文件系统,可以直接编辑文件过程与rhel6类似,如果任然无法启动可以输入root密码,重新启动(systemctl reboot)
/etc/fstab 文件格式:
(1)要挂载的设备或伪文件系统:可以是设备名,UUID,LABEL,伪文件系统,目录等
(2) 挂载点:设备要挂载的目录,一般要放在/mnt下面
(3) 文件系统类型:一般的文件系统类型,还有none(目录)
(4)挂载选项default或-o指定的各种项
(5) 转储频率0表示不备份,1表示每天转储,2表示隔天转储
(6) 自检次序0表示不自检,1一般用来表示根文件系统自检顺序
4. 挂载的文件系统的查看:
df :查看文件系统的挂载情况,可以加-T选项,在设备名比较长可以对其显示,方便编写脚本对数据进行处理
du:查看目录的大小情况
mount:可以查看到包括目录等的挂载情况,但是在挂载时加-n就查看不到了
cat /proc/mounts 可以看到系统实时文件系统生效的挂载项
free :可以看到所有内存交换分区信息
cat /proc/swaps 可以看到交换分区信息,包括使用哪个分作作为交换分区
二、 usb设备和CD-ROM的使用
1. usb设备的使用:
usb设备使用时可事先查看当前系统的分区和磁盘信息,方便知道插入usb设备后多了那些设备便于管理,usb设备同其它分区一样也需要挂载和卸载,数据写完后可以多次输入sync保证数据确实已经全部保存至usb设备
2. CD-ROM设备使用:
使用eject可以弹出光驱,eject -t弹入。linux中自带打包iso后缀文件的工具,如果是文件可以直接使用cp命令目标文件带有iso后缀即可,如果是目录,可以使用mkisofs 打包。iso文件挂载后可以使用
[root@cnode6_8 image]# touch {a..f}.txt [root@cnode6_8 image]# ls a.txt b.txt c.txt d.txt e.txt f.txt [root@cnode6_8 image]# cd .. [root@cnode6_8 ~]# mkisofs -r -o img.iso image //给image目录建立镜像文件,-r递归,-o是输入文件 I: -input-charset not specified, using utf-8 (detected in locale settings) Total translation table size: 0 Total rockridge attributes bytes: 631 Total directory bytes: 946 Path table size(bytes): 10 Max brk space used 0 175 extents written (0 MB) [root@cnode6_8 ~]# ls img.iso image
原创文章,作者:jack_cui,如若转载,请注明出处:http://www.178linux.com/41311