挂载点实际上就是linux中的磁盘文件系统的入口目录,类似于windows中的用来访问不同分区的C:、D:、E:等盘符。其实winxp也支持将一个磁盘分区挂在一个文件夹下面,只是我们C:、D:这样的盘符操作用惯了,一般没有将分区挂到文件夹。
linux、unix这类操作系统将系统中的一切都作为文件来管理。在windows中我们常见的硬件设备、磁盘分区等,在linux、unix中都被视作文件,对设备、分区的访问就是读写对应的文件。
Linux 使用字母和数字的组合来指代磁盘分区。这可能有些使人迷惑不解,特别是如果你以前使用“C 驱动器”这种方法来指代硬盘及它们的分区。
在 DOS/Windows 的世界里,分区是用下列方法命名的:
每个分区都被检查过以便判定它是否可被 DOS/Windows 读取。
如果分区类型是兼容的,它会被指派给一个“驱动器字母”。驱动器字母从“C”开始,
然后依据要标签的分区数量而按字母顺序推移。
驱动器字母可以用来指代那个分区,也可以用来指带分区所含的文件系统。
使用一种更灵活的命名方案。它所传达的信息比其它操作系统采用的命名方案更多。该命名方案是基于文件的,文件名的格式为:
/dev/xxyN
下面说明了解析分区命名方案的方法:
/dev/
这个字串是所有设备文件所在的目录名。因为分区在硬盘上,而硬盘是设备,所以这些文件代表了在/dev/上所有可能的分区。
xx在这里插入代码片
分区名的前两个字母标明分区所在设备的类型。通常是 hd (IDE 磁盘)或 sd(SCSI 磁盘)。
y
这个字母标明分区所在的设备。例如,/dev/hda(第一个 IDE 磁盘)或 /dev/sdb(第二个 SCSI 磁盘)
N
最后的数字代表分区。前四个分区(主分区或扩展分区)是用数字从 1 排列到 4。逻辑分区从 5 开始。例如,/dev/hda3 是在第一个 IDE 硬盘上的第三个主分区或扩展分区;/dev/sdb6 是在第二个 SCSI 硬盘上的第二个逻辑分区。
该命名方案中没有表明分区类型的地方;与 DOS/Windows 不同,所有分区都可在 Red Hat Linux 下被识别。当然,这并不是说 Red Hat Linux 能够访问每一类分区上的数据,但是在许多情况下,访问专用于另一操作系统的分区上的数据是可能的。
请切记以上信息;它会帮助你在设置 Red Hat Linux 所需分区时更容易地理解许多步骤。
如果 Red Hat Linux 会和 OS 在你的机器上并存,你必须使用 OS分区软件来创建你的磁盘分区 — 否则,OS可能不会识别磁盘分区。在安装中,不要创建任何新分区,但是请使用 Linux parted 为你的 Linux 分区设立正确的分区类型。
如果你想从 Red Hat Linux 中能够读写 Windows NT、2000、或 XP 分区,不要把 Windows 分区的文件系统类型设为 NTFS。若 Windows 分区的类型是 NTFS,它就不能在 Red Hat Linux 中被读取;若 Windows 分区的类型是 VFAT,它就能够在 Red Hat Linux 中被读取。
如果你有多个 Windows 分区,它们不必都使用同一文件系统类型。如果你的 Windows 中有不止一个分区,你可以把其中之一设为 VFAT,并在其上贮存你想在 Windows 和 Red Hat Linux 间共享的文件。
到了Red Hat Linux 安装筹备工作的这一步,你应该开始考虑一下你的新操作系统所要使用的分区数量及大小。“多少个分区”一直是 Linux 社区中的一个具有争议性的问题,在没有定论之前,可以说可用的分区布局与争论这一问题的人一样多。
鉴于上述情况,除非另有原因,你至少应该创建以下几个分区:swap、/boot 以及 /(根)分区。
令许多 Linux 的新用户感到困惑的一个地方是各分区是如何被 Linux 操作系统使用及访问的。它在 DOS/Windows 中相对来说较为简单。每一分区有一个“驱动器字母”,你用恰当的驱动器字母来指代相应分区上的文件和目录。
这与 Linux 处理分区及磁盘贮存问题的方法截然不同。其主要的区别在于,Linux 中的每一个分区都是构成支持一组文件和目录所必需的贮存区的一部分。它是通过挂载(mounting)来实现的,挂载是将分区关联到某一目录的过程。挂载分区使起始于这个指定目录(通称为挂载点,mount point)的贮存区能够被使用。
例如,如果分区 /dev/hda5 被 挂载在 /usr 上,这意味着所有在 /usr 之下的文件和目录在物理意义上位于 /dev/hda5 上。因此文件 /usr/share/doc/FAQ/txt/Linux-FAQ 被储存在 /dev/hda5上,而文件 /etc/X11/gdm/Sessions/Gnome 却不是。
继续以上的例子,/usr 之下的一个或多个目录还有可能是其它分区的挂载点。例如,某个分区(假设为,/dev/hda7)可以被挂载到 /usr/local 下,这意味着 /usr/local/man/whatis 将位于 /dev/hda7 上而不是 /dev/hda5 上。
也许您注意到了,Windows中,盘符既用于表示硬件(硬盘上的分区),又用于表示系统中的路径。而Linux中,硬件就是硬件,路径就是路径,不会混淆在一起,简单直接!
在Linux中,分区是这样表示的
/dev/hda
/dev/hda1
/dev/hda2
/dev/hda5
/dev/sdb1
以 /dev/hda5 为例:
因为在Linux中,每一个设备都是用 /dev/ 文件夹下的一个文件来表示,所以 /dev/hda5 中, /dev/ 表示的是根目录下的dev目录,我们来看剩下的部分 hda5 。
前两位的字母 hd 表示这是一块IDE硬盘,如果是 sd ,则代表SATA硬盘,或者闪存等外设。
第三位的字母 a 表示这是该类型接口上的第一个设备。同理, b、c、d…… 分别代表该类型接口上的第二三四……个设备。例如 hdc 表示第二个IDE接口上的主硬盘(每个IDE接口上允许一个主设备和一个从设备)。
第四位的数字 5 ,并不表示这是该硬盘中的第5个分区,而是第一个逻辑分区。因为在Linux中,为了避免不必要的混乱,分区的顺序是不能改变的,分区标识则由它们在硬盘中的位置决定。系统又要为所有可能的主分区预留标识,所以 1-4 一定不会是逻辑分区, 5 则是第一个逻辑分区,以此类推。
Linux中没有 注册表 这个概念。安装软件,理论上讲,只要拷贝所有相关文件,并运行它的主程序就可以了。
按照传统,一个软件通常分别拷贝到同级目录下的 bin、etc、lib、share等文件夹。
bin
可执行文件,程序的可执行文件通常在这个目录下。在环境变量中设定搜索路径,就可以直接执行,而不需要定位其路径。
etc
配置文件,大部分系统程序的配置文件保存于 /etc 目录,便于集中修改。
lib
库文件,集中在一起,方便共享给不同程序。相较不同的软件单独保存库文件,能够节约一些磁盘空间。
share
程序运行所需要的其它资源,例如图标、文本。这部分文件是专有的,不需要共享;而且目录结构相对复杂,混放在一起比较混乱,所以单独存放。
还有一些软件,占用一个单独的目录,所有的资源都在这个目录中。类似于Windows下的绿色软件,不推荐在Linux系统下这样作。
执行时,系统找不到可执行文件(搜索所有路径,资源开销过大,是不现实的),需要定位其位置,像这样 /home/user/bin/可执行文件 ,不够方便。
许多系统软件需要协作运行,配置文件分别保存,定位它们非常麻烦
如果程序使用的库文件,像图形库文件,都单独存放,那么磁盘空间的浪费会非常严重。
有一些大型软件,或者您布署的重要应用,您可以将它们单独安装在一个文件夹下。
选择挂载点是必不可少的步骤,下面对各挂载点做一个简单介绍:
/ 根目录
唯一必须挂载的目录。不要有任何的犹豫,选一个分区,挂载它!(在绝大多数情况下,有10G的容量应该是够用了。当然了,很多东西都是多多益善的)
/boot
它包含了操作系统的内核和在启动系统过程中所要用到的文件,建这个分区是有必要的,启动分区,即使主要的根分区出现了问题,计算机依然能够启动。这个分区的大小约在60MB—120MB之间。
/home
是用户的home目录所在地,这个分区的大小取决于有多少用户。如果是多用户共同使用一台电脑的话,这个分区是完全有必要的,况且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。
/tmp
用来存放临时文件。这对于多用户系统或者网络服务器来说是有必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了错误的操作,文件系统的其它部分仍然是安全的。因为文件系统的这一部分仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。
/usr
应用程序目录。大部分的软件都安装在这里。就像是Windows里面的Program Files。
/var
日志文件,经常会变动,硬盘读写率高的文件放在此中
/srv
一些服务启动之后,这些服务所需要取用的资料目录。在文件系统这一环节中,建议您选择: ReiserFS和Ext3
/opt
存放可选的安装文件,个人一般把自己下载的软件存在里面,比如永中Office、LumaQQ等等。
swap
交换分区,可能不是必须的,但是有这个交换分区可以当内存不够用时防止内存溢出(memory out).不过按照传统,并且照顾到您的安全感,还是挂载它吧。它的容量只要大于您的物理内存就可以了,如果超过了您物理内存两倍的容量,那绝对是一种浪费。
/var/log
系统日志记录分区。一般多用户系统或者网络服务器要建立这个分区,因为设立了这个分区,即使系统的日志文件出现了问题,他们也不会影响到操作系统的主分区
/bin
存放程序,里面的程序可以直接通过命令调用,而不需要进入程序所在的文件夹。
/dev
存放所有设备文件,如fd0为软盘设备,cdrom为光盘设备
/etc
是Linux下的配置文件的老家, 很多管理和使用的修改都在这里。
/sbin
和bin目录相似, 存放标准系统管理文件,一般只有超级用户才能使用。
关于常见挂载点的容量设置
每个人的硬盘大小都不同,自然也没有“定论”了,我大致说下,大家可以根据自己实际情况,酌情考虑
boot
Linux系统,它的引导文件很小很小,这个boot挂载点,大家分 100M,就足够了(这个基本上能算是定论!不管你硬盘多大,就分这么多,足够足够了!等你安装完了系统,去看看它,其实就占 45M——50M)
小知识:BOOT挂载点,并不是必须的。但是个人建议,如果你要做双系统,最好是单独分出来,等你安装grub引导器的时候,把它安装到boot上,就是双系统了,这样做,目的就是更明确,更方便。
SWAP
有一个不成文的小规律: 电脑内存,小于 1G的,SWAP分 512M;内存大于 1G的,分 1G就行。
/
(有些linux发行版,这个也写做:/root,功能道理是一样的)刚才说过了,得大点,至少5G以上
home
刚才也说了,是要求最大最大最大的。。。。。。你就尽量分吧。嘿嘿!网上常见的,80的硬盘,分给它 70G的都有………………
TMP
临时存放些垃圾的,自己看着吧了。大不了用满了清理呗。小知识:linux和windows不一样,垃圾很少很少,可以说是几乎没有,所以,在linux系统下,你完全不用考虑,系统垃圾文件的问题喔!所以,用linux,自然就不用天天吵着:我怎么清理垃圾阿!
占你整个容量的 15%差不多吧。呵呵,自己酌情考虑,其实你不“挂载”这个都行的。
Linux的分区,之所以让大家头疼,就是因为它并不是给每个分区,分配一个“字母盘符”,而是通过具体的文件夹名字,来进行“挂载”,进行功能的区分。其实,大家在潜意识里,明白这些挂载点的意思,就行了。别非想着Windows,分区就得有个盘符。。。。。。。_想用Linux,很多观念都必须要改变滴~
根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”
挂载:根文件系统外通过关联至根文件系统上的某个目录来实现访问
挂载点:mount_point,用于作为另一个文件系统的访问入口;
(1) 事先存在;
(2) 应该使用未被或不会被其它进程使用到的目录;
(3) 挂载点下原有的文件将会被隐藏;
挂载方法:mount DECE MOUNT_POINT
mount:通过查看/etc/mtab(文章最后会对/etc/mtab有个解释)文件显示当前系统已挂载的所有设备
命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要挂载的设备;
设备文件:例如/dev/sda5
卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’
UUID, -U ‘UUID’:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’
伪文件系统名称:proc, sysfs, devtmpfs, configfs
dir:挂载点
事先存在;建议使用空目录;
进程正在使用中的设备无法被卸载;
常用命令选项:
-t vsftype:指定要挂载的设备上的文件系统类型;
-r: readonly,只读挂载;
-w: read and write, 读写挂载;
-n: 不更新/etc/mtab;
-a:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
-L 'LABEL': 以卷标指定挂载设备;
-U 'UUID': 以UUID指定要挂载的设备;
-B, --bind: 绑定目录到另一个目录上;
注意:查看内核追踪到的已挂载的所有设备:cat /proc/mounts
………………………………………………………………………………………
-o options:(挂载文件系统的选项)
async:异步模式;
sync:同步模式;
atime/noatime:包含目录和文件;
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载
exec/noexec:是否支持将文件系统上应用程序运行为进程
dev/nodev:是否支持在此文件系统上使用设备文件;
suid/nosuid:是否支持在此文件系统上使用特殊权限
remount:重新挂载
ro:只读
rw:读写
user/nouser:是否允许普通用户挂载此设备
acl:启用此文件系统上的acl功能
注意:上述选项可多个同时使用,彼此使用逗号分隔;
默认挂载选项:defaults:rw, suid, dev, exec, auto, nouser, and async
上述信息可以通过查看超级块信息看到,这里不再对其进行演示。
………………………………………………………………………………………………………………………
命令演示:
1、指定文件系统将块设备挂载至指定空文件夹内:演示内容:1)没有指定文件系统,命令是否能正确执行;2)指定错误文件系统,命令是否能正确执行;3)挂载点有内容的文件夹,查看被挂载后其内容是否消失。
[root@localhost /]# fdisk -l
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 5 Extended
/dev/sdb5 2101248 2306047 102400 83 Linux
/dev/sdb6 2308096 2512895 102400 83 Linux
/dev/sdb7 2514944 2719743 102400 83 Linux
/dev/sdb8 2721792 2926591 102400 83 Linux
[root@localhost /]# mount /dev/sdb8 /device
[root@localhost /]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/CentOS-root 18307072 4724136 13582936 26% /
devtmpfs 485368 0 485368 0% /dev
tmpfs 500664 84 500580 1% /dev/shm
tmpfs 500664 7160 493504 2% /run
tmpfs 500664 0 500664 0% /sys/fs/cgroup
/dev/sda1 508588 142620 365968 29% /boot
tmpfs 100136 20 100116 1% /run/user/42
tmpfs 100136 0 100136 0% /run/user/0
/dev/sdb8 98988 5280 93708 6% /device
[root@localhost /]# blkid /dev/sdb8
/dev/sdb8: UUID="a3c4bf06-3695-45e8-8a07-a063498f0578" TYPE="xfs"
[root@localhost /]# umount /device
[root@localhost /]# mount -t ext2 /dev/sdb8 /device
mount: 文件系统类型错误、选项错误、/dev/sdb8 上有坏超级块、
缺少代码页或助手程序,或其他错误
[root@localhost /]# cd /device/
[root@localhost device]# ll
总用量 0
[root@localhost device]# touch 11 22
[root@localhost device]# ll
总用量 0
-rw-r--r--. 1 root root 0 8月 23 10:14 11
-rw-r--r--. 1 root root 0 8月 23 10:14 22
[root@localhost device]# ll
总用量 0
[root@localhost device]# ll -a
总用量 4
drwxr-xr-x. 2 root root 6 8月 23 09:27 .
dr-xr-xr-x. 21 root root 4096 8月 23 09:29 ..
[root@localhost device]# cd ..
[root@localhost /]# umount /device/
[root@localhost /]# cd /device/
[root@localhost device]# ll
总用量 0
-rw-r--r--. 1 root root 0 8月 23 10:14 11
-rw-r--r--. 1 root root 0 8月 23 10:14 22
通过上述演示,说明了如下事实:
………………………………………………………………………………………………………………………
2、演示内容:1)指定卷标并以只读方式挂载;2)对目录进行挂载操作,查看其与硬链接与软链接有何不同。
[root@localhost device]# blkid /dev/sdb6
/dev/sdb6: LABEL="sdb6" UUID="8284450c-8cb9-45d7-a8b8-ed9ed9ef9e52" TYPE="xfs"
[root@localhost device]# mount -L 'sdb6' -r /device/
[root@localhost device]# touch /device/33
touch: 无法创建"/device/33": 只读文件系统
[root@localhost device]# umount /device/
[root@localhost /]# mount -B /etc/ /device/
[root@localhost /]# ll -i /
总用量 64
11341 lrwxrwxrwx. 1 root root 7 7月 19 23:54 bin -> usr/bin
128 dr-xr-xr-x. 4 root root 4096 8月 2 10:09 boot
3 drwxr-xr-x. 19 root root 3300 8月 23 09:10 dev
33554561 drwxr-xr-x. 129 root root 8192 8月 23 09:38 device
33554561 drwxr-xr-x. 129 root root 8192 8月 23 09:38 etc
158 drwxr-xr-x. 42 root root 4096 8月 22 09:00 home
通过上述演示,说明了如下事实:
………………………………………………………………………………………………………………………
命令使用格式:
umount DEVICE
umount MOUNT_POINT
上面已经演示过umount的使用
命令使用格式:
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程:慎用
fuser -km MOUNT_POINT
这里介绍下交换分区,通过实验演示交换分区的创建及挂载
挂载交换分区:
启用:swapon
swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区;
-p PRIORITY:指定优先级;
禁用:swapoff [OPTION]… [DEVICE]
实验演示:
1、交换分区的创建:1)新创建一分区,2)修改新分区的类型,改为swap号码为82,3)格式化为swap
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 9
起始 扇区 (2928640-4196351,默认为 2928640):
将使用默认值 2928640
Last 扇区, +扇区 or +size{K,M,G} (2928640-4196351,默认为 4196351):+100M
分区 9 已设置为 Linux 类型,大小设为 100 MiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd391e822
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 5 Extended
/dev/sdb5 2101248 2306047 102400 83 Linux
/dev/sdb6 2308096 2512895 102400 83 Linux
/dev/sdb7 2514944 2719743 102400 83 Linux
/dev/sdb8 2721792 2926591 102400 83 Linux
/dev/sdb9 2928640 3133439 102400 83 Linux
命令(输入 m 获取帮助):t
分区号 (1,2,5-9,默认 9):9
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd391e822
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 5 Extended
/dev/sdb5 2101248 2306047 102400 83 Linux
/dev/sdb6 2308096 2512895 102400 83 Linux
/dev/sdb7 2514944 2719743 102400 83 Linux
/dev/sdb8 2721792 2926591 102400 83 Linux
/dev/sdb9 2928640 3133439 102400 82 Linux swap / Solaris
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkswap /dev/sdb9
正在设置交换空间版本 1,大小 = 102396 KiB
无标签,UUID=74bf2766-a01b-48ea-9082-2fad6b8e06a9
2、挂载交换分区:启用与禁用
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1001332 101756 535892 13424 363684 720328
Swap: 2097148 0 2097148
[root@localhost ~]# swapon /dev/sdb9
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1001332 101716 535924 13424 363692 720368
Swap: 2199544 0 2199544
[root@localhost ~]# swapoff /dev/sdb9
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1001332 102492 535152 13424 363688 719592
Swap: 2097148 0 2097148
实验涉及到的命令小结:
内存空间使用状态:free [OPTION]
-m: 以MB为单位
-g: 以GB为单位
文件系统空间占用等信息的查看工具:df
-h: human-readable
-i:inodes instead of blocks
-P: 以Posix兼容的格式输出;
查看某目录总体空间占用状态:du
du [OPTION]… DIR
-h: human-readable
-s: summary
命令总结:mount, umount, free, df, du, swapon, swapoff, fuser
如果我们想实现开机自动挂载某设备,只要修改/etc/fstab
文件即可。
文件挂载的配置文件:/etc/fstab
查看此文件可知
每行定义一个要挂载的文件系统;
其每行的格式如下
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot xfs defaults 0 0
要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)
挂载点:指定的文件夹
挂载选项:defaults
转储频率:
0:不做备份
1:每天转储
2:每隔一天转储
自检次序:
0:不自检
1:首先自检;一般只有rootfs才用1;
/etc/fstab文件的作用:
记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
/etc/mtab文件的作用:
先看它的英文是:
This changes continuously as the file /proc/mount changes. In other words, when filesystems are mounted and unmounted, the change is immediately reflected in this file.
记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。 每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息
参考:https://blog.csdn.net/u012865381/article/details/78126736
https://www.cnblogs.com/zydev/p/4741120.html