0

0

Linux如何进行磁盘分区?_Linuxfdisk与parted命令教程

爱谁谁

爱谁谁

发布时间:2025-08-03 10:39:01

|

436人浏览过

|

来源于php中文网

原创

linux磁盘分区是将物理硬盘划分为多个逻辑区域以方便管理,主要使用fdisk和parted两个工具。1. fdisk适用于mbr分区表,支持小于2tb的磁盘,最多4个主分区;2. parted支持mbr和gpt分区表,适合大于2tb的磁盘,支持更多分区。分区完成后需格式化并挂载:1. 使用mkfs命令选择文件系统(如ext4、xfs、btrfs等)进行格式化;2. 通过mount命令临时挂载或编辑/etc/fstab文件实现永久挂载。合理分区可提升数据安全、系统稳定性及管理效率。

Linux如何进行磁盘分区?_Linuxfdisk与parted命令教程

Linux磁盘分区,简单来说,就是把一块物理硬盘划分为一个或多个逻辑区域,方便管理和使用。在Linux世界里,我们通常会用到两个核心工具来完成这项任务:

fdisk
parted
。前者更传统,主要用于MBR分区表;后者则更为现代,能处理MBR和GPT分区表,尤其在处理大容量硬盘时显得更为灵活和强大。正确的分区策略,不仅关乎系统性能,更影响数据安全与管理便利性。

Linux如何进行磁盘分区?_Linuxfdisk与parted命令教程

解决方案

进行Linux磁盘分区,无论是使用

fdisk
还是
parted
,核心步骤都围绕着识别磁盘、创建分区、写入更改这几步。这里我们分别介绍这两种工具的典型用法,并提醒,任何分区操作都可能导致数据丢失,请务必提前备份重要数据!

使用

fdisk
进行分区 (主要针对MBR分区表)

Linux如何进行磁盘分区?_Linuxfdisk与parted命令教程

fdisk
是一个基于命令行的交互式工具,适用于小于2TB的磁盘,并且通常用于MBR(Master Boot Record)分区表。

  1. 识别目标磁盘: 首先,你需要知道你要分区的磁盘设备名,例如

    /dev/sda
    /dev/sdb
    等。可以使用
    lsblk
    fdisk -l
    命令来查看当前系统中的磁盘及其分区情况。

    Linux如何进行磁盘分区?_Linuxfdisk与parted命令教程
    lsblk
    # 或者
    sudo fdisk -l

    找到你想要操作的磁盘,例如

    /dev/sdb

  2. 进入

    fdisk
    交互模式:

    sudo fdisk /dev/sdb

    进入后,你会看到

    Command (m for help):
    的提示。

  3. 查看当前分区表 (可选): 输入

    p
    ,然后回车,可以打印出当前磁盘的分区表信息。这有助于确认磁盘状态。

  4. 删除现有分区 (如果需要): 如果你想重新分区,可能需要先删除旧分区。输入

    d
    ,然后回车,会提示你选择要删除的分区号。重复此步骤直到所有旧分区被删除。

  5. 创建新分区: 输入

    n
    ,然后回车。

    • 选择分区类型:
      p
      代表主分区 (primary),
      e
      代表扩展分区 (extended)。一个MBR磁盘最多只能有4个主分区,或者3个主分区加1个扩展分区。如果你需要更多分区,就必须创建扩展分区,然后在扩展分区内创建逻辑分区。
    • 输入分区号:通常是1-4。
    • 输入起始扇区:直接回车接受默认值通常是安全的,表示从可用空间的起始位置开始。
    • 输入结束扇区或大小:你可以输入一个具体的扇区号,或者更常用的方式是输入
      +大小单位
      ,例如
      +10G
      表示创建10GB的分区,
      +512M
      表示512MB。如果你想使用所有剩余空间,直接回车即可。 重复此步骤以创建所需的所有分区。
  6. 更改分区类型 (可选): 输入

    t
    ,然后回车,选择分区号,再输入对应的十六进制代码来更改分区类型。例如,
    83
    代表 Linux 文件系统,
    82
    代表 Linux swap。

  7. 写入更改并退出:这是最关键的一步。 在你确认所有分区设置无误后,输入

    w
    ,然后回车。
    fdisk
    会将你的更改写入磁盘的分区表。一旦写入,这些更改就生效了,并且是不可逆的。 如果你想放弃所有更改,不写入磁盘,则输入
    q

  8. 通知内核更新分区表: 有时,系统内核不会立即识别新的分区表。你可以尝试运行

    sudo partprobe
    命令,或者直接重启系统来确保新分区被识别。

使用

parted
进行分区 (支持MBR和GPT分区表)

parted
是一个更强大的分区工具,它支持GPT(GUID Partition Table),这使得它能够处理大于2TB的磁盘,并且在GPT下可以创建更多的分区。

  1. 识别目标磁盘:

    fdisk
    ,使用
    lsblk
    sudo parted -l
    来确认目标磁盘。

  2. 进入

    parted
    交互模式:

    sudo parted /dev/sdb
  3. 设置分区表类型: 在进行任何分区操作之前,建议先设置分区表类型。

    • 对于GPT分区表:
      mklabel gpt
    • 对于MBR分区表:
      mklabel msdos
      注意: 这会清除磁盘上现有的所有分区和数据!
  4. 查看当前分区表 (可选): 输入

    print
    ,然后回车,可以打印出当前磁盘的分区表信息。

  5. 创建新分区: 输入

    mkpart
    ,然后回车。

    • 输入分区类型:例如
      primary
      (主分区)。
    • 输入文件系统类型 (可选,仅供
      parted
      记录,实际格式化需另行操作):例如
      ext4
      xfs
    • 输入起始位置:例如
      1MiB
      (推荐从1MiB开始,为SSD对齐或GPT头预留空间)。
    • 输入结束位置:例如
      10GB
      100%
      (表示使用所有剩余空间)。 示例:
      mkpart primary ext4 1MiB 10GB
      (创建一个10GB的ext4主分区)
      mkpart primary 10GB 100%
      (创建一个从10GB开始到磁盘末尾的主分区)
  6. 删除分区 (如果需要): 输入

    rm
    ,然后输入要删除的分区号。

  7. 调整分区大小 (可选): 输入

    resizepart
    ,然后输入分区号,再输入新的结束位置。注意: 调整已使用分区的大小通常需要先卸载分区,且文件系统本身也需要支持在线或离线调整。

  8. 退出

    parted
    输入
    quit
    parted
    会自动保存并退出。

  9. 通知内核更新分区表:

    fdisk
    ,运行
    sudo partprobe
    或重启系统。

为什么需要对Linux磁盘进行分区?分区的好处与常见场景

说实话,这其实是个老生常谈的问题,但它的重要性怎么强调都不为过。对Linux磁盘进行分区,远不止是为了把硬盘空间切开那么简单,它背后蕴含着系统管理、数据安全、性能优化等诸多考量。在我看来,这就像是你建造一栋房子,不是简单地堆砌砖块,而是要规划好卧室、厨房、客厅、卫生间,各司其职,互不干扰。

分区的好处:

  • 提高数据安全性与稳定性: 想象一下,如果你的
    /var
    分区(通常存放日志文件、Web服务器数据等)因为某个应用日志失控而迅速填满,整个根分区
    /
    也会因此而满,导致系统崩溃或无法启动。但如果
    /var
    是一个独立分区,那么即使它满了,根分区和其他关键分区依然可以正常运行,大大降低了系统崩溃的风险。
  • 简化备份与恢复:操作系统、用户数据、应用程序数据分别放置在不同的分区,可以让你在备份或恢复时更有针对性。比如,你只需要备份
    /home
    分区的数据,而无需备份整个操作系统,这既节省了时间,也减少了存储空间。系统损坏时,也只需重新安装系统分区,而用户数据得以保留。
  • 优化性能: 不同的文件系统有不同的特性,适用于不同的场景。例如,你可能希望
    /tmp
    分区使用
    tmpfs
    这种基于内存的文件系统来提高临时文件读写速度,或者将数据库文件放在
    xfs
    分区上以获得更好的大文件I/O性能。分区允许你为不同用途的数据选择最合适的文件系统。
  • 多系统共存: 如果你需要在同一台机器上安装多个操作系统(比如Linux和Windows),分区是必不可少的。每个操作系统都需要自己的独立分区。
  • 管理便利性: 独立的分区使得你更容易监控和管理磁盘空间的使用情况。当某个分区空间不足时,你可以迅速定位问题所在,并采取相应措施,比如清理日志、扩容分区等。
  • 权限与安全策略: 某些分区可以设置特定的挂载选项,比如
    noexec
    (不允许执行程序)或
    nodev
    (不允许设备文件),这对于
    /tmp
    /var/tmp
    这样的分区来说,能有效防止恶意代码的执行,提升系统安全性。

常见分区场景:

  • 服务器部署: 典型的服务器分区方案可能包括:
    • /
      (根分区):存放操作系统核心文件和程序。
    • /boot
      :存放引导加载器和内核文件(尤其在使用UEFI引导时,通常需要一个独立的EFI系统分区,即ESP)。
    • /home
      :存放用户的主目录,用户数据。
    • /var
      :存放经常变化的数据,如日志、邮件、Web服务器数据等。
    • /tmp
      :存放临时文件。
    • /opt
      :存放第三方应用程序。
    • swap
      :交换空间,作为物理内存的补充。
  • 桌面系统: 相对简单,通常至少会分
    /
    /home
    ,有时也会有独立的
    swap
    分区。
  • 新增硬盘: 当你为系统添加一块新的硬盘时,通常会将其作为一个或多个独立的分区挂载到某个目录下,例如
    /data
    /mnt/backup

在我看来,分区策略没有绝对的“最佳实践”,只有最适合你需求的方案。它需要你对系统未来的用途、数据增长趋势、以及潜在的风险有一个大致的预判。

fdisk与parted命令的主要区别及适用场景

在Linux世界里,

fdisk
parted
就像是两位各有专长的“工匠”,都负责磁盘分区,但使用的工具和处理的材料却有所不同。理解它们的区别,能帮助你选择最合适的工具来完成任务。

fdisk
:传统与MBR的守护者

Sora
Sora

Sora是OpenAI发布的一种文生视频AI大模型,可以根据文本指令创建现实和富有想象力的场景。

下载
  • 核心特性:
    fdisk
    是一个历史悠久、基于文本界面的分区工具,它主要设计用于管理 MBR (Master Boot Record) 分区表。
  • MBR限制: MBR分区表有几个显著的限制:
    • 最大分区数量: 只能有4个主分区,或者3个主分区加1个扩展分区(然后在扩展分区内创建逻辑分区)。
    • 最大磁盘容量: 单个分区和整个磁盘的大小都不能超过2TB。这是因为MBR使用32位LBA(逻辑块寻址)来寻址扇区,2^32 * 512字节/扇区 = 2TB。
  • 交互方式: 它提供一个简单的命令行菜单,通过输入单个字母命令(如
    n
    创建、
    d
    删除、
    w
    写入)来操作。
  • 适用场景:
    • 处理小于2TB的旧式硬盘。
    • 在BIOS/Legacy模式下安装操作系统。
    • 需要创建MBR分区表的场景。
    • 对于习惯了传统命令行界面的用户,
      fdisk
      简单直接。

parted
:现代与GPT的拥抱者

  • 核心特性:
    parted
    是一个更现代、功能更强大的分区工具。它不仅支持MBR分区表,更重要的是,它原生支持 GPT (GUID Partition Table) 分区表。
  • GPT优势: GPT克服了MBR的诸多限制:
    • 分区数量: 默认情况下,GPT可以支持多达128个分区(这个数量在Linux中可以修改)。
    • 磁盘容量: GPT使用64位LBA,理论上支持的磁盘容量达到了9.4ZB(Zettabytes),远超当前硬盘的实际容量,因此可以处理任何大小的硬盘。
    • 冗余备份: GPT在磁盘的开头和结尾都存储了分区表的备份,这大大增加了分区表的健壮性,即使主分区表损坏,也可以通过备份恢复。
    • UEFI兼容: GPT是UEFI(统一可扩展固件接口)引导模式的推荐分区方案。
  • 交互方式:
    parted
    也是交互式的,但其命令更接近自然语言(如
    mklabel
    mkpart
    print
    rm
    )。它还支持在非交互模式下运行,这使得它更适合脚本自动化。
  • 高级功能:
    parted
    还能进行一些
    fdisk
    无法完成的操作,比如在线调整分区大小(虽然这通常需要文件系统工具的配合,并且对于已挂载的分区仍需谨慎)。
  • 适用场景:
    • 处理大于2TB的硬盘。
    • 在UEFI模式下安装操作系统。
    • 需要创建GPT分区表的场景。
    • 需要创建大量分区的场景。
    • 需要更灵活的分区操作,或者希望通过脚本自动化分区过程。
    • 我个人在处理新服务器或大容量存储时,总是倾向于使用
      parted
      和 GPT,这更符合现代硬件和系统的趋势。

总结选择:

简单来说,如果你处理的是老旧系统、小容量硬盘,或者明确需要MBR分区表,

fdisk
仍然是可行的选择。但如果你面对的是新硬件、大容量硬盘,或者需要利用UEFI的特性,那么
parted
结合GPT分区表无疑是更明智、更未来的选择。在实际工作中,我发现大部分新的部署都会选择
parted

分区后如何格式化与挂载?文件系统选择与挂载点策略

分区完成,这只是万里长征的第一步。分区本身只是划分出了一块未经组织的原始空间,就像你把一块地圈了起来,但里面还是荒芜一片。要让这块地真正能种庄稼、盖房子,你就需要对其进行“耕耘”——也就是格式化,然后才能“住进去”——也就是挂载。

1. 格式化:赋予分区生命

格式化(或称创建文件系统)是让操作系统能够识别并管理分区内数据的前提。不同的文件系统有不同的特性,适用于不同的场景。

  • 创建文件系统: 使用

    mkfs
    系列命令。

    • ext4
      (第四代扩展文件系统):
      这是Linux中最常用、最成熟、最稳定的文件系统之一。它适合大多数通用场景,包括根分区、用户主目录、以及大多数数据分区。
      sudo mkfs.ext4 /dev/sdb1 # 假设 /dev/sdb1 是你刚分好的区
    • xfs
      高性能日志文件系统,特别适合处理大文件、大目录以及高并发的I/O操作。常用于
      /var
      (日志、数据库)、
      /home
      (用户数据)、以及存储服务器。
      sudo mkfs.xfs /dev/sdb2
    • Btrfs
      (B-tree文件系统):
      提供了许多高级特性,如写时复制(CoW)、快照、多设备管理(RAID)、数据校验、透明压缩等。功能强大,但相对复杂,在生产环境使用需要更深入的理解。
      sudo mkfs.btrfs /dev/sdb3
    • swap
      (交换分区):
      专门用于作为虚拟内存,不存储常规文件。
      sudo mkswap /dev/sdb4

      激活交换分区:

      sudo swapon /dev/sdb4

  • 选择文件系统的考量:

    • 用途: 是用于系统分区、用户数据、数据库、还是日志?
    • 性能需求: 对读写速度、并发性、大文件处理能力是否有特殊要求?
    • 稳定性与成熟度: 对于生产环境,通常倾向于选择经过长时间验证的成熟文件系统。
    • 高级特性: 是否需要快照、RAID、压缩等高级功能?

2. 挂载:让分区可访问

格式化后的分区,就像一块准备好的地,但操作系统还不知道怎么去“访问”它。挂载就是将这个分区连接到文件系统树中的某个特定目录(挂载点),使其内容变得可访问。

  • 临时挂载: 你可以创建一个目录作为挂载点,然后手动挂载。

    sudo mkdir /mnt/mydata
    sudo mount /dev/sdb1 /mnt/mydata

    这样,

    /dev/sdb1
    的内容就会在
    /mnt/mydata
    目录下显示。这种挂载方式在系统重启后会失效。

  • 永久挂载: 要实现开机自动挂载,你需要编辑

    /etc/fstab
    文件。这是Linux系统启动时读取的配置文件,它定义了哪些文件系统应该被挂载,以及它们挂载到哪里。

    编辑

    /etc/fstab
    的关键信息: 在编辑
    /etc/fstab
    之前,强烈建议使用分区的 UUID (Universally Unique Identifier) 来代替设备名(如
    /dev/sdb1
    )。设备名在系统启动时可能会发生变化(例如,插入新的硬盘后,
    /dev/sdb1
    可能变成
    /dev/sdc1
    ),而UUID是固定不变的,这能确保系统正确地挂载分区。

    获取分区的UUID:

    sudo blkid /dev/sdb1
    # 或者
    lsblk -f

    你会看到类似

    UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    的输出。

    **`/

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

185

2023.09.27

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1023

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

437

2025.12.29

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

391

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

578

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1104

2023.07.27

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号