Linux常用命令之--挂载卸载文件系统

挂载、卸载文件系统

mount命令

用途:挂载文件系统、ISO(ISO9660)镜像到指定文件夹
格式:mount [ -t 类型 ] <存储设备> <挂载点目录(即文件夹)>
如果之前分区已经通过mkfs格式化过,那么-t可以省略
☆挂载点必须是文件夹,不能是文件
• mount -o loop ISO镜像文件 挂载点目录
• -o ro 以只读方式挂载
• -o rw 以读写方式挂载
• -o remount 重新挂载已经挂载的设备
• mount -a 挂载/etc/fstab中未挂载的设备,-a:测试
/etc/fstab帮助我们做自动挂载的,也就是重启之后依然会处于挂载状态
❉先写完/etc/fstab 里的挂载信息再mount -a,如果有问题可以进行修改,如果显示挂载成功说明挂载文件写的没错。如果不经过测试,并且挂载文件写的有问题的情况下可能会导致机器重启后无法开机

umount命令

用途:卸载已挂载的文件系统
格式:umount 存储设备位置
umount 挂载点目录

分区想象成集装箱,文件想象成货物。挂载就相当于给集装箱开一个门,让我们可以使用里面的货物。挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。将分区挂载到文件夹里,这个文件夹这个称为被挂载点。将文件系统挂载到一个挂载点后,访问该挂载点实际上是访问该文件系统,可以理解成挂载点只是提供了一个访问文件系统的入口。取消该挂载点,会看到挂载点原来的内容(一般是空的)

通过mount [ -t 类型] 存储设备 挂载点目录 ,重启机器后挂载都消失
❉/etc/fstab 是帮助进行自动挂载的,按照固定格式写,使重新开机后挂载依然有效

blkid 查看有没有创建好的文件系统
/dev/sda1: UUID="adb14938-c88c-458a-8365-ab32ce88732a" TYPE="xfs"
/dev/sda2: UUID="5caf32d9-87f9-487a-bbca-0d4a219012f1" TYPE="xfs"
/dev/sda3: UUID="65e12087-719a-48ca-851e-e565c1365657" TYPE="swap"
/dev/sda5: UUID="37b88ed5-b17d-4d07-a19a-759791d4be17" TYPE="xfs"
/dev/sr0: UUID="2017-07-11-01-39-24-00" LABEL="RHEL-7.4 Server.x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sdb1: UUID="6558aa84-fc01-4df5-8886-54e3825b1653" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb2: UUID="7adf4d06-fbd6-43db-be1b-ee32ded85c16" TYPE="xfs"
/dev/sdb3: UUID="79E2-ED36" TYPE="vfat"
❀这里的UUID是它前面设备的身份证号,作为系统中的唯一标识

[root@localhost ~]#mkdir /mnt/test1
[root@localhost ~]#mount -t ext3  /dev/sdb1  mnt/test1/

如果显示mount: wrong fs type,bad option,bad superblock on /dev/sdb1,说明/dev/sdb1的超级块坏了,这时可以对应

fdisk /dev/sdb
Command (m for help) : d      #删除分区
Partition number (1-6,default 6): 1
Command (m for help) : w
fdisk /dev/sdb
Command (m for help) : n     #新建分区
Partition number (1-6,default 6):
**全部Enter**
Command (m for help) : w
[root@localhost ~]# mkfs.ext3 /dev/sdb1
[root@localhost ~]# mount -t ext3 /dev/sdb1 /mnt/test1/
[root@localhost ~]# mount | grep sdb1
/dev/sdb1 on /mnt/test1 type ext3 (rw,relatime,seclabel,data=ordered)
[root@localhost ~]# cd /mnt/test1
[root@localhost test1]# ls
lost+found
[root@localhost test1]# touch test1
[root@localhost test1]# ll
total 16
drwx------. 2 root root 16384 Jun 29 20:24 lost+found
-rw-r--r--. 1 root root 0 Jun 29 21:54 test1
#这时的lost+found文件夹和test1文件都是存在于硬盘之中
[root@localhost test1]# cd ..
[root@localhost mnt]# umount /mnt/test1/     
#或者umount /dev/sdb1 都可以进行卸载
[root@localhost mnt]# ls
test1
[root@localhost mnt]# cd test1/
[root@localhost test1]# ls

因为卸载了,所以无法再查看硬盘中的内容,因此ls没有回显
但是建的/mnt/test1/是可以看见的
在卸载之前要确认是否有文件正在向这个设备中做写入;这个设备中的文件有没有正在被打开的;有没有人cd在这个路径之中。不然卸载可能会失败
如果在卸载了/dev/sdb1以后,我在/mnt/test1/里建一个文件叫file1,通过ls是可以看见有一个file1的

[root@localhost test1]# mount /dev/sdb1 /mnt/test1/
[root@localhost test1]# cd ..
[root@localhost mnt]# cd test1/
[root@localhost test1]# ls
lost+found test1

在再次挂载之后发现只能看见硬盘里的lost+found文件夹和test1文件,file1看不见了。但是卸载之后发现又能看见file1了。这是由于linux的VFS(虚拟文件系统)机制导致的。正常登录以后,所看到的各个目录,文件都是内核在加载时构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(这里指/mnt/test1),系统就把VFS中的这个挂载点指向你最后挂载的那个设备上。而之前所挂载的设备依然在那里,只不过挂载点已经不再指向之前的设备。所以之前的数据是被隐藏了,而没有被删除。umount后数据就会重新被看见

[root@localhost test1]# mkdir /iso
[root@localhost test1]# mount  /dev/sr0  /iso/
mount: /dev/sr0 is write-protected, mounting read-only

在不能直连外网的情况下需要使用ISO镜像文件当作yum的本地库进行安装。就需要挂载
yum的默认仓库配置目录是/etc/yum.repos.d,此目录下的以.repo结尾的文件都是yum的仓库地址。在这里仓库地址就是挂载点/iso/

[root@localhost test1]# vim /etc/yum.repos.d/123.repo
[rhel]
name=rhel repo
enable=1
baseurl=file:///iso
#http://www.baidu.com
#ftp://ftp.shida-edu.cn
#非本地的url时都是:后面有两个//,本地url是三个///
gpgcheck=0
[root@localhost test1]# yum clean all
[root@localhost test1]# yum repolist 发现yum源是好用的
[root@localhost test1]#reboot 重启后发现之前mount的不好用了,即yum install不好用

想实现自动挂载

[root@localhost test1]#vim /etc/fstab
#最后一行添加这个↓     
/dev/sdb1 /mnt/test1 ext3 defaults 0 0
/dev/sr0 /iso iso9660 defaults 0 0

defaults是一堆参数的合集
<设备(设备的绝对路径或者UUID)> <挂到哪里去> <挂载格式> <开机是否自检(0是不自检,1是自检)> < 开机是否备份(开机时备份的顺序,0是不备份,1是第一个备份,2是第二个备份…)>
如果boot分区(内核相关文件)开机自检是有意义的,数据分区开机自检没有什么意义
UUID="1683341f-f10c-4f70-8050-13e317e3e3de"

比如有若干个卡槽,第一个卡槽是sda,第二个是sdb,以此类推。比如第二个拔掉,此时在开机的状态下拔掉,它原来是sd什么还是什么,但是重启后,第三个卡槽的就会是sdb,以此类推。所以如果写/etc/fstab文件的时候用sd?写的话很容易就串位了,这时用UUID写是比较保险的,因为UUID是不会变的.UUID可以通过blkid<设备名>获得
UUID="1683341f-f10c-4f70-8050-13e317e3e3de" /iso iso9660 defaults 0 0
这里UUID后面有没有双引号都可以

[root@localhost test1]#reboot
[root@localhost ~]# mount | grep /iso
/dev/sr0 on /iso type iso9660 (ro,relatime)
[root@localhost ~]# mount | grep sdb1
/dev/sdb1 on /mnt/test1 type ext3 (rw,relatime,seclabel,data=ordered)

发现之前的挂载都在

[root@localhost test1]#vim /etc/fstab
#把里面内容改成错的,保存
[root@localhost test1]#reboot

发现开机的时候一直显示转圈圈,按F12键,等待读秒timeout,并记录一下是哪个挂载有问题。读秒结束之后输入root的密码,然后vim /etc/fstab将配置文件内容改成对的,再reboot就好了

你可能感兴趣的:(Linux常用命令之--挂载卸载文件系统)