Linux之文件系统的手动挂载_5.手动挂载文件系统的方式( )-程序员宅基地

技术标签: cli  sh  linux  挂载  fstab  文件系统  mount  

转自:http://www.opsers.org/base/one-day-little-learning-linux-manually-mount-the-file-system.html

我们通过上一节已经对磁盘进行了分区与格式化了,如果说在windows系统下,我们就能正常使用了,而在Linux系统上则不行,他需要挂载后才能正常的使用。那么,挂载就是我们今天学习的内容。

挂载点

要学习挂载,先来看看什么是挂载点,他的作用是什么? 
我们知道,在Linux的文件系统结构是一个倒树状的。如果我们要增加新的东西到这个树上,我们就需想办法系一个什么东西,那么我们就可以把这个东西叫做挂载点。这个挂载点就是让其他的文件系统进入我们的目录树。所以挂载点有一个特点,那就是必需是个目录。

下面我们来看个例子

[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6928372   7422356  49% /
tmpfs                   255784         0    255784   0% /dev/shm

从上面的信息可以看到,我的磁盘sda的第一个分区sda1,他的挂载点是/。如果说你是接着上一节进行的实验的话,那么我们的第二块磁盘的信息并没有显示在这里,原因就是:我们还没有对其进行挂载,所以我们的目录树上还没有。

挂载


除了上面我们讲到的挂载点的特点外,一般情况下,应该是个空目录。当然,如果不是空目录也没有什么大的影响,因为挂载时,这个目录里面原来的内容全部被隐藏起来了,当我们卸载后,里面的原有内容就出来了。但我们不建议你用非空目录来做挂载点。因为你如果挂载点错误的话,可能会对系统产生影响的哦,比如挂载到用户的家目录。由此延伸出来,一个挂载点也不要重复挂载多个文件系统。

如何挂载文件系统


如果要挂载文件系统的话,那么就要请出我们今天的主角mount,这个命令在Linux系统上使用的机率是很高的。简单的来介绍一个这个命令的用法。

mount命令格式

mount 参数 -t 文件系统 -o 选项 设备 挂载点

mount 后面什么也不加的话,会显示目前挂载的信息
mount -a 会根据/etc/fstab文件中的信息,将没有挂载全部挂载上
mount -t 文件系统
		文件系统包括的内容主要包括:ext3 ext4 vfat ntfs iso nfs smbfs
      -o 后面的选项内容很多,主要是一些挂载时候的权限限制类的。
		ro/rw: 挂载文件系统时成为只读(ro)或可读写(rw)
		exec/noexec: 是否允许此文件系统上拥有可执行的文件
		suid/nosuid: 是否允许此文件系统上含有suid的文件
		dev/nodev: 是否允许此文件系统上建立设备文件
		auto/noauto: 允许此文件系统用mount -a自动挂载
		async/sync: 此文件系统是否使用同步(sync)或异步(async)写入硬盘的内存机制
		user/nouser: 是否允许此文件系统让任何用户执行mount命令
		defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async
		remount: 重新挂载。这个选项在系统修复,或重新更新参数时经常用到
设备:系统中有哪些存储设备,主要通过fdisk -l或者查看/etc/fstab或dmesg。一般的情况下光驱设备是/dev/cdrom,软驱设备是/dev/fd0(好像现在没有软驱了),硬盘及移动硬盘以 fdisk -l 的输出为准。
挂载点:这个就不用说了,自己建立一个空目录就OK了。

当然还有其他的一些参数和选项,这里大家可以通过MAN来查看更多的帮助信息。关键是要实践。那么下面我们就来通过例子熟悉此命令的使用。

我们还是以昨天分区的硬盘为例来给大家演示,我们只演示EXT4文件系统的挂载,其他的文件系统也是一样,只是-t 文件系统类型这里不一样而已。当然,我们注明一些其他的注意事项的。

[root@yufei ~]# fdisk -l

查看系统中的磁盘及分区信息


我只截取部份内容如下

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd6737273

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         183      409657+  83  Linux
/dev/sdb3             184        2610    19494877+   5  Extended
/dev/sdb5             184         445     2104483+  83  Linux
/dev/sdb6             446         511      530113+  82  Linux swap / Solaris

因为上一节课程中只对sdb1进行了格式化了,而其他的分区我们没有进行格式化。所以这里我们会给大家演示没有格式化挂载时候的情况。

挂载ext4文件系统

先创建挂载点,我比较喜欢用系统的/mnt目录,所以这里我就不创建目录了。

然后进行挂载

[root@yufei ~]# mount /dev/sdb1 /mnt

这里我没有指定文件系统的类型,为什么不指定也能被正确识别呢?主要是因为我们的系统中已经有了这些默认的类型驱动,那么我是怎么知道系统中到底有多少是默认的呢?你可以通过查看下面两个文件来得知。

/etc/filesystems:系统指定的默认挂载文件系统类型

/proc/filesystems:Linux系统已经加载的文件系统类型

这里面虽然是有了,但我怎么知道我的Linux系统有没有相关文件系统类型的驱动呢?我们可能通过 /lib/modules/$(uname -r)/kernel/fs/这个目录里面的信息来查看支持的文件系统驱动程序。

如果是在这之外的文件系统,就必需加上-t和相应的文件系统类型了。

我们用df来查看挂载情况,这个和一开始查看的结果进行对比

[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6928404   7422324  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sdb1              1033560     40980    939568   5% /mnt

我们看到最后一行得到了我们刚才挂载的分区了,现在可以在/mnt里面写东西了。

[root@yufei ~]# touch /mnt/testfile
[root@yufei ~]# ls -l /mnt/
total 16
drwx------. 2 root root 16384 May 26 16:19 lost+found
-rw-r--r--. 1 root root     0 May 26 23:15 testfile

ok,文件已经写入。接下来,我们来把挂载的选项来改一下,让他是只读的。

[root@yufei ~]# mount -o ro,remount /dev/sdb1
[root@yufei ~]# touch /mnt/testfile2
touch: cannot touch `/mnt/testfile2': Read-only file system

现在/mnt这个挂载点已经不能向里面写入任何的内容了。我没有卸载/dev/sdb1,只用了remount就能重新挂载了,加上ro选项,就变成只读了。关于其他的参数作用,各位自行测试吧。

注意:多个选项之间用英文的,分开。

光盘的挂载

光盘的挂载,这个和分区的挂载是一样的。

[root@yufei ~]# mkdir /media/cdrom
[root@yufei ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only

这里提示是只读的,因为是光盘啊!

[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6928416   7422312  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sdb1              1033560     40980    939568   5% /mnt
/dev/sr0               2862360   2862360         0 100% /media/cdrom

最后一行又多出来一个cdrom。

注意:在RHEL6上,光盘的设备名字变成了sr0了,不再是以前的cdrom了。

挂载光盘应该加上-t iso9660,因为我们的系统文件系统的驱动中已经有了,所以我就不用加参数,系统就能认识了。

U盘的挂载

U盘的挂载其实和硬盘的挂载是一样的,所以这里就不演示了,步骤也是一样的

1、fdisk -l

2、建立挂载点

3、执行挂载命令

具体的演示这里略过,有条件的,自己实践吧!

NTFS文件系统的挂载


请参考在RHEL6上挂载NTFS分区并让其可读可写http://www.opsers.org/base/mount-ntfs-partition-in-rhel6-and-let-it-read-and-write.html

下面演示一个没有格式化的分区挂载的情况

[root@yufei ~]# mkdir /test
[root@yufei ~]# mount /dev/sdb2 /test
mount: you must specify the filesystem type

就算我加上了文件系统类型也是不行的,不过,这里加上文件系统类型也是无意义的,毕竟没有格式化,这只是演示,所以我用ext4来演示一下

[root@yufei ~]# mount -t ext4 /dev/sdb2 /test
mount: wrong fs type, bad option, bad superblock on /dev/sdb2,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

我先来对其格式化,这次把我把格式化成VFAT格式的,所以我先转换分区类型

[root@yufei ~]# fdisk /dev/sdb
Command (m for help): t
Partition number (1-6): 2
Hex code (type L to list codes): b
Changed system type of partition 2 to b (W95 FAT32)
别忘记保存啊
Command (m for help): w
下面进行格式化
[root@yufei ~]# mkfs.vfat /dev/sdb2
mkfs.vfat 3.0.9 (31 Jan 2010)
然后进行挂载
[root@yufei ~]# mount /dev/sdb2 /test

再来查看挂载的情况

[root@yufei ~]# df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    15118728   6928520   7422208  49% /
tmpfs        tmpfs      255784         0    255784   0% /dev/shm
/dev/sdb1     ext4     1033560     40980    939568   5% /mnt
/dev/sr0   iso9660     2862360   2862360         0 100% /media/cdrom
/dev/sdb2     vfat      409424         0    409424   0% /test

fat32格式的也挂载上了。

注意:在实际中操作中,直接加挂一个Windows的分区,中文的文件名和目录名可能会出现乱码,为了避免这种情况可以指定字符集,命令如下:

mount /dev/sdb2 /test -o codepage=936,iocharset=cp936

mount /dev/sdb2 /test -o codepage=936,iocharset=cp936

注:cp936是指简体中文,cp950是指繁体中文。

用设备的卷标来挂载


我们在前面对/dev/sdb1进行格式化的时候,指定的标签名。我们来查看一下

[root@yufei ~]# tune2fs -l /dev/sdb1 |more
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   opsers_tech

此处省略很多行

下面进行挂载操作

[root@yufei ~]# mount -L opsers_tech -o remount 
用df还是看到是原来的内容,为了让大家看明白,我们把这个先卸载了,
[root@yufei ~]# umount /mnt
[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6928544   7422184  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sr0               2862360   2862360         0 100% /media/cdrom
/dev/sdb2               409424         0    409424   0% /test

然后用卷标的方式来挂载

[root@yufei ~]# mount -L opsers_tech /mnt
[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6928544   7422184  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sr0               2862360   2862360         0 100% /media/cdrom
/dev/sdb2               409424         0    409424   0% /test
/dev/sdb1              1033560     40980    939568   5% /mnt

同样能挂载上,只是把设备名换成了卷标而已。

ISO文件的挂载


我们创建个50M的ISO文件

[root@yufei ~]# dd if=/dev/zero of=test.iso bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.513358 s, 102 MB/s

对其进行格式化

[root@yufei ~]# mkfs.ext4 test.iso 
mke2fs 1.41.12 (17-May-2010)
test.iso is not a block special device.
Proceed anyway? (y,n) y
此处省略很多行

进行挂载

[root@yufei ~]# mkdir /loop
[root@yufei ~]# mount -o loop test.iso /loop
[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6979752   7370976  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sr0               2862360   2862360         0 100% /media/cdrom
/dev/sdb2               409424         0    409424   0% /test
/dev/sdb1              1033560     40980    939568   5% /mnt
/dev/loop0               49574      4906     42108  11% /loop

同样能正常写文件

[root@yufei ~]# touch /loop/test
[root@yufei ~]# ls /loop/
lost+found  test

关于网络文件系统的挂载,我们会在后面的服务里面给大家讲解,这里先略过了。

文件系统的卸载

OK,介绍了这么多挂载的内容,那么我想把挂载的内容卸载,我要怎么办呢?

那就是umount命令了,这个命令比较简单

格式是

umount 参数 设备名或挂载点

-f :强制卸载。可用在类似网络文件系统 (NFS) 无法读取到的情况下

-n :不更新/etc/mtab 情况下卸载

[root@yufei ~]# umount /mnt		#接的是挂载点
[root@yufei ~]# umount /dev/sr0	#接的是设备
[root@yufei ~]# umount /dev/sdb2#接的是设备
[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6928528   7422200  49% /
tmpfs                   255784         0    255784   0% /dev/shm

这样就把我刚才挂载的内容,全部卸载掉了。

我们前面不是向/mnt不是创建了一个文件了吗?现在我们来看看他还在不在/mnt中,

[root@yufei ~]# ls /mnt
hgfs

我们创建的文件不在这里,而hgfs这个目录,是系统自带的。这也验证文章开头给大家提到的,不会破坏目录里面的原有内容,当文件系统卸载后就还原了。而我们的挂载点起到的是桥梁作用,虽然是向挂载点中写内容,但实际上,写入的对象是对应的设备。我们把设备挂载上再看看是不是这样。

[root@yufei ~]# mount /dev/sdb1 /mnt
[root@yufei ~]# ls /mnt
lost+found  testfile
testfile又出来了。
[root@yufei ~]# umount /mnt
[root@yufei ~]# ls /mnt
hgfs
/mnt又还原了

今天主要讲的是挂载,而且都是手动实现的,这样有点太麻烦,明天我们讲如何实现自动挂载

本文关键字:RHEL6 一天一点 学习Linux 文件系统 挂载 mount


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/h806968607/article/details/18852655

智能推荐

稀疏编码的数学基础与理论分析-程序员宅基地

文章浏览阅读290次,点赞8次,收藏10次。1.背景介绍稀疏编码是一种用于处理稀疏数据的编码技术,其主要应用于信息传输、存储和处理等领域。稀疏数据是指数据中大部分元素为零或近似于零的数据,例如文本、图像、音频、视频等。稀疏编码的核心思想是将稀疏数据表示为非零元素和它们对应的位置信息,从而减少存储空间和计算复杂度。稀疏编码的研究起源于1990年代,随着大数据时代的到来,稀疏编码技术的应用范围和影响力不断扩大。目前,稀疏编码已经成为计算...

EasyGBS国标流媒体服务器GB28181国标方案安装使用文档-程序员宅基地

文章浏览阅读217次。EasyGBS - GB28181 国标方案安装使用文档下载安装包下载,正式使用需商业授权, 功能一致在线演示在线API架构图EasySIPCMSSIP 中心信令服务, 单节点, 自带一个 Redis Server, 随 EasySIPCMS 自启动, 不需要手动运行EasySIPSMSSIP 流媒体服务, 根..._easygbs-windows-2.6.0-23042316使用文档

【Web】记录巅峰极客2023 BabyURL题目复现——Jackson原生链_原生jackson 反序列化链子-程序员宅基地

文章浏览阅读1.2k次,点赞27次,收藏7次。2023巅峰极客 BabyURL之前AliyunCTF Bypassit I这题考查了这样一条链子:其实就是Jackson的原生反序列化利用今天复现的这题也是大同小异,一起来整一下。_原生jackson 反序列化链子

一文搞懂SpringCloud,详解干货,做好笔记_spring cloud-程序员宅基地

文章浏览阅读734次,点赞9次,收藏7次。微服务架构简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独立运行的项目。这么多小服务,如何管理他们?(服务治理 注册中心[服务注册 发现 剔除])这么多小服务,他们之间如何通讯?这么多小服务,客户端怎么访问他们?(网关)这么多小服务,一旦出现问题了,应该如何自处理?(容错)这么多小服务,一旦出现问题了,应该如何排错?(链路追踪)对于上面的问题,是任何一个微服务设计者都不能绕过去的,因此大部分的微服务产品都针对每一个问题提供了相应的组件来解决它们。_spring cloud

Js实现图片点击切换与轮播-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏20次。Js实现图片点击切换与轮播图片点击切换<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/ja..._点击图片进行轮播图切换

tensorflow-gpu版本安装教程(过程详细)_tensorflow gpu版本安装-程序员宅基地

文章浏览阅读10w+次,点赞245次,收藏1.5k次。在开始安装前,如果你的电脑装过tensorflow,请先把他们卸载干净,包括依赖的包(tensorflow-estimator、tensorboard、tensorflow、keras-applications、keras-preprocessing),不然后续安装了tensorflow-gpu可能会出现找不到cuda的问题。cuda、cudnn。..._tensorflow gpu版本安装

随便推点

物联网时代 权限滥用漏洞的攻击及防御-程序员宅基地

文章浏览阅读243次。0x00 简介权限滥用漏洞一般归类于逻辑问题,是指服务端功能开放过多或权限限制不严格,导致攻击者可以通过直接或间接调用的方式达到攻击效果。随着物联网时代的到来,这种漏洞已经屡见不鲜,各种漏洞组合利用也是千奇百怪、五花八门,这里总结漏洞是为了更好地应对和预防,如有不妥之处还请业内人士多多指教。0x01 背景2014年4月,在比特币飞涨的时代某网站曾经..._使用物联网漏洞的使用者

Visual Odometry and Depth Calculation--Epipolar Geometry--Direct Method--PnP_normalized plane coordinates-程序员宅基地

文章浏览阅读786次。A. Epipolar geometry and triangulationThe epipolar geometry mainly adopts the feature point method, such as SIFT, SURF and ORB, etc. to obtain the feature points corresponding to two frames of images. As shown in Figure 1, let the first image be ​ and th_normalized plane coordinates

开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)_语义角色增强的关系抽取-程序员宅基地

文章浏览阅读708次,点赞2次,收藏3次。开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先关系再实体)一.第二代开放信息抽取系统背景​ 第一代开放信息抽取系统(Open Information Extraction, OIE, learning-based, 自学习, 先抽取实体)通常抽取大量冗余信息,为了消除这些冗余信息,诞生了第二代开放信息抽取系统。二.第二代开放信息抽取系统历史第二代开放信息抽取系统着眼于解决第一代系统的三大问题: 大量非信息性提取(即省略关键信息的提取)、_语义角色增强的关系抽取

10个顶尖响应式HTML5网页_html欢迎页面-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏51次。快速完成网页设计,10个顶尖响应式HTML5网页模板助你一臂之力为了寻找一个优质的网页模板,网页设计师和开发者往往可能会花上大半天的时间。不过幸运的是,现在的网页设计师和开发人员已经开始共享HTML5,Bootstrap和CSS3中的免费网页模板资源。鉴于网站模板的灵活性和强大的功能,现在广大设计师和开发者对html5网站的实际需求日益增长。为了造福大众,Mockplus的小伙伴整理了2018年最..._html欢迎页面

计算机二级 考试科目,2018全国计算机等级考试调整,一、二级都增加了考试科目...-程序员宅基地

文章浏览阅读282次。原标题:2018全国计算机等级考试调整,一、二级都增加了考试科目全国计算机等级考试将于9月15-17日举行。在备考的最后冲刺阶段,小编为大家整理了今年新公布的全国计算机等级考试调整方案,希望对备考的小伙伴有所帮助,快随小编往下看吧!从2018年3月开始,全国计算机等级考试实施2018版考试大纲,并按新体系开考各个考试级别。具体调整内容如下:一、考试级别及科目1.一级新增“网络安全素质教育”科目(代..._计算机二级增报科目什么意思

conan简单使用_apt install conan-程序员宅基地

文章浏览阅读240次。conan简单使用。_apt install conan