分享好友 最新动态首页 最新动态分类 切换频道
linux:磁盘管理和文件系统
2024-12-26 08:33

环境

linux:磁盘管理和文件系统

  • centos7.1
  • ubuntu21.10

参照
《详解Linux虚拟系统下常用文件系统》
《Linux系统LVM逻辑卷工作原理,必看~》
《MBR与GPT》
《MBR与GPT:磁盘分区方式》
《MBR分区格式最大支持容量?》

一般我们的笔记本或台式机上都会有一块硬盘,500G或1T大小。

那么,我们应该怎么使用这个硬盘呢
最简单的方式:把它看做是一个大文件容器,我们直接从里面读写字节。
这种方式也可以,不过有几个大缺点

  • 如果我们把磁盘整体当成一个文件容器,那么我们就不得不在其他地方存储里面的目录、文件大小、字节偏移量等信息
  • 由于硬盘容量太大,如果我们把它当做一个整体管理,一旦里面某个字节发生了错误,很可能整个硬盘都不能用了,所以我们有必要将它划分成几个隔离的区域
  • 还有,一般电脑开机后会去硬盘加载操作系统(linux或window,那么去硬盘的哪里去加载呢

基于以上几点,我们发现不能简单的将一个硬盘当做一个大文件容器使用(一般来说)。
那么,怎么办呢

  • 第一、按照某种规则,将硬盘划分成几个区域,区域之间互相隔离
  • 第二、我们需要在硬盘上存一个特殊的东西以标记电脑开机后可以从这个硬盘上加载系统
  • 第三、我们需要给每个分区上指定一种文件存储格式,比如:文件名字、目录层级、文件大小、字节偏移、权限属性等

好了,基于上面几点,我们可以对这块硬盘改造了(基于 centos7.6)

  • 首先、使用mbr分区方式将硬盘()分成4个区域,并命名为(、、、)
    那么,mbr是怎么划分的呢?mbr分区是将硬盘的前512个字节拿出来,其中前 446 个字节存储程序代码(电脑启动后第一个执行的代码,446字节足矣,中间 64 字节存储分区表(4*16字节,最多允许4个分区,最后面 2 个字节是魔法数字(当它是 0x55AA的时候,表示电脑开机可以从这个硬盘加载系统

    下图来自:https://mp.weixin.qq.com/s/LIsqRX51W7d_yw-HN-s2DA

  • 然后、我们还需要对这些分区进行文件系统初始化,比如:我们可以将sda1初始化为 文件系统格式,将sda2初始化为文件系统格式
  • 最后、我们需要将这些分区挂载到linux上的目录树中,比如:我们将 sda1挂载到 上,将sda2挂载到上

之后,我们就可以愉快的操作linux了)。。。

从上图我们可以读到

  • 有两个块设备,sda和sr0,sda就是我们的硬盘,而sr0是CD
  • centos将硬盘sda分成sda1和sda2两个区,其中sda1这个区分了1G,并且初始化成 文件系统,挂载到 目录下,sda2初始化成文件系统(这是一种逻辑卷管理技术
  • sda2又被划分成了两个区域,其中centos-root 分了17G并初始化成 文件系统,挂载到目录下,而centos-swap分了2G并初始化成文件系统,挂载到下

    lvm是一种逻辑卷技术,可以划分一块分区或硬盘,也可以整合多块分区和多块硬盘到一个卷组(VG),最终在VG上分出多个逻辑卷(LV)供linux挂载使用。
    swap是一项内存管理技术,它的功能是:在内存不足时将不活跃的进程临时转移到硬盘上,以防止内存不够用。

还是使用 命令

从上图我们可以读到

  • 有两个块设备,sda和sr0,sda就是我们的硬盘,而sr0是CD

    其他的 loop0-loop12是ubuntu的snap软件挂载的只读文件包,可参考:《什么是Snap应用?》

  • ubuntu将硬盘sda划分成了3个区域,sda1、sda2和sda3,其中sda1只分了1M并且没有初始化文件系统也没有挂载,而sda2分得513M并初始化为文件系统挂载到下,最后sda3分得39.5G并初始化为文件系统挂载到目录下

注意:取消挂载前,需要我们先退出对 /mnt的访问

上面我们测试的是将整个硬盘当做一个大文件容器或者是整个磁盘做一个文件系统。但它们都不符合我们正常使用的套路,于是我们按照传统方式再实验一次

依次执行下面命令即可

 
 
 
 
 
 
 

在上面的实验中,我们对硬盘整体或其下的分区初始化成xfs文件系统,那么

  • 为什么要初始化xfs文件系统呢
  • 能不能初始化成不同的文件系统呢,比如1个xfs,2个ext4
  • 如果说不同的硬盘分区使用不同的文件系统,那么我们可以跨文件系统拷贝、移动文件吗

要理解上面的问题,我们就不得不说linux中的虚拟文件系统了(VFS)。

在linux中一切外围设备皆文件,linux内部维护着一个虚拟的文件系统(VFS,对应着linux的目录树

  • 节点挂载着一个xfs格式的硬盘分区
  • :挂载着一个ext4格式的硬盘分区
  • 等等。。。

尽管,不同的节点是以不同的文件系统管理的,但它们加载到了linux内部,都会映射到 VFS 上,这样,当我们在程序中读写、甚至跨设备拷贝文件时,便不再用考虑不同文件系统了。

  • window系列文件系统

    FAT、FAT16、FAT32:早期window文件系统
    NTFS:window2000以后的现行文件系统

  • linux系列文件系统
    ext2、ext3、ext4、xfs、SWAP等

    • ubuntu21.10 使用 ext4作为外设文件系统
    • centos7.1使用xfs作为外设文件系统

这里只做简单介绍,详细对比参考引用的文章链接。

MBR(Master Boot Record)主引导记录,相对古老的分区方式,自1982年创建,使用至今。
它是取硬盘的前512个字节记录 MBR 信息。
而这512个字节中,前446 字节存放主引导程序代码(一般放几个汇编命令,足够用,中间64个字节存放分区信息,最后2个字节是魔法数字(如果是:0x55AA 就表示,可以开机从这里加载操作系统)。

我们可以先观察下 centos7.6 的第一块硬盘

我们重点关注中间的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块磁盘组成一个磁盘组,当写入数据时,会同时写入数据本身以及数据的异或运算结果,并将它们均匀的写入到不同的硬盘,被广泛的应用,它的特点是

    • 兼顾数据安全性和磁盘空间(相比raid0和raid1
    • 对读写性能几无影响
  • raid10
    这个是raid0+raid1技术的组合,比如:有4块硬盘,先分别两两制作成RAID 1磁盘阵列,以保证数据的安全性,然后再对两个RAID 1磁盘阵列实施RAID 0技术,进一步提高硬盘设备的读写速度。

raid技术的实现有 硬件raid和软件raid。

  • 硬件raid就是使用阵列柜或阵列卡,只需要我们将多块硬盘插进去就行了,再看看说明书操作,即操作简单、性能又好,如果企业要做raid的话,一般就是硬件raid
  • 软件raid是采用软件技术模拟的效果,一般学习其原理的时候使用

前面我们讨论的都是直接对硬盘进行的操作(raid技术也是最终提供“硬盘”,这就有个问题:当我们硬盘容量不够或分区不当需要扩容或调整分区大小时,我们需要关机使用其他专门软件处理,而且很容易破坏数据。

为了解决这个问题,出现了一种LVM(Logical volume Manager,逻辑卷管理的简称
)技术。它的原理是将原来的硬盘或硬盘分区进行重新的拆分、组装成一个VG(Volume Group,卷组),再在VG上划分出LV(逻辑卷)出来供系统使用,总之LVM是一种硬盘等存储设备的虚拟化管理技术。

最新文章
AI“魔改”不能一笑了之
  王彦  《红楼梦》里宝黛动武,《西游记》中悟空举枪,西门庆与潘金莲缘定三生,诸葛丞相喝红酒戴眼镜打电话顺带比个心……从四大名著到近年来观众熟悉的《甄嬛传》《还珠格格》等,一批热门国产影视剧集体遭遇AI“魔改”旋风。  日
AI 生成 3D 视频软件:2024 年系统开发新趋势!
你是否曾经对3D视频感到惊叹不已,但又觉得制作这样的内容似乎遥不可及?是否曾经幻想过,能够像变魔术一样轻松生成令人惊叹的3D视频?在技术飞速发展的今天,我们的梦想正逐步变为现实。尤其是AI生成3D视频的软件,正在引领2024年系统开发
Maya插件Zoo Tools Pro v2.8.1快捷键增强管理工具箱
Zoo Tools 2 is a modular framework for Maya that would be useful for artists and TDs/developers. You can either just use it or add your own tools if you’re a coder.The developers pointed out that toolsets are only one asp
Docker使用tomcat部署java项目
前提:数据库及表已经建立好1、 先将项目放到 Linux 上某个目录下,如 /home/ubuntu/Project/pinter/pinter注意:如果项目是 war 包形式的,需要先创建 pinter 文件夹,然后在文件夹内对 war 包进行解压:unzip pinter.war最终目录结构2、
2024年人工智能股票龙头概念前十名
紫光股份是国内集成电路设计领域的领先企业,同时也在人工智能芯片研发方面取得了显著成果。公司通过技术创新和战略合作,不断提升自身在AI芯片领域的竞争力。八、科大讯飞 002230科大讯飞在语音识别、语音合成等技术方面处于国内领先地位
AI生成绝美美女写真,轻松一键打造你的数字女神!
在这个科技飞速发展的时代,很多宝子们或许都有这样的经历:为了拍出一张令自己满意的美女写真,几乎要花费十几小时,甚至几百元去找专业摄影师。然而,随着AI技术的不断进步,AI绘画和生成工具的出现,使得这一切都变得无比轻松。在这篇文
AI技术新突破,赋能各行各业,引领未来科技潮流
AI技术再次取得重大突破,成为IT领域备受瞩目的焦点,这一新兴技术不仅在学术界引发广泛讨论,更在商业、医疗、教育等多个行业中展现出巨大的应用潜力,预示着新一轮的科技革命即将到来。面对AI技术的快速发展和广泛应用,相关从业人员和企
2024小学数学名师工作室个人研修计划(12则).pdfVIP
2024小学数学名师工作室个人研修计划(12篇)个人研修计划是指个人为提升自己的知识、技能和能力而制定的一份详细计划。这通常包括学习目标、学习内容、学习方法和时间安排等。以下是小编为大家整理的关于小学数学名师工作室个人研修计划范
kvm-web管理工具webvirtmgr
1 install epel 源,git,gcc等软件sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmsudo yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
相关文章
推荐文章
发表评论
0评