精通Linux磁盘分区的精髓:从理论到实战一网打尽

前言

在这篇技术文章中,我详细介绍了Linux磁盘分区的理论知识,并结合实际示例演示了如何在CentOS 7系统上使用fdisk工具进行磁盘分区和删除操作。无论您是新手还是有一定经验的用户,本文都将帮助您轻松掌握磁盘分区的关键概念和操作技巧。如果您想深入了解如何有效管理您的磁盘空间,并提升系统性能,不容错过这篇内容丰富、实用性强的指南!

磁盘分区前必知

磁盘分区是指将硬盘的整体存储空间划分成多个独立的区域,分别用来安装操作系统、安装应用程序以及存储数据文件等。这些独立的区域就是分区,它们构成了硬盘上的逻辑单元,例如我们常见的C盘、D盘、E盘等。

分区的主要目的是为了更好地管理和使用硬盘空间。通过分区,我们可以将不同类型的文件或程序存放在不同的分区中,从而方便管理和维护。同时,分区还可以提高系统的效率和安全性,限制用户使用的磁盘空间,避免数据丢失或损坏的风险。

在分区过程中,我们通常会考虑一些因素,如每个分区的大小、所使用的文件系统类型等。对于某些操作系统而言,硬盘必须分区后才能使用,否则不能被识别。因此,在安装操作系统或添加新硬盘时,通常需要进行磁盘分区。

完成分区后,还需要对分区进行格式化,并挂载到系统中,才能正常使用。格式化的过程是为分区创建文件系统,而挂载则是将分区与系统中的某个目录关联起来,使得用户可以通过该目录访问分区中的数据。

磁盘分区意味着什么

在安装Linux系统的过程,一般也会有磁盘分区的步骤。这种情况,按照提示选择自动分区即可。

这里需要注意的是,如果是新增硬盘或者对已分区的磁盘重新分区,这些操作将会对现有的分区和存储结构产生直接影响:

  • 数据丢失:重新分区过程中,如果操作不当或没有正确备份数据,可能会导致现有分区中的数据丢失。因此,在重新分区之前,务必确保已经备份了所有重要数据。
  • 分区结构改变:重新分区会改变磁盘上的分区布局。这可能包括删除现有的分区、创建新的分区、调整分区的大小或改变分区的类型等。
  • 文件系统破坏:重新分区可能会导致现有分区上的文件系统被破坏。这意味着即使分区本身得以保留,存储在其中的文件也可能无法访问或恢复。
  • 系统引导问题:如果重新分区涉及到修改包含系统引导信息的分区(如/boot分区),可能会导致系统无法正常启动。因此,在重新分区时需要特别小心,确保不要破坏关键的引导扇区。
  • 重新安装或配置软件:重新分区后,可能需要重新安装或配置一些软件,特别是那些依赖于特定分区或文件路径的软件。

因此,在重新安装Linux系统或进行其他重大更改之前,如果磁盘已经分好区且包含重要数据,强烈建议谨慎考虑重新分区的必要性。如果确实需要进行重新分区,务必确保已经充分备份了数据,并熟悉分区操作的风险和步骤。

主分区和扩展分区

主分区:

  • 也被称为引导分区,它是磁盘上的基本分区类型。
  • 一块磁盘最多可以有4个主分区。
  • 主分区是独立的,每个主分区都可以被格式化为一个独立的文件系统,并可以挂载到Linux系统的目录树中。
  • 在很多情况下,主分区中的一个是"引导分区",即存放操作系统引导加载程序(如GRUB)的分区,它负责启动整个系统。

扩展分区:

  • 当磁盘上需要创建超过4个分区时,就需要使用扩展分区。扩展分区会占用一个主分区的位置,因此在一个物理硬盘上,如果有扩展分区,则最多只能有3个主分区。
  • 扩展分区本身并不能直接使用,它必须被进一步划分为逻辑分区才能使用。换句话说,扩展分区是一个容器,用于容纳逻辑分区。
  • 逻辑分区是在扩展分区内部创建的,可以有任意多个。每个逻辑分区也可以被格式化为一个独立的文件系统,并挂载到目录树中。

磁盘分区的场景

  • 新安装Linux系统时:在安装新的Linux系统时,通常需要对硬盘进行分区,以便为根目录(/)、交换空间(swap)、以及其他可能的挂载点(如/home、/var等)分配空间。这时,可以使用fdisk工具来创建和管理这些分区。
  • 扩展磁盘空间:当现有的磁盘空间不足以满足系统或应用程序的需求时,可能需要添加新的硬盘或扩展现有硬盘的容量。在这些情况下,可以使用fdisk来重新分区硬盘,以便更好地利用新增的空间。
  • 调整分区布局:有时,可能需要调整现有的分区布局,例如,将某个分区的大小增加或减少,或者创建一个新的分区来存储特定的数据。fdisk允许用户查看当前的分区布局,并对其进行修改。
  • 转换分区类型:在某些情况下,可能需要将分区的类型从一种文件系统转换为另一种文件系统。虽然这通常涉及到更多的步骤,包括格式化分区和重新挂载,但使用fdisk查看和修改分区类型是这一过程的一部分。
  • 创建特殊类型的分区:对于某些高级用途,如创建RAID阵列或LVM逻辑卷,可能需要使用fdisk来创建特定类型的分区。这些分区类型允许更复杂的存储配置和更高的灵活性。

需要注意的是,在使用fdisk进行分区操作时,一定要谨慎,并确保已经备份了重要的数据。错误的分区操作可能导致数据丢失或系统不稳定。此外,对于在生产环境中运行的服务器,最好在维护窗口或计划停机期间进行分区操作,以避免对业务造成影响。

磁盘分区的工具

fdisk是一个来自IBM的老牌分区工具。它兼容DOS类型的分区表、BSD或SUN类型的磁盘列表,主要用于创建和维护分区表。几乎所有的Linux发行版都装有fdisk,甚至在Linux的rescue模式下依然能够使用。但需要注意的是,fdisk是一个基于MBR的分区工具,所以如果需要使用GPT分区,则无法使用fdisk进行分区。

磁盘分区的操作步骤

准备一块虚拟磁盘

新增一块虚拟磁盘,后面对这块新增的虚拟磁盘进行查询、分区等操作;

查看可用磁盘设备

系统中已连接的磁盘及其相关信息

fdisk -l

从上面输出信息中,可以看得出来:

  • 磁盘 /dev/sda:

    大小:21.5 GB,共有 41943040 个扇区

    单位:每扇区 512 字节

    标签类型:dos(MBR)

    磁盘标识符:0x000af641

    分区情况:

    /dev/sda1:启动分区(Boot),从第 2048 扇区到 2099199 扇区,大小为 1 GB,文件系统为 Linux(ID 83)

    /dev/sda2:从第 2099200 扇区到 41943039 扇区,大小为 19 GB,文件系统为 Linux LVM(ID 8e)

  • 磁盘 /dev/sdb:

    大小:5368 MB,共有 10485760 个扇区

    单位:每扇区 512 字节

    标签类型:dos(MBR)

    磁盘标识符:0x66692fd4

  • 磁盘 /dev/mapper/centos-root:

    大小:18.2 GB,共有 35643392 个扇区

    单位:每扇区 512 字节

  • 磁盘 /dev/mapper/centos-swap:

    大小:2147 MB,共有 4194304 个扇区

    单位:每扇区 512 字节

其中/dev/mapper/centos-root、/dev/mapper/centos-swap是建立在物理磁盘设备/dev/sda上的逻辑卷

创建扩展分区

执行下面的命令,开始运行分区工具fdisk,对新增的磁盘进行分区

bash 复制代码
sudo fdisk /dev/sdb

这会运行一个交互式的命令行界面:

输入m来看一下fdisk相关的操作选项

操作选项参数解释:

  • a:切换引导标志
  • b:编辑 BSD 磁盘标签
  • c:切换 DOS 兼容性标志
  • d:删除一个分区
  • g:创建新的空 GPT 分区表
  • G:创建一个 IRIX(SGI)分区表
  • l:列出已知的分区类型
  • m:显示此菜单
  • n:添加一个新分区
  • o:创建新的空 DOS 分区表
  • p:打印分区表
  • q:不保存更改退出
  • s:创建新的空 Sun 磁盘标签
  • t:更改分区的系统 ID
  • u:更改显示/输入单位
  • v:验证分区表
  • w:将表写入磁盘并退出
  • x:额外功能(仅供专家使用)

输入n,创建一个新分区,这个时候会有两个选项p和e,可以根据提示输入相应的选项字母即可完成分区类型;p:主分区(括号内的数字表示 0 个主分区,0 个扩展分区,4 个空闲分区); e:扩展分区; 如果没有手动选择,默认主分区(默认为 p)。

如果选择创建主分区,分区完成后,可以直接挂载使用,但是有限制:在一块磁盘中最多可创建4个主分区;

如果选择创建扩展分区,则创建扩展分区完成后,还要在扩展分区中,创建逻辑分区,然后才能挂载使用;

这里我就选择创建扩展分区了。

输入分区号:直接按enter键,选择默认的即可;

输入起始扇区:直接按enter键,选择默认的即可;

输入结束扇区:这里可以根据需要来设置。

这里我准备的是一块大小是5G的虚拟磁盘,从fdisk -l命令的输出的磁盘信息中可以看出磁盘/dev/sdb包含有10485760个扇区,每个扇区是512字节。后面我准备创建一个1G的扩展分区,然后在这个扩展分区中,再创建2个512M的逻辑分区,然后分别挂载到opt目录下的fanfu-1、fanfu-2目录上。那么这里可以计算出扩展分区的结束扇区位置是:1024*1024*1024/512=2097152

输入w,保存分区信息,完成扩展分区的创建

输入fdisk - l,查看创建分区是否已经正确地被创建;

fdisk - l

从上面的输出信息中,可以看到起始扇区是2048,结束扇区是2097152的扩展分区已经创建成功。

创建逻辑分区

输入fdisk /dev/sdb,进入磁盘分区管理的交互界面,然后输入n开始创建逻辑分区:

bash 复制代码
fdisk /dev/sdb

从输出信息来看:

  • p 表示主分区(primary),0 个主分区已经被使用,1 个扩展分区已经被使用,还有 3 个空闲的主分区可以使用。
  • l 表示逻辑分区(logical),从编号 5 开始进行编号。

输入l:开始创建逻辑分区

输入起始扇区:选择默认即可;

输入结束扇区:512M的结束扇区位置计算:51210241024/512=1048576,实际上这么计算确实有点麻烦,也可输入+512M;

输入n,再创建另一个逻辑分区,创建过程和上面的逻辑分区一样,

输入w:保存逻辑分区信息,完成两个逻辑分区的创建

输入fdisk - l,查看创建分区是否已经正确地被创建;

fdisk - l

从输出信息来看,扩展分区/dev/sdb1,两个逻辑分区:/dev/sdb5和/dev/sdb6,已经被正确创建。

需要注意的是,完成分区后,还不能直接使用。另外还需要对相关分区进行格式化或创建文件系统,然后挂载到操作系统中的目录上,才能正常使用,这将在下一篇文章《精通Linux分区挂载的精髓:从理论到实战一网打尽 - 掘金 (juejin.cn)》中会和小伙伴分享。

删除磁盘分区

输入fdisk /dev/sdb,进入磁盘分区管理的交互界面,然后输入d,开始删除磁盘分区

bash 复制代码
fdisk /dev/sdb

输入分区号后,按Enter键

输入w,保存分区信息,完成分区的删除操作;

输入fdisk - l,查看创建分区是否已经被删除;

fdisk - l

从输出信息来看,逻辑分区:/dev/sdb6,已经被删除。

写在最后

如果你正在寻找一篇关于Linux磁盘分区的技术文章,那么你来对地方了!我在这篇文章中详细介绍了磁盘分区的理论知识,并分享了如何使用fdisk工具在CentOS 7系统上进行磁盘分区和删除操作的实际示例。

如果你觉得这篇文章对你有所帮助,不妨点击点赞按钮,让更多的人看到这篇优质的技术分享。同时,别忘了将这篇文章收藏起来,以备日后查阅。这样,你就能随时回顾和复习文章中的重要知识点,确保你的技术水平始终保持在最高水平。

相关推荐
学思之道19 分钟前
给Linux操作系统命令取个别名
linux·运维·经验分享·学习方法
GOTXX26 分钟前
应用层协议HTTP
linux·网络·网络协议·计算机网络·http·fiddler
九圣残炎28 分钟前
【springboot】简易模块化开发项目整合Redis
spring boot·redis·后端
dong_beijing43 分钟前
GO语言工程构建示例-mac和linux适用
linux·运维·服务器
小小工匠1 小时前
系统安全 - Linux /Docker 安全模型及实践
linux·安全·系统安全
.生产的驴1 小时前
Electron Vue框架环境搭建 Vue3环境搭建
java·前端·vue.js·spring boot·后端·electron·ecmascript
爱学的小涛1 小时前
【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
java·开发语言·笔记·后端·nio
爱学的小涛1 小时前
【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
java·开发语言·笔记·后端·nio
北极无雪1 小时前
Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
java·开发语言·后端·学习·spring
爱码少年1 小时前
springboot工程中使用tcp协议
spring boot·后端·tcp/ip