我们大多数人都用过微软的windows系统,windows操作系统把硬盘划分为C、D、E、F...多个分盘,
磁盘的组成。其实这就是磁盘的分区,只是在装系统的时候系统就帮我们做好了分区,并把各分区挂载在不同的盘符上面。
那么磁盘的分区本质是什么?为什么要做磁盘分区?Linux中磁盘怎么分区,怎么挂载?
下面我们先来了解一下盘片的组成吧。
磁盘主要由盘片、机械手臂、磁头与主轴马达所组成,而数据的写入是在盘片上,磁头对盘片的读写扫描形成的截面是磁道。这里我们主要了解盘片的组成即可。其实磁盘的存储数据功能都是有盘片担任,多个盘片叠加在一起就形成了磁盘的存储容量。盘片在细划为扇区和柱面,磁盘的最小存储单位是扇区,一个扇区512bytes。磁盘的第一扇区非常重要,记录了主引导分区(Master Boot Record, MBR) 和 分区表(partition table) 两个主要信息,前者拥有 446bytes,后者拥有 64bytes。
机器启动时主板的BOIS程序会跟着启动,根据CMOS存储的硬件参数读取机器的硬件设备,其中也包括磁盘,读取磁盘也是最为重要的一环,MBR记录了磁盘的主活动分区,或者装载了BRUB等信息,BOIS程序会根据MBR记录的信息去主活动分区中将分区里的程序(即操作系统程序)加载入内存,从而运行操作系统。
分区表的 64bytes 容量中,共被分为四组记录区,每组记录区记录了该分区的启始与结束的柱面号码。从这里就可以得出分区的本质其实就是对 64bytes 的分区表进行设置而已。正所谓没有自由是带着镣铐在起舞一样,磁盘分区也会受到限制,从上述我们可以得出:
1)磁盘默认只能写入四组分区信息,即默认最多只能有四个分区,要更多的分区可以通过逻辑分区进行扩展。
2)四组分区包含了主分区 (Primary Patition) 和扩展分区(Extended Partition)。
3)分区的最小单位为柱面 (cylinder)。
根据上述我们也可以得出分区的意义(好处)
1)数据的安全性
每个分区是独立且相互不影响的,对某个分区的数据进行格式化时不会影响其他分区,如我们重装系统时对C盘的数据进行格式化,并不会影响到其他盘。
2)提供系统的IO性能
将数据存入一个连续柱面的分区块或者从中读取,比起不分区从不连续的扇区写入和读取,IO性能更快。
在windwos中分区是以C、D、E、F等盘符来体现,在Linux中分区时怎么体现的,系统怎么进入分区进行IO操作呢?
在 Linux 中所有的数据和设备都是以文件的形式来体现的,而文件又是放置在目录下的,所以在 Linux 中的目录结构管理变得至关重要。所谓的目录结构 (directory tree) 就是以根目录为主,然后向下呈现分支的目录结构的自用文件结构。所以对Linux来说磁盘设备也是一个文件,而磁盘分区固然也是一个文件,要将这个文件放置在哪个目录,或者说哪个目录为分区的入口,这个设置过程被称为挂载,而该目录被称为挂载点,这个有点儿类似 AOP 编程,分区是切面,而目录是切点。
接下来我们以 Red Hat Enterprise Linux Server release 6.9 (Santiago) 版本为例简要地写一下如何对分区进行挂载(前提条件是机器已经装好了一个新的硬盘):
1). 输入该命令查看磁盘使用情况: df -h
或者输入该命令查看磁盘分区结构:lsblk
2). 通过该命令查看磁盘详细信息:fdisk -l
如上图可以看出 /dev/vdb 下面没有出现 /dev/vdb1~/dev/vdb4等信息,在前面讲到 Linux系统中设备是以文件的形式体现的,这里磁盘是为一个在/dev目录下的名为 vdb 的文件。若对磁盘进行分区,则主分区和扩展区的文件名称即为在磁盘文件名称追加 1~4 的后缀,即其名称为 /dev/vdb1~/dev/vdb4, 逻辑分区是从5开始。所以我们可以得出/dev/vdb该硬盘位新的盘。
3). 对磁盘进行分区并初始化:
输入命令 fdisk +磁盘文件名的绝对路径
如上图所示,终端会输出信息一些帮助信息供我们选择,这里我们的选择如下:
n : 新增一个分区。
p:作为主分区
1:一个分区
回车默认
回车默认
输入:w
4). 再次查看磁盘信息情况,可以发现分区创建成功。
5). 给分区指定文件系统格式,这里将文件系统指定为ext4格式。
mke2fs -t ext4 /dev/vdb1
6). 检查文件系统,查看文件,扇区是否有错误,参数 -p
e2fsck -p /dev/vdb1
tune2fs -l /dev/sdb1 #查看文件系统的详细信息
-l 查看详细信息
-c 30 /dev/sdb1 设置多少次检查(挂载多少次检测)
-i 70d /dev/sdb1 70天检查(多少天检测)
e2label /dev/sdb1 www-data #指定转标
findfs www-data #查找转标
7). 将分区挂载(分临时挂载和永久性挂载,这里只做永久性挂载)到某个挂载点,这里挂载到/opt
编辑/etc/fstab 文件,把分区与挂载点的信息写入该文件
7.让挂载信息立即生效
mount -a
8.查看磁盘使用情况 df -h