磁盘分区工具(fdisk 和 parted)区别及操作笔记

fdisk 和 parted 都是 Linux 系统中用于磁盘分区的工具

两者主要区别:

  1. 支持的分区表类型

    • fdisk 主要支持 MBR分区表,MBR分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区
    • parted 支持 MBR分区表 和 GPT分区表,GPT分区表可以支持更大的硬盘容量和更多的分区数量。
  2. 用户界面:fdisk 使用命令行界面,而 parted 也使用命令行但提供了更丰富的命令和交互。

  3. 功能:parted 提供了一些 fdisk 没有的功能,如调整分区大小、格式化分区等。

  4. 易用性:parted 通常被认为比 fdisk 更易用,特别是在处理 GPT 分区表时。

但它们在功能和使用上有一些区别:

fdisk的功能

fdisk 是一个较老的分区表创建和管理工具,主要**支持 MBR (Master Boot Record) 格式的分区表**。它可以用来创建、删除、调整分区大小等。

基本命令:
fdisk /dev/sda:启动 fdisk 工具并选择 /dev/sda 磁盘。

  • p:显示磁盘分区表
  • n:创建新分区
  • d:删除分区
  • t:改变分区类型
  • w:写入分区表并退出
  • q:不保存更改并退出
使用示例
  1. 使用 fdisk 创建新分区:
    fdisk /dev/sda

    bash 复制代码
    	Command (m for help): n
    	Command action
    	   e   extended
    	   p   primary partition (1-4)
    	p
    	Partition number (1-4): 1
    	First sector (2048-104857551, default 2048): 
    	Last sector, +sectors or +size{K,M,G} (2048-104857551, default 104857551): +500G
    	Command (m for help): w
  2. 格式化新分区

    使用 mkfs 命令为新分区创建文件系统。假设想要为该分区创建 ext4 文件系统:

    bash 复制代码
       sudo mkfs.ext4 /dev/sda1
  3. 挂载分区

    如果想挂载这些分区,可以使用 mount 命令。首先创建挂载点,然后挂载:

    bash 复制代码
       # 创建挂载点
       sudo mkdir /data01
       # 手动挂载
       sudo mount /dev/sda1 /data01

    再配置永久挂载,请参考下面parted永久挂载部分


parted的功能

parted 是一个更现代的分区工具,**支持 MBR 和 GPT (GUID Partition Table) 格式的分区表**。parted 提供了更丰富的命令和功能,包括调整分区大小、创建新的分区表、格式化分区等。

基本命令:
parted /dev/sda:启动 parted 工具并选择 /dev/sda 磁盘。

  • print:显示磁盘分区信息
  • mklabel:创建新的分区表,可以是 msdos 或 gpt
  • mkpart:创建新分区,需要指定分区类型(如 primary, logical)和大小(如 1MiB, 50%)
  • rm:删除分区,需要指定分区号
  • resizepart:调整分区大小,需要指定分区号和新大小
  • set:设置分区属性,如bootable
  • quit:退出 parted
使用示例
  1. 使用 parted 创建新分区

    parted /dev/sda

    假如/dev/sda是一块10TB的大硬盘,按第1个分区为500GB,第2个分区9TB来创建分区。

    bash 复制代码
    	(parted) mklabel gpt # 创建gpt分区表,也支持MBR,对于目前大硬盘,更推荐选择GPT
    	# 新建分区
    	(parted) mkpart primary 0% 500GB	# 创建第1个分区(按大小),0% 表示分区从磁盘的起始位置开始,500GB 是分区的大小。
    	(parted) mkpart primary 500GB 100%	# 创建第2个分区(按百分比),500GB 是第一个分区的结束位置,100% 表示使用所有剩余空间。
    
    	
    	# 删除分区
    	(parted) print		# 首先查看当前磁盘的分区信息,确保你将要删除的是正确的分区。使用 print 命令来显示分区表
    	(parted) rm 1		# 确定要删除的分区号,例如,如果你要删除第一个分区,分区号是 1。特别注意:删除分区会丢失该分区上的所有数据
    	
    	# 退出parted
    	(parted) quit	
  2. 格式化新分区

    使用 mkfs 命令为新分区创建文件系统。假设想要为第一个分区创建 ext4 文件系统,第二个分区创建 XFS 文件系统:

    bash 复制代码
       sudo mkfs.ext4 /dev/sda1
       sudo mkfs.xfs /dev/sda2
  3. 挂载分区

    3.1. 如果想挂载这些分区,可以使用 mount 命令:

    bash 复制代码
    	# 首先创建挂载点
       sudo mkdir /data01
       sudo mkdir /data02
    	# 然后挂载
       sudo mount /dev/sda1 /data01
       sudo mount /dev/sda2 /data02

    3.2. 添加永久挂载(以上mount直接挂载为临时挂载,重启后丢失)

     编辑 /etc/fstab 文件,文件内容末尾追加以下内容,后再保存关闭文件
     ```bash
     /dev/sda1	/data01	ext4	default	0	2
     /dev/sda2	/data02	xfs		default 0	2
     ```
    

    3.3. 测试挂载配置,会尝试挂载 /etc/fstab 中定义的所有挂载点。如果没有错误消息,说明配置正确。
    mount -a

    3.4. 可再通过 df -h 查看下 /data01、/data02 的分区信息


  • 假如后期使用中需要重新调整分区的大小

    parted /dev/sda # 启动 parted 并选择磁盘

    bash 复制代码
    	(parted) print 		# 查看当前分区信息,确定你想要调整大小的分区号
    	
    	# 方式1
    	# 调整分区大小,注意:1 是分区号,300GB 是新的分区大小
    	(parted) resizepart 1 300GB		# 例如,如果想要调整第一个分区的大小到300GB:
    	
    	# 方式2
    	# 也支持调整分区的起始或结束位置
    	# 2. 1 如果你需要调整分区的起始位置,可以使用 --set 选项
    	# 例如,将第一个分区的起始位置设置为 10GB
    	(parted) resizepart 1 --set 10GB	# 
    
    	# 2.2 如果你需要调整分区的结束位置,可以使用 --end 选项来指定新的结束位置
    	# 例如,如果你想要将第一个分区的结束位置设置为 30GB
    	(parted) resizepart 1 --end 30GB	# 
    	
    	# 退出parted
    	(parted) quit	

注意事项:

  • 在调整分区大小之前,请确保备份所有重要数据,以防数据丢失。
  • 如果分区中的数据已经填满了整个分区,你可能需要先清理一些数据,以确保有足够的空间进行调整。
  • 如果调整的分区不是最后一个分区,或者调整操作涉及到多个分区,可能需要先移动数据,这通常涉及到更复杂的步骤,比如使用partprobe 命令通知内核分区表的变化,或者在调整前卸载分区。
相关推荐
aloha_7891 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
dsywws2 小时前
Linux学习笔记之vim入门
linux·笔记·学习
A-超5 小时前
vue3展示pag格式动态图
笔记
u0101526585 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
weixin_518285055 小时前
深度学习笔记10-多分类
人工智能·笔记·深度学习
丘狸尾5 小时前
ubuntu【桌面】 配置NAT模式固定IP
笔记
王俊山IT6 小时前
C++学习笔记----10、模块、头文件及各种主题(二)---- 预处理指令
开发语言·c++·笔记·学习
慕卿扬6 小时前
基于python的机器学习(二)—— 使用Scikit-learn库
笔记·python·学习·机器学习·scikit-learn
齐 飞8 小时前
MongoDB笔记02-MongoDB基本常用命令
前端·数据库·笔记·后端·mongodb
flying robot8 小时前
Go结构体(struct)
笔记