parted是Linux下的磁盘分区工具,支持创建、删除、调整分区大小,同时支持MBR和GPT分区表格式,适用于大容量硬盘管理。
parted [选项] [设备 [命令 [参数...]]]
# 常见选项
-l, --list # 列出所有磁盘分区信息
-s, --script # 从不提示用户
-a, --align # 对齐类型(none, cylinder, minimal, optimal)
-v, --version # 显示版本信息
-h, --help # 显示帮助信息
# 进入交互模式(以/dev/sda为例)
sudo parted /dev/sda
# 交互模式下的操作
(parted) help # 查看帮助
(parted) print # 显示分区信息
(parted) mklabel # 创建分区表(msdos或gpt)
(parted) mkpart # 创建新分区
(parted) rm # 删除分区
(parted) resizepart # 调整分区大小
(parted) quit # 退出
# 查看所有磁盘分区信息
sudo parted -l
# 查看指定磁盘信息
sudo parted /dev/sda print
# 创建GPT分区表
sudo parted /dev/sdb mklabel gpt
# 创建MBR分区表(msdos)
sudo parted /dev/sdb mklabel msdos
# 创建主分区(从1GB到10GB,格式为ext4)
sudo parted /dev/sdb mkpart primary ext4 1GB 10GB
# 创建交换分区
sudo parted /dev/sdb mkpart primary linux-swap 10GB 12GB
# 删除分区编号为1的分区
sudo parted /dev/sdb rm 1
# 调整分区大小(将分区1扩展到15GB)
sudo parted /dev/sdb resizepart 1 15GB
# 查看所有磁盘
sudo parted -l
# 查看指定磁盘的详细信息
sudo parted /dev/sda print
# 查看磁盘型号、容量、扇区大小等
sudo parted /dev/sda unit GB print
# 查看分区表类型
sudo parted /dev/sda print | grep 'Partition Table'
# 配合lsblk查看更详细的信息
lsblk -f
fdisk -l
警告:创建分区表会清除磁盘上所有数据!
# 创建GPT分区表(推荐新硬盘使用)
sudo parted /dev/sdb mklabel gpt
# 创建MBR分区表(兼容旧系统)
sudo parted /dev/sdb mklabel msdos
# 创建分区表时指定对齐方式
sudo parted /dev/sdb mklabel gpt align optimal
# 创建主分区(从0%到50%的位置)
sudo parted /dev/sdb mkpart primary ext4 0% 50%
# 创建逻辑分区(MBR中)
sudo parted /dev/sdb mkpart logical ext4 50% 100%
# 创建指定大小的分区(从1GB开始,创建10GB分区)
sudo parted /dev/sdb mkpart primary ext4 1GB 11GB
# 创建整个磁盘的分区
sudo parted /dev/sdb mkpart primary ext4 0% 100%
# 创建交换分区
sudo parted /dev/sdb mkpart primary linux-swap 11GB 13GB
# 创建EFI系统分区(UEFI启动必需)
sudo parted /dev/sdb mkpart ESP fat32 1MB 513MB
sudo parted /dev/sdb set 1 boot on
# 删除分区编号为2的分区
sudo parted /dev/sdb rm 2
# 删除前先查看分区编号
sudo parted /dev/sdb print
# 删除多个分区
sudo parted /dev/sdb rm 2 rm 3
# 交互模式下删除
sudo parted /dev/sdb
(parted) rm 1
注意:调整分区前需要先卸载分区,并且分区文件系统必须支持调整!
# 调整分区1的大小为20GB
sudo parted /dev/sdb resizepart 1 20GB
# 扩展分区到磁盘末尾
sudo parted /dev/sdb resizepart 1 100%
# 调整交换分区大小
sudo swapoff /dev/sdb2 # 先关闭交换分区
sudo parted /dev/sdb resizepart 2 5GB
sudo mkswap /dev/sdb2 # 重新格式化
sudo swapon /dev/sdb2 # 重新启用
# 假设新硬盘为/dev/sdb
# 1. 查看磁盘信息
sudo parted /dev/sdb print
# 2. 创建GPT分区表
sudo parted /dev/sdb mklabel gpt
# 3. 创建EFI系统分区(UEFI启动需要)
sudo parted /dev/sdb mkpart ESP fat32 1MB 513MB
sudo parted /dev/sdb set 1 esp on
# 4. 创建根分区
sudo parted /dev/sdb mkpart primary ext4 513MB 30GB
# 5. 创建交换分区
sudo parted /dev/sdb mkpart primary linux-swap 30GB 34GB
# 6. 创建home分区
sudo parted /dev/sdb mkpart primary ext4 34GB 100%
# 7. 查看分区结果
sudo parted /dev/sdb print
# 8. 格式化分区
sudo mkfs.fat -F32 /dev/sdb1 # EFI分区
sudo mkfs.ext4 /dev/sdb2 # 根分区
sudo mkswap /dev/sdb3 # 交换分区
sudo mkfs.ext4 /dev/sdb4 # home分区
# 9. 启用交换分区
sudo swapon /dev/sdb3
# 场景:将/home分区缩小,扩大/分区
# 1. 卸载/home分区(如果挂载了)
sudo umount /home
# 2. 检查文件系统
sudo e2fsck -f /dev/sda3
# 3. 缩小文件系统(先缩小文件系统,再缩小分区)
sudo resize2fs /dev/sda3 50G
# 4. 缩小分区
sudo parted /dev/sda resizepart 3 53GB
# 5. 删除/分区并重新创建更大的分区
# 注意:这会导致/分区数据丢失,需要先备份!
# 更好的做法是使用LVM逻辑卷管理
# 查看哪些进程在使用设备
sudo lsof /dev/sda1
sudo fuser -m /dev/sda1
# 卸载分区
sudo umount /dev/sda1
# 如果是交换分区,先关闭
sudo swapoff /dev/sda2
# 使用fsck修复文件系统
sudo fsck -y /dev/sda1
# 使用testdisk恢复分区表
sudo apt-get install testdisk
sudo testdisk
# 使用gpart恢复分区表
sudo apt-get install gpart
sudo gpart /dev/sda
# 检查分区类型
sudo blkid /dev/sda1
# 检查文件系统
sudo fsck -n /dev/sda1
# 查看内核识别的分区
sudo cat /proc/partitions
# 重新读取分区表
sudo partprobe /dev/sda
sudo hdparm -z /dev/sda
lsblk或fdisk -l确认磁盘设备名partprobe更新内核分区表