linux:磁盘管理和文件系统
参照:
《详解Linux虚拟系统下常用文件系统》
《Linux系统LVM逻辑卷工作原理,必看~》
《MBR与GPT》
《MBR与GPT:磁盘分区方式》
《MBR分区格式最大支持容量?》
1. 当我们有一个硬
环境: 参照: 《详解Linux虚拟系统下常用文件系统》 《Linux系统LVM逻辑卷工作原理,必看~》 《MBR与GPT》 《MBR与GPT:磁盘分区方式》 《MBR分区格式最大支持容量?》 1. 当我们有一个硬盘? 一般我们的笔记本或台式机上都会有一块硬盘,500G或1T大小。 那么,我们应该怎么使用这个硬盘呢? 最简单的方式:把它看做是一个大文件容器,我们直接从里面读写字节。 这种方式也可以,不过有几个大缺点: 基于以上几点,我们发现不能简单的将一个硬盘当做一个大文件容器使用(一般来说)。 那么,怎么办呢? 好了,基于上面几点,我们可以对这块硬盘改造了(基于 centos7.6): 之后,我们就可以愉快的操作linux了(touch /demo.txt)。。。 2. 查看centos和ubuntu的实际情况 2.1 查看centos情况 使用lsblk命令列出块设备情况: 从上图我们可以读到: 2.2 查看ubuntu情况 还是使用 lsblk命令: 从上图我们可以读到: 3. 当我们又有了一块新硬盘? 让我们在centos7.6下新添加一个2G的硬盘(可能需要重启),如下: 那么,此时我们准备怎么用呢? 3.1 将整个硬盘当做大文件容器使用 因为硬盘安装后,linux就自动挂载到了 /dev/sdb下,所以我们可以把它当做大文件容器读写,如下: 但一般我们不会这么干。。。 3.2 将整个硬盘初始化为文件系统格式 xfs 直接执行mkfs.xfs: 可以看到,它已经被初始化为 xfs文件系统了,现在就让我们挂载上去吧: 3.3 将它挂载到linux目录上 可以看到,已经挂载上了。 3.4 验证挂载后能否正常使用 那挂载上后就要检查下是否能正常使用: 测试完成后,我们把它取消挂载: 我们可以看到,取消挂载后,便在 /mnt目录下看不到 demo.txt 文件了。 注意:取消挂载前,需要我们先退出对 /mnt的访问 3.5 重新挂载后观察demo.txt是否还存在? 可以看到,重新挂载后 demo.txt 又出现了。 3.6 将挂载配置写入到 /etc/fstab 里 上面我们实现的挂载,在机器重启后会失效,我们可以将 挂载的配置写入到 /etc/fstab 配置文件里: 这样,当我们重启后就会自动挂载了。 4. 当我们又有了一块新硬盘? 上面我们测试的是将整个硬盘当做一个大文件容器或者是整个磁盘做一个文件系统。但它们都不符合我们正常使用的套路,于是我们按照传统方式再实验一次: 4.1 新添加一块10G硬盘 4.2 按照mbr格式分区 我们使用 fdisk 将硬盘分区。 在分区前,我们可以先查看这个硬盘的分区情况: 可以看到,这个硬盘上没有任何分区。 执行 fdisk /dev/sdc: 看上面的提示:“更改将停留在内存中”,说明一会我们需要将分区信息写入到硬盘中。 按m看下帮助: 我们接着按n: 这个提示让我们选择分区类型,熟悉MBR分区的会知道,MBR格式的分区表只有64字节,所以最多允许4个分区(称为主分区),但它显然是不够的unix磁盘限额,这个时候,我们可以将其中一个主分区当做扩展分区,然后在扩展分区内部再进行划分(称为逻辑分区),再进行分得话,规则就很灵活了,就没有4个主分区的限制了,不过扩展分区只能有一个。 这里,我们直接选择扩展分区,输入e: 经过几个提示操作,我们就将这个硬盘划分成一个逻辑分区。 输入p命令,列出已有的分区: 到了这里,我们还需要在这个扩展分区上划分出5个逻辑分区(为什么是5个?因为想对比mbr最多4个主分区的限制),继续输入 n: 我们可以从提示上看出来,当前已有一个扩展分区,还可以再创建3个主分区,我们不能再创建扩展分区了,但是我们可以创建逻辑分区,让我们输入l: 上图,我们新增了一个2G大小的逻辑分区,同样的操作,让我们创建另外四个逻辑分区(注意:最后一个逻辑分区我们可以使用默认大小,不必指定2G),完成后输入p打印分区表: 这样5个逻辑分区就完成了,下面,我们需要输入 w 以将MBR分区信息写入到磁盘: 可以看到,已经同步完了。 4.3 查看分区后的硬盘情况 4.4 将创建的分区进行文件系统格式化并挂载 依次执行下面命令即可:
执行完成后,观察硬盘情况: 现在让我们把它们别挂载到 [mnt_sdc5, mnt_sdc9] 上: 4.5 测试挂载后的情况 简单测试下,其实和上面的把一整个硬盘都挂载上是一个效果: 4.6 将挂载的配置写入到 /etc/fstab 里 这样,当我们重启后,能自动挂载。 5. 文件系统 在上面的实验中,我们对硬盘整体或其下的分区初始化成xfs文件系统,那么 要理解上面的问题,我们就不得不说linux中的虚拟文件系统了(VFS)。 5.1 虚拟文件系统 VFS 在linux中一切外围设备皆文件,linux内部维护着一个虚拟的文件系统(VFS),对应着linux的目录树: 这颗树的节点可以挂载着不同的文件系统,如: 尽管,不同的节点是以不同的文件系统管理的,但它们加载到了linux内部,都会映射到 VFS 上,这样,当我们在程序中读写、甚至跨设备拷贝文件时,便不再用考虑不同文件系统了。 5.2 常见文件系统 6. 硬盘分区方式(MBR和GPT) 这里只做简单介绍,详细对比参考引用的文章链接。 6.1 MBR 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个或以上的分区,那怎么办呢? 其实上面的实验已经做出来了,这里再说明下: 我们将其中一个主分区拿出来当做扩展分区,然后在这个扩展分区内部做一个链式结构,这样每个节点就是一个逻辑分区,并且逻辑分区的多少理论上没有限制,这样就能解决问题了。 6.2 GPT GPT(GUID partition table)全局唯一标识分区表,这个是新的分区格式,属于 UEFI 标准的一部分。 GPT本身兼容 MBR,功能要比MBR强大的多,分区数量上、硬盘容量上几乎没有限制。正因为如此,在GPT中没有扩展分区和逻辑分区的概念,所有的分区都是主分区。 通常来说,MBR和BIOS(MBR+BIOS)、GPT和UEFI(GPT+UEFI)是相辅相成的。这对于某些操作系统(例如 Windows)是强制性的,但是对于其他操作系统(例如 Linux)来说是可以选择的。 7. 磁盘阵列(raid) 7.1 概念 上面我们都是把硬盘拿来直接做分区挂载使用的,它有几个缺点: 正是基于以上原因,出现了磁盘阵列技术:磁盘阵列(Redundant Arrays of Independent Disks,RAID)。 raid能将多个磁盘组装成一组,同时对外提供服务,即提高了读写性能,又提高了数据安全性。 常见的raid级别有: raid1 将2或多块磁盘组成一个磁盘组,当数据写入时,会同时写入到组内各个磁盘。它的特点是 raid5 至少3块磁盘组成一个磁盘组,当写入数据时,会同时写入数据本身以及数据的异或运算结果,并将它们均匀的写入到不同的硬盘,被广泛的应用,它的特点是 raid10 这个是raid0+raid1技术的组合,比如:有4块硬盘,先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性,然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。 7.2 实现方式 raid技术的实现有 硬件raid和软件raid。 看几个硬件的商品: 8. LVM技术 前面我们讨论的都是直接对硬盘进行的操作(raid技术也是最终提供“硬盘”),这就有个问题:当我们硬盘容量不够或分区不当需要扩容或调整分区大小时,我们需要关机使用其他专门软件处理,而且很容易破坏数据。 为了解决这个问题,出现了一种LVM(Logical volume Manager,逻辑卷管理的简称 )技术。它的原理是将原来的硬盘或硬盘分区进行重新的拆分、组装成一个VG(Volume Group,卷组),再在VG上划分出LV(逻辑卷)出来供系统使用,总之LVM是一种硬盘等存储设备的虚拟化管理技术。 9. 磁盘阵列(raid)+LVM raid解决了磁盘的性能和安全性问题,LVM解决了动态扩容的问题,那么能否将两种技术结合呢?答案是可以的,比如:底层使用raid,上层做LVM。。。 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |