赞
踩
环境:
参照:
《详解Linux虚拟系统下常用文件系统》
《Linux系统LVM逻辑卷工作原理,必看~》
《MBR与GPT》
《MBR与GPT:磁盘分区方式》
《MBR分区格式最大支持容量?》
一般我们的笔记本或台式机上都会有一块硬盘,500G或1T大小。
那么,我们应该怎么使用这个硬盘呢?
最简单的方式:把它看做是一个大文件容器,我们直接从里面读写字节。
这种方式也可以,不过有几个大缺点:
基于以上几点,我们发现不能简单的将一个硬盘当做一个大文件容器使用(一般来说)。
那么,怎么办呢?
好了,基于上面几点,我们可以对这块硬盘改造了(基于 centos7.6):
sda
)分成4个区域,并命名为(sda1
、sda2
、sda3
、sda4
)ext4
文件系统格式,将sda2初始化为xfs
文件系统格式;/boot
上,将sda2挂载到/
上;之后,我们就可以愉快的操作linux了(touch /demo.txt
)。。。
使用lsblk
命令列出块设备情况:
从上图我们可以读到:
xfs
文件系统,挂载到 /boot
目录下,sda2初始化成LVM2_member
文件系统(这是一种逻辑卷管理技术);xfs
文件系统,挂载到/
目录下,而centos-swap分了2G并初始化成swap
文件系统,挂载到[swap]
下;
lvm是一种逻辑卷技术,可以划分一块分区或硬盘,也可以整合多块分区和多块硬盘到一个卷组(VG),最终在VG上分出多个逻辑卷(LV)供linux挂载使用。
swap是一项内存管理技术,它的功能是:在内存不足时将不活跃的进程临时转移到硬盘上,以防止内存不够用。
还是使用 lsblk
命令:
从上图我们可以读到:
有两个块设备,sda和sr0,sda就是我们的硬盘,而sr0是CD;
其他的 loop0-loop12是ubuntu的snap软件挂载的只读文件包,可参考:《什么是Snap应用?》
ubuntu将硬盘sda划分成了3个区域,sda1、sda2和sda3,其中sda1只分了1M并且没有初始化文件系统也没有挂载,而sda2分得513M并初始化为vfat
文件系统挂载到/boot/efi
下,最后sda3分得39.5G并初始化为ext4
文件系统挂载到/
目录下;
注意:ubuntu21.10 使用的是GPT分区格式,不同于MBR分区格式,从下面的命令结果中可以看出:
虽说是两个分区格式,但它们本质都是将硬盘隔离成不同的区域管理,关于 MBR 和 GPT 可以参考后面部分。
让我们在centos7.6下新添加一个2G的硬盘(可能需要重启),如下:
那么,此时我们准备怎么用呢?
因为硬盘安装后,linux就自动挂载到了 /dev/sdb
下,所以我们可以把它当做大文件容器读写,如下:
但一般我们不会这么干。。。
xfs
直接执行mkfs.xfs
:
可以看到,它已经被初始化为 xfs
文件系统了,现在就让我们挂载上去吧:
可以看到,已经挂载上了。
那挂载上后就要检查下是否能正常使用:
测试完成后,我们把它取消挂载:
我们可以看到,取消挂载后,便在 /mnt
目录下看不到 demo.txt 文件了。
注意:取消挂载前,需要我们先退出对 /mnt的访问
可以看到,重新挂载后 demo.txt 又出现了。
上面我们实现的挂载,在机器重启后会失效,我们可以将 挂载的配置写入到 /etc/fstab
配置文件里:
这样,当我们重启后就会自动挂载了。
上面我们测试的是将整个硬盘当做一个大文件容器或者是整个磁盘做一个文件系统。但它们都不符合我们正常使用的套路,于是我们按照传统方式再实验一次:
我们使用 fdisk
将硬盘分区。
在分区前,我们可以先查看这个硬盘的分区情况:
可以看到,这个硬盘上没有任何分区。
执行 fdisk /dev/sdc
:
看上面的提示:“更改将停留在内存中”,说明一会我们需要将分区信息写入到硬盘中。
按m
看下帮助:
我们接着按n
:
这个提示让我们选择分区类型,熟悉MBR分区的会知道,MBR格式的分区表只有64字节,所以最多允许4个分区(称为主分区
),但它显然是不够的,这个时候,我们可以将其中一个主分区
当做扩展分区
,然后在扩展分区
内部再进行划分(称为逻辑分区
),再进行分得话,规则就很灵活了,就没有4个主分区
的限制了,不过扩展分区只能有一个
。
这里,我们直接选择扩展分区,输入e
:
经过几个提示操作,我们就将这个硬盘划分成一个逻辑分区。
输入p
命令,列出已有的分区:
到了这里,我们还需要在这个扩展分区
上划分出5个逻辑分区
(为什么是5个?因为想对比mbr最多4个主分区的限制),继续输入 n
:
我们可以从提示上看出来,当前已有一个扩展分区
,还可以再创建3个主分区
,我们不能再创建扩展分区
了,但是我们可以创建逻辑分区
,让我们输入l
:
上图,我们新增了一个2G大小的逻辑分区,同样的操作,让我们创建另外四个逻辑分区(注意:最后一个逻辑分区我们可以使用默认大小,不必指定2G),完成后输入p
打印分区表:
这样5个逻辑分区就完成了,下面,我们需要输入 w
以将MBR分区信息写入到磁盘:
可以看到,已经同步完了。
依次执行下面命令即可:
mkfs.xfs /dev/sdc5
mkfs.xfs /dev/sdc6
mkfs.xfs /dev/sdc7
mkfs.xfs /dev/sdc8
mkfs.xfs /dev/sdc9
执行完成后,观察硬盘情况:
现在让我们把它们别挂载到 [mnt_sdc5, mnt_sdc9] 上:
简单测试下,其实和上面的把一整个硬盘都挂载上是一个效果:
这样,当我们重启后,能自动挂载。
在上面的实验中,我们对硬盘整体或其下的分区初始化成xfs文件系统,那么
要理解上面的问题,我们就不得不说linux中的虚拟文件系统了(VFS)。
在linux中一切外围设备皆文件,linux内部维护着一个虚拟的文件系统(VFS),对应着linux的目录树:
这颗树的节点可以挂载着不同的文件系统,如:
/mnt_sdc5
节点挂载着一个xfs格式的硬盘分区;/mnt_ext4
:挂载着一个ext4格式的硬盘分区;尽管,不同的节点是以不同的文件系统管理的,但它们加载到了linux内部,都会映射到 VFS 上,这样,当我们在程序中读写、甚至跨设备拷贝文件时,便不再用考虑不同文件系统了。
window系列文件系统
FAT、FAT16、FAT32:早期window文件系统
NTFS:window2000以后的现行文件系统
linux系列文件系统
ext2、ext3、ext4、xfs、SWAP等
如:
这里只做简单介绍,详细对比参考引用的文章链接。
MBR(Master Boot Record)主引导记录,相对古老的分区方式,自1982年创建,使用至今。
它是取硬盘的前512个字节记录 MBR 信息。
而这512个字节中,前446 字节存放主引导程序代码(一般放几个汇编命令,足够用),中间64个字节存放分区信息,最后2个字节是魔法数字(如果是:0x55AA 就表示,可以开机从这里加载操作系统)。
我们可以先观察下 centos7.6 的第一块硬盘:
你也可以看看自己linux的硬盘前512字节内容。
我们重点关注中间的64字节,这里面存储分区表信息,由于太短,所以只能记录4个主分区
信息(4*16=64)。
而每个分区结构(16个字节)中又各有4个字节记录偏移量和扇区总量的,这就导致最大的偏移量不能超过 232各扇区、每个分区最大不超过232个扇区,又因为1个扇区有512字节,所以一般认为MBR分区支持最大2T的硬盘。
但其实,只要我们分区的时候控制好最后一个主分区的大小是2T,理论上MBR最大支持4T的硬盘。
但如果说能让我们随心所欲划分大小的话,那就是2T的硬盘了。
我们注意到,分区表里64个字节最多允许我们创建四个主分区,但一般我们也会创建5个或以上的分区,那怎么办呢?
其实上面的实验已经做出来了,这里再说明下:
我们将其中一个主分区拿出来当做扩展分区,然后在这个扩展分区内部做一个链式结构,这样每个节点就是一个逻辑分区,并且逻辑分区的多少理论上没有限制,这样就能解决问题了。
GPT(GUID partition table)全局唯一标识分区表,这个是新的分区格式,属于 UEFI 标准的一部分。
GPT本身兼容 MBR,功能要比MBR强大的多,分区数量上、硬盘容量上几乎没有限制。正因为如此,在GPT中没有扩展分区和逻辑分区的概念,所有的分区都是主分区。
通常来说,MBR和BIOS(MBR+BIOS)、GPT和UEFI(GPT+UEFI)是相辅相成的。这对于某些操作系统(例如 Windows)是强制性的,但是对于其他操作系统(例如 Linux)来说是可以选择的。
上面我们都是把硬盘拿来直接做分区挂载使用的,它有几个缺点:
正是基于以上原因,出现了磁盘阵列技术:磁盘阵列(Redundant Arrays of Independent Disks,RAID)。
raid能将多个磁盘组装成一组,同时对外提供服务,即提高了读写性能,又提高了数据安全性。
常见的raid级别有:
raid0
将2或多块磁盘组成一个磁盘组,当数据写入时,会被均匀的写入到不同磁盘。它的特点是
raid1
将2或多块磁盘组成一个磁盘组,当数据写入时,会同时写入到组内各个磁盘。它的特点是
raid5
至少3块磁盘组成一个磁盘组,当写入数据时,会同时写入数据本身以及数据的异或运算结果,并将它们均匀的写入到不同的硬盘,被广泛的应用,它的特点是
raid10
这个是raid0+raid1技术的组合,比如:有4块硬盘,先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性,然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。
raid技术的实现有 硬件raid和软件raid。
看几个硬件的商品:
前面我们讨论的都是直接对硬盘进行的操作(raid技术也是最终提供“硬盘”),这就有个问题:当我们硬盘容量不够或分区不当需要扩容或调整分区大小时,我们需要关机使用其他专门软件处理,而且很容易破坏数据。
为了解决这个问题,出现了一种LVM(Logical volume Manager,逻辑卷管理的简称
)技术。它的原理是将原来的硬盘或硬盘分区进行重新的拆分、组装成一个VG(Volume Group,卷组),再在VG上划分出LV(逻辑卷)出来供系统使用,总之LVM是一种硬盘等存储设备的虚拟化管理技术。
raid解决了磁盘的性能和安全性问题,LVM解决了动态扩容的问题,那么能否将两种技术结合呢?答案是可以的,比如:底层使用raid,上层做LVM。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。