Linux硬盘挂载与磁盘分区基础(一)(主分区、拓展分区、逻辑分区)

  我们常用windows时,会区分C盘、D盘之类的(A、B盘是软盘)就是所谓的分区,这么做为了方便数据管理,比如扩容之类的。

  本文采用Linux(Ubuntu20.04)来介绍分区,其它Linux系统基本一样的。

  首先,我们需要熟悉几个概念:

  硬盘:存储数据用的硬件,比如移动硬盘、固态硬盘、U盘等,有了硬盘,我们一般不能直接存储数据,需要进行分区,可以理解为数据管理,你数据存进去了,存在哪个位置,我们后续也会读取出来。而分区我们一般又分为主分区、拓展分区、逻辑分区。

  主分区:可以理解为硬盘分出来的一部分区域,用于存储数据,比如我们的C盘,一般作为启动分区。主分区可以存在多个,但是至少需要一个。

  拓展分区:分完主分区了,剩下的部分区域,一般就是拓展分区(除非你想浪费部分空间)。所以拓展分区最多只能有一个。

  逻辑分区:逻辑分区依赖于拓展分区,因为硬盘不能直接使用来存储数据,而拓展分区时剩余的部分区域,也是不能直接使用的,想要使用,我们就必须在拓展分区上继续划分逻辑分区。拓展分区上的逻辑分区可以有多个。

  分区表:创建了分区,分区容量、起始位置等分区信息就是存储在分区表,分区表常用有两种:MBR分区表、GPT分区表。

    MBR分区表:在MBR分区表中最多4个主分区或者最多3个主分区+1个扩展分区,也就是说扩展分区只能有一个,其它的都是主分区,但是它们的总个数不能超过4个,且单个主分区的最大容量为2TB(=2048GB)。
    GPT分区表:在GPT分区表中,主分区和拓展分区个数最多为128个,但是拓展分区最多只有1个,而且单个主分区的大小最大容量为18EB(=18432PB =18874368TB =19327352832GB)

  了解了基本概念,现在我们可以来看在linux下怎么来进行分区操作(我这里是虚拟机):

  创建分区与挂载

  1、当前插上硬盘,如果linux系统可以识别,我们可以在/dev/目录下看到有相应的设备文件,通常是sda、sdb、sdc、hda、hdb、hdc之类的,而像sda1、sda2、sdb1、sdb2之类的就是创建的分区:

  

  或者我们可以通过fdisk命令来查看:sudo fdisk -l 

  

  或者通过lsblk命令来查看,总之方式有很多,就是找到你对应的硬件设备,我这里是/dev/sdb,可以看到它有10GB,但是我们需要进行分区挂载后才能使用

  

  2、我们有两种分区方式:fdiskparted

    fdisk是一个较老的分区表创建和管理工具,它可以用来创建、删除、调整分区大小等,支持MBR分区表(貌似最新版也在开始支持GPT分区表),也就是说fdisk创建的分区最大为2T。
    parted是一个更现代的分区工具,功能比fdisk更丰富,支持MBR和GPT分区表。

  fdisk创建分区

  开始分区:sudo fdisk /dev/sdb,注意,这里/dev/sdb是我的设备

  如果创建主分区,那么依次输入命令:

  

  这样我们就创建了一个主分区,我们可以通过sudo fdisk -l /dev/sdb来查看

  

  如果要创建一个拓展分区,输入的命令类似,只是类型是拓展分区,这里演示我就是用来剩余的全部空间:

  

  有了拓展分区,我们还可以创建逻辑分区:

  

  parted创建分区

  开始分区:sudo parted /dev/sdb,注意,这里/dev/sdb是我的设备。

  输入print打印分区表信息,可以看到分区表类型是msdos,也就是MBR分区表

   

  输入mklabel gpt修改分区表类型,然后输出信息,可以看到分区表类型变成了gpt,

  

  注:因为拓展分区和逻辑分区对MBR分区表才有效,所以我这里演示也是用MBR分区表,和fdisk统一一下,执行mklabel msdos修改分区表类型:

  

  输入mkpart primary 0GB 5GB创建主分区(mkpart命令也可以通过百分比来指定,例如:mkpart primary 0% 50%

  

  如果还需要拓展分区,可以输入mkpart extended 5GB 100%创建一个拓展分区

  

  有了mkpart logical 5GB 7GB拓展分区,还可以创建逻辑分区,输入创建一个逻辑分区

  注意,这里创建逻辑分区时,起始位置和截止位置必须在拓展分区内,它不是相对于拓展分区的起始位置

   

  最后输入quit命令退出parted分区

  3、分区创建好了,接下来就是格式化分区与挂载了,

  注:我这里创建了三个分区:主分区/dev/sdb1、拓展分区/dev/sdb2、逻辑分区/dev/sdb5,读者需要根据自己的真实情况来。

  现在我们挂载分区,首先格式化分区,为分区创建文件系统,一般常用的有ext4和xfs两种:

  注意:格式化会丢失分区里面的所有数据,所以请注意备份

    # ext4是Linux中最常用的文件系统之一,它是ext文件系统的进化版本。它是许多Linux发行版的默认文件系统。
    # 格式化成ext4文件系统,/dev/sdb1是我的分区名,它可以是主分区,也可以是逻辑分区
    sudo mkfs.ext4 /dev/sdb1
    sudo mkfs.ext4 /dev/sdb5
    # 或者下面两个命令,和上面两个命令是等价的
    sudo mkfs -t ext4 /dev/sdb1
    sudo mkfs -t ext4 /dev/sdb5
    
    # xfs是一种高性能的日志文件系统,适用于大容量存储和大文件,它具有快速的读写速度、高效的空间管理和稳定的性能,在处理大文件和大型数据集时效果显著。
    # 格式化成xfs文件系统,下面两个命令是一样的,/dev/sdb1是我的分区名,它可以是主分区,也可以是逻辑分区
    sudo mkfs.xfs /dev/sdb1
    sudo mkfs.xfs /dev/sdb5
    # 或者下面两个命令,和上面两个命令是等价的
    sudo mkfs -t xfs /dev/sdb1
    sudo mkfs -t xfs /dev/sdb5

  为了演示,我这里对sdb1格式化成ext4文件系统,对sdb5格式化成xfs文件系统,即执行命令:

    sudo mkfs.ext4 /dev/sdb1
    sudo mkfs.xfs /dev/sdb5

  如果我们需要查看一个分区的文件系统时什么类型,可以通过sudo lsblk -f /dev/sdb命令查看 

  

  接着就可以挂载了  

    # 创建一个目录,目录名随意,建议在/mnt目录下创建
    sudo mkdir -p /mnt/sdb1 /mnt/sdb5
    # 挂载:mount [分区] [目录]
    sudo mount /dev/sdb1 /mnt/sdb1
    sudo mount /dev/sdb5 /mnt/sdb5
    # 取消挂载
    sudo umount /mnt/sdb1
    sudo umount /mnt/sdb5

  挂载后可以通过df -Th命令查看挂载情况

    

  到这里,我们就可以正常的访问了

  但是为了开机自动挂,我们可以修配置:sudo vi /etc/fstab,在文件末尾加上:

    /dev/sdb1      /mnt/sdb1   ext4  defaults   0    1
    /dev/sdb5      /mnt/sdb5   xfs   defaults   0    1

  4、分区创建好了,接下来说说扩容。

  所谓扩容,就是重新设置分区的起始扇区与截止扇区。

  首先,我们应该要注意到了,上面在创建分区的时候,我们有输入一个起始扇区与截止扇区,这个可以理解为一块连续的区域,这块区域的大小就是分区的大小,而我们存储的数据就在这块分区内部,所以一般的,如果我们分区已经挂载并存储了数据,如果你不想存储的数据丢失,那么我们就必须把起始扇区保存一致,扩大截止扇区。这就引出了另外一个问题,比如文本,我们创建的主分区与拓展分区(逻辑分区)是相接的,也就是说想扩容,我们就必须压缩拓展分区,这个可以采用一些扩容软件进行压缩而释放部分空间来完成,但是本文只是基础介绍,所以我们只是演示一下,为此,我们可以先对逻辑分区进行扩容,扩容演示完成将逻辑分区与拓展分区删除,这样就有空间给我们的主分区了。

  逻辑分区扩容

  先说说逻辑分区,因为逻辑分区在拓展分区上,所以需要拓展分区有连续空间给到我们,正好我们这里拓展分区总共5G,但是逻辑分区只有2G,还有剩余的3G可供分配。

  为了掩饰数据不丢失,我们可以创建一个文件,并输入内容:

    # 切换root
    sudo su root
    # 创建一个log文件
    echo aaaaa > /mnt/sdb5/log
    # 输出内容
    cat /mnt/sdb5/log

  

  fdisk扩容

  使用fdisk进行扩容,我们可以这么做:先删除原来分区,然后创建相同名称的分区,并保持起始扇区不变,并将截止扇区扩大。

  使用fdisk命令重新进入分区:sudo fdisk /dev/sdb

   

  parted扩容

  使用parted扩容,我们也可以参照fdisk的做法,先删除再创建。

  输入sudo parted /dev/sdb进入分区

  

  但是parted提供了一个很好用命令:resizepart,我们进入parted分区后,使用resizepart 5 9GB来直接改变分区的大小(5是分区编号)

  

  到这里,使用fdisk或者parted进行分区大小调整就完成了,然后重启系统或者使用partprobe命令更新分区表  

    # 重启系统
    sudo reboot
    # 或者直接更新分区表
    sudo partprobe /dev/sdb

  最后调整文件系统:

    # 如果是ext4,使用resize2fs命令,后面参数是分区
    sudo resize2fs /dev/sdb5
    # 如果是xfs,使用xfs_growfs命令,后面参数是挂载点
    sudo xfs_growfs /mnt/sdb5

  我这里sdb5是xfs文件系统,就是执行sudo xfs_growfs /mnt/sdb5,但是sdb1是ext4文件系统,就是执行sudo resize2fs /dev/sdb1

  然后我们可以查看空间扩容以及文件是否正常了:

  

  主分区扩容

  上面逻辑分区扩容完成了,我们现在可以把逻辑分区和拓展分区删除了,留出空间来演示主分区扩容:

  首先我们卸载挂载点:sudo umount /mnt/sdb5

  fdisk删除分区

  进入分区管理:sudo fdisk /dev/sdb

  

  parted删除分区

  进入分区管理:sudo parted /dev/sdb

  

  到这里,我们就只剩下一个主分区了,我们就可以为我们的主分区进行扩容了,和逻辑分区的操作一样,先删除分区,再创建相同编号、起始扇区的分区,但是截止扇区扩大了,或者用partedresizepart命令来调整大小,注意不要移除文件系统签名,否则格式化会丢失数据。

  

  总结

  这里就写这么多吧,个人经验总结,也当是留个笔记,后面有空再写物理卷、卷组、逻辑卷相关的东西吧。

  不过话说回来,一个系统的分区数据管理建议好好规划一下,不然后续如果硬盘不够了,可能会很麻烦,其次,一个很好的习惯就是:常备重要数据!

posted @ 2024-11-11 19:09  没有星星的夏季  阅读(931)  评论(0编辑  收藏  举报