十、mount挂载 fstab swap
一.挂载和卸载文件系统
将额外文件系统与根文件系统某现存的目录建立起关联关系。进而使得此目录做为其它文件访问入口的行为称之为挂载
根文件系统之外的其它文件系统要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”;此目录即为“挂载点”;
挂载点:mount_point,用于作为另一个文件系统的访问入口;
(1) 事先存在;
(2) 应该使用未被或不会被其它进程使用到的目录;
(3) 挂载点下原有的文件将会被隐藏;
注意:1、一个挂载点同一时间只能挂一个设备!
2、一个设备可以挂载在多个文件夹下,只不过看到的内容都是一样的
3、挂载点最好是空文件夹,否则原来的文件会被暂时隐藏,直到被卸载后才会显现出来。
1.1 mount
mount [-fnrsvw] [-t vfstype] [-o options] device dir
- device:指明要挂载的设备;
- (1) 设备文件:例如/dev/sda5
- (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
- (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
- (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
- dir:挂载点
- 事先存在;建议使用空目录
- 进程正在使用中的设备无法被卸载
补充:
如何在不重启的情况下在虚拟机识别新增的硬盘echo "- - -" > /sys/class/scsi_host/host0/scan
mount # 通过查看/etc/mtab文件显示当前已挂载的所有设备,该文件自动更新,记载设备挂载情况
mount label=name /data/mnt # 用卷标挂载
mount UUID="e206a05c-e04e-400c-8081-01fa18e079d4" /data/mnt # 用UUID挂载,由于uuid稳定唯一,所以尽量用uuid去挂载 # option:
-t vsftype:指定要挂载的设备上的文件系统类型
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见 (cat /proc/mounts可见)
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL': 以卷标指定挂载设备
-U 'UUID': 以UUID指定要挂载的设备
-B, --bind: 绑定目录到另一个目录上;
注:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
# -o options:(挂载文件系统的选项),多个选项使用逗号分隔 (启用和禁用的特性)
async:异步模式,默认
sync:同步模式,内存更改时,同时写磁盘
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
remount:重新挂载,不影响其他正在使用设备的用户
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用 禁止普通用户挂载
acl:启用此文件系统上的acl功能
noacl:关闭acl功能
mount -o noacl,remount /dev/sdb1 /data/mnt
loop: 使用loop设备 defaults:相当于rw, suid, dev, exec, auto, nouser, async findmnt MOUNT_POINT|device # 查看挂载情况,已经挂载显示相应挂载情况,无挂载则无输出;可用于写脚本
findmnt /data/mnt &> /dev/dull || mount /dev/sdb2 /data/mnt lsof MOUNT_POINT
fuser -v MOUNT_POINT # 查看正在访问指定文件系统的进程 fuser -km MOUNT_POINT # 终止所有在正访问指定的文件系统的进程 卸载
umount DEVICE
umount MOUNT_POINT # 卸载
因此,mount命令可将将分区、文件夹(-B)、文件(loop) 都可以挂载在空文件夹上
补充:loop设备,可以在文件系统中创建一个设备文件,该设备文件可以分区,可以挂载
centos6 最多只能挂8个loop设备
ls /dev/loop*
但是,可以创建mknod /dev/loop8 b 7 8
centos6上创建第8个loop设备
dd if=/dev/zero of=/data/test_loop bs=1M count=500 # 创建loop设备
mkfs.ext4 test_loop # 格式化
mount -o loop test_loop /data/mnt # 挂载,centos6上需加-o loop选项,即我们实现了将一个文件挂载在文件夹上。
二、 /etc/fstab
fstab文件包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的文件。具体来说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设备和远程设备等。对于Windows与Linux双操作系统用户,用fstab挂载FAT格式和NTFS格式的分区,可以在Linux中共享windows系统下的资源。
这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。
/etc/fstab 是启动时的配置文件,不过,实际 filesystem 的挂载是记录到 /etc/mtab 与 /proc/mounts 这两个文件当中的。每次我们在更动 filesystem 的挂载时,也会同时更动这两个文件喔!
系统挂载的一些限制: •根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
•其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则
•所有 mount point 在同一时间之内﹐只能挂载一次。
•所有 partition 在同一时间之内﹐只能挂载一次。
•如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。
我们挂载的命令执行结束后仅仅只是在内存在结束,一旦重启原来的挂载关系都不存在,所以我们要修改配置文件/etc/fstab来保存修改,这样才永久挂载
该文件很重要,最好备份。
如果出现故障
要挂载的设备或伪文件系统
1.设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
2.挂载点
3.文件系统类型
4.挂载选项:defaults
5.转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6.自检次序: 0:不自检 1:首先自检;一般只有rootfs才用1
mount -a
无需重启,挂载/etc/fstab中的所有文件系统
注意:对于loop、光盘、文件夹、一般在fatab中写设备名
一些特殊挂载在/etc/fatab:
补充:
mknod - make block or character special files # 创建特殊文件
mknod [OPTION]... NAME TYPE [MAJOR MINOR] # type:
b # create a block (buffered) special file
c, u # create a character (unbuffered) special file mknod zero c 1 5 在 当前设备里创建zero文件,类似/dev/zero文件;注意,要提前cd至该设备的挂载目录里。
ll /dev/zero /data/zero
crw-r--r--. 1 root root 1, 5 Dec 12 17:31 /data/zero
crw-rw-rw-. 1 root root 1, 5 Dec 12 14:54 /dev/zero
dd 命令:convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#: block size 复制单元大小
count=# : 复制多少个bs
补充:
简单删除一块磁盘的分区
dd if=/dev/zero of=/dev/sdb bs=1 count=512 备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破坏MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=256 count=1
两个特殊设备:
/dev/null:数据黑洞
/dev/zero:吐零机
三、swap分区一般为内存的2倍
交换文件、交换分区,也叫虚拟内存,是系统RAM的补充 swapon -s # 查看swap信息
创建swap分区;
第一步:fidisk 一个单独的分区,注意将分区类型改为82!
第二步:makeswap 格式化
第三步:修改/etc/fatab配置文件
第四步:swapon -a 激活全部swap
swapon [OPTION]... [DEVICE] # 启用swap
-a:激活所有的交换分区;
-p PRIORITY:指定优先级
禁用 :swapoff [OPTION]... [DEVICE] # 禁用swap /etc/fstab文件中,可以在defaults后面跟pri=value 设置优先级,值越高优先级越高
练习:
1、根据挂载文件名查出该设备名称。
blkid -U `grep /data /etc/fstab | sed -r "s/UUID=([^ ]*) .*/\1/" `
findfs `grep /data /etc/fstab | cut -d" " -f1 `
实验1:修改/etc/fstab 中的uuid,可能导致无法启动,怎么修复
1.根据提示,输入root的密码进入bash;
2.在修改/etc/fstab 文件时会提示我们该文件为只读文件,无法修改。
3.重新挂载/目录 mount -o rw,remount /dev/sda2 /
重新挂载根目录
4.再 vim /etc/fstab 修改配置文件,将最后两位修改为0 0即可。
5.正常重启
实验2:将一个文件夹迁移至一个新的磁盘分区,如将/home目录迁移至新的分区/dev/sdc1。
为避免在cp过程中别的用户在修改/home,我们可以在操作cp前这么操作init 1
切换至单用户,也就是说别的终端不允许访问,只允许单用户终端访问,结束操作后再切回至init 5
1 建立新分区
2 建立文件系统
3 mkdir /mnt/home
mount /dev/sda6 /mnt/home
4 cp -av /home/* /mnt/home
5 tar cvf /app/home.tar /home
scp remote
6 init 1 断开网络,在远程不要执行
7 rm -rf /home/*
8 vim /etc/fstab
UUID=b0421d9a-8072-4be5-9526-070535ac0a8e /home ext4 defaults 0 0
9 mount -a
umount /mnt/home
10 init 5 还到原有模式
注意:跟 “/” 目录无法迁移
3.将CentOS6的CentOS-6.9-x86_64-bin-DVD1.iso和CentOS-6.9-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.9-x86_64-Everything.iso文件,并将其配置为yum源.
首先现将两个光盘合成一个
mkdir /data/centos6. 创建一个空文件夹
cp -av /misc/cd/* /data/centos6.9 # 将正在挂载这的光盘dvd1的内容复制进刚刚创建的centos6.9的空文件夹
eject #将dvd1弹出 再放入dvd2
\cp -av /misc/cd/* /data/centos6.9 # 因为dvd1与dvd2有很多相同的文件,所以在cp前加\表示使用cp的原命令,否则复制过程中每一个相同的文件都会提醒是否覆盖 mkisofs -r -o CentOS-6.9-x86_64-Everything.iso /data/centos6.9 # 制作iso
注意:制作的这个iso文件只能当yum源使用,无法作为系统启动光盘,如果要作为系统启动盘使用还需要去官网下载mkdvdiso脚本制作。 然后挂载 mount -o loop /data/ CentOS-6.9-x86_64-Everything.iso /data/mnt 修改配置文件/etc/yum.repo.d/base.repo
最后 yum clean all
yum repolist
4.创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项.
fdisk /dev/sdb # 先分出一个2G的分区 mke2fs -t ext4 -m -b -L test /dev/sdb1 # 创建文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST vim /etc/fstab # 修改配置文件
UUID=cb17acad-ad9c-40b1-bab1-aa11a9ff9741 /test ext4 defaults,acl #添加此条 mount -a
5.写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息
#!/bin/bash
a=`lsblk -l | grep "sd[a-z]\>" |wc -l`
b=`lsblk -l | grep "sd[a-z]\>" |cut -d" " -f1 |head -n1`
c=`lsblk -l | grep "sd[a-z]\>" |cut -d" " -f1 |tail -n1` [ $a -eq ] && echo "`fdisk -l /dev/$b`" || echo "`fdisk -l /dev/$c`"
注意:跟 “/” 目录无法迁移
十、mount挂载 fstab swap的更多相关文章
- mount挂载和交换分区swap
目录 mount挂载 挂载方法 选项 查看设备 卸载命令 文件挂载配置文件fstab 交换文件与分区 swap优先级 三个工具free,df,du 扩展 移动介质 使用光盘 挂载USB设备 mount ...
- 【js】vue 2.5.1 源码学习 (十) $mount 挂载函数的实现
大体思路(九) 本节内容: 1. $mount 挂载函数的实现. // 将Vue.prototype.$mount 缓存下来 ==>mountComponet(this,el) { // 组建挂 ...
- centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpfs ,nr_inodes, LVM,传统方式扩容文件系统 第七节课
centos Linux下磁盘管理 parted,df ,du,fdisk,partprobe,mkfs.ext4,mount,/etc/fstab,fsck,e2fsck,mk2efs,tmpf ...
- Linux命令之mount挂载
挂载概念 Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除次关联关系的过程称之为“卸载”. 注意:“挂载点” ...
- 红帽学习笔记[RHCSA] 第九课[文件归档、硬盘、分区以及自动挂载、Swap、链接]
文件归档 tar是什么 通过tar命令可以将大型文件汇集成一个文件(归档),注意没有压缩功能. 压缩方式 gzip 通过gzip过滤文档,使用最广泛 bzip2 通常比gzip压缩小,但是不如gzip ...
- Linux busybox mount -a fstab
/*********************************************************************** * Linux busybox mount -a fs ...
- linux mount挂载设备(u盘,光盘,iso等 )使用说明
对于新手学习,mount 命令,一定会有很多疑问.其实我想疑问来源更多的是对linux系统本身特殊性了解问题. linux是基于文件系统,所有的设备都会对应于:/dev/下面的设备.如: [cheng ...
- Linux学习之CentOS(六)---mount挂载设备(u盘,光盘,iso等 )
对于新手学习,mount 命令,一定会有很多疑问.其实我想疑问来源更多的是对linux系统本身特殊性了解问题. linux是基于文件系统,所有的设备都会对应于:/dev/下面的设备.如: [cheng ...
- linux存储管理之mount挂载
Mount 挂载详解 ====================================================================================本节内容: ...
随机推荐
- hdu 3342 拓扑模板题
直接上代码吧 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...
- 取代Ajax.BeginForm的ajax使用方法
原文:取代Ajax.BeginForm的ajax使用方法 一.前提概要 Asp.net core中已经取消了Ajax.BeginForm,也不会计划出ajax tag helper,所以得利用插件jq ...
- Java Web 深入分析(1)B/S架构概述
B/S结构即浏览器和服务器结构.它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构.在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实 ...
- nginx 反向代理的配置
nginx中的每个server就是一个反向代理配置,可以有多个server(nginx只能处理静态资源) nginx中 server的配置 server { listen 80; server_nam ...
- 卷积神经网络(CNN)的训练过程
卷积神经网络的训练过程 卷积神经网络的训练过程分为两个阶段.第一个阶段是数据由低层次向高层次传播的阶段,即前向传播阶段.另外一个阶段是,当前向传播得出的结果与预期不相符时,将误差从高层次向底层次进行传 ...
- go语言的duck typing
对于一个接口来讲有:实现者和使用者. 传统的面向对象都是实现者实现接口,然后告诉大家接口规范(传餐和返回):而golang比较特别,是使用者们去分别实现符合自己需求的各自的接口方法的.而C++是实现者 ...
- 检测jquery是否正确引入
if(typeof(jQuery)=="undefined"){ alert("jQuery is not imported"); }else{ alert(& ...
- springboot和Redis整合
springboot简化了许多的配置,大大提高了使用效率.下面介绍一下和Redis整合的一些注意事项. 首先介绍单机版的redis整合. 1.第一步当然是导入依赖 <dependency> ...
- 如何解决Win10不能新建项目的问题?
在Win10系统中,我们有时候会遇到右键菜单中没有新建项的情况,这时我们就无法进行文件的新建,非常耽误我们使用电脑.下面雨后清风就来分享一下Win10系统右键菜单没有新建项的解决方法. Win10系统 ...
- node-exporter cpu使用率为负数
在prometheus利用公式:100 - (avg by (instance) (irate(node_cpu{instance="xxx", mode="idle&q ...