首页 > 系统相关 >Linux硬盘挂载与磁盘分区基础(一)(主分区、拓展分区、逻辑分区)

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

时间:2024-11-11 19:09:20浏览次数:3  
标签:分区 sudo dev 分区表 sdb5 Linux fdisk 磁盘分区

  我们常用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/sdb5

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

  

  主分区扩容

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

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

  fdisk删除分区

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

  

  parted删除分区

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

  

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

  

  总结

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

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

标签:分区,sudo,dev,分区表,sdb5,Linux,fdisk,磁盘分区
From: https://www.cnblogs.com/shanfeng1000/p/18343855

相关文章

  • Linux 关机的shell脚本
    今天突发奇想想写一个关机的脚本然后去找了很多帖子发现写的都不是很详细就打算自己写一个比较详细的:首先用vim编辑器先创建一个脚本文件(我是在桌面创建的)(也可以用其他文本编辑器不一定是vim):vimshutdown.sh然后就是在将以下内容输入至“shutdown.sh”中:#!/bin/bash......
  • 关于hive分区表不得不说的故事
    关于hive分区表不得不说的故事1.hive分区表的理解Hive的分区表是一种特殊设计的表结构,它在逻辑上将数据按照预先定义的分区键进行划分,在物理上对应于Hadoop分布式文件系统(HDFS)的不同目录。分区表的主要目的是为了优化大规模数据集的存储与查询性能hive分区表主要是一种重要......
  • 深入理解Linux内核中的虚拟文件系统(VFS)
    深入理解Linux内核中的虚拟文件系统(VFS)1.引言今天我们要探讨的是Linux内核中的虚拟文件系统(VFS)。VFS作为一层抽象,为各种不同的文件系统提供了一个统一的接口。无论是你常用的ext4,还是远程的NFS,都能通过VFS提供的相同接口进行交互。这期教程我会带你深入了解VFS的核心原理......
  • 《Linux操作系统》课程标准
      《Linux操作系统》是计算机类专业的一门专业课程,是培养和检验学生在Linux平台上熟练使用Linux操作系统,掌握基本服务器配置与管理等综合应用能力的一门重要的实践性课程。目的是掌握LINUX的安装与启动、LINUX远程登录、LINUX的磁盘文件管理,学会正则表达式、shell编程、用......
  • Linux基础(2)以及资源耗尽病毒的编写(详见B站泷羽sec)
    免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等,不承担任何责任。所有使用本教程内容的个人或组织应自行承担全部风险。Linux目录介绍:/bin 二进制可执行文......
  • linux 计算程序运行时间, 及时间差
    linux计算程序运行时间,及时间差统计Shell脚本执行时间,帮助分析改进脚本执行linuxshell计算时间差值#!/bin/bash#计算时间差date1=$(date+"%Y-%m-%d%H:%M:%S")echo"时间1:$date1"echo"延时10s"sleep10date2=$(date+"%Y-%m-%d%H:%M:%S")echo"时间2......
  • Linux kernel 堆溢出利用方法(二)
    前言本文我们通过我们的老朋友heap_bof来讲解Linuxkernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kerneloff-by-null+dockerescape来深入了解这种漏洞的利用手法。(没了解过docker逃逸的朋友也可以看懂,毕竟有了root权限后,docker逃逸就变的相对简单了)。......
  • Linux常用命令之touch命令详解
    touch命令详解touch是一个在Unix和类Unix操作系统(如Linux和macOS)中广泛使用的命令行工具,主要功能包括更新文件的时间戳(访问时间和修改时间)和创建新的空文件。touch命令非常灵活,可以通过多种选项来定制其行为,以满足不同的需求。基本语法touch命令的基本语法如......
  • linux中使用cd指令跳转路径时带不带“/”
    在Linux中使用`cd`命令跳转目录时,是否需要`/`取决于路径的类型。以下是规则:1.**绝对路径:以`/`开头**-如果路径以`/`开头,表示从根目录开始的**绝对路径**。-使用绝对路径可以精确定位到文件系统中的某个目录,不受当前目录影响。-例如:```bashcd/......
  • linux进程概念
    前言:进程是linux中非常重要的概念,执行的每一个程序都是进程。因此我们需要了解进程。1.冯洛伊曼体系结构我们常见的计算机以及不常见的计算机大多都遵循冯洛伊曼体系结构。冯洛伊曼体系结构由五部分组成,分别是输出设备,输入设备,存储器,运算器和控制器组成。输入设备包括键......