跳到主要内容

Partition

abbrmeaning
MBRMaster Boot Record
EBRExtended Boot Record
GPTGUID Partition Table
RDBRigid Disk Block
CHSCylinder-Head-Sector
tooldesc
fdisk
sfdisk支持脚本的 fdisk
cfdisknew versions; older do just DOS partitions
gdiskinteractive tool and GPT counterpart to fdisk
sgdisk支持脚本的 gdisk
cgdiskmenu-based tool and GPT counterpart to cfdisk
partx
partprobe检测分区变化
parted

sfdisk

2.26 开始支持 MBR (DOS), GPT, SUN, SGI 但不支持 CHS

# dump
sfdisk -d /dev/sda

sgdisk

# Move backup GPT data structures to the end of the disk
sgdisk -e /dev/sda

分区类型

  • Partition type
  • 常用类型
    • 07h - NTFS/exFAT
    • 0Bh - FAT32 with CHS
    • 0Ch - FAT32 with LBA
    • AFh - HFS/HFS+
    • E8h - LUKS
    • EDh - 提议作为 GPT/MBR 混合分区
    • EEh - GPT 的保护 MBR 分区
    • EFh - EFI 系统分区, 一般为 FAT12, FAT16, FAT32

混合分区

  • Hybrid partition table
  • gdisk 恢复模式下有 MBR 混合操作工具,将需要放到 MBR 的分区按序指定即可

MBR vs GPT

  • GPT
    • 最初预留的分区表空间决定可以有多少个分区
    • LBA 0
      • 预留的兼容 MBR 的信息
      • 分区类型 0xEE 表示为 GPT 分区
      • MBR/GPT 混合分区表的硬盘该部分也会以 MBR 的形式存储前四个分区
  • MBR
    • 引导程序会直接存储与 MBR 中
    • 早期 MBR 基于 CHS, 现在一般也基于 LBA
VSMBRGPT
名字主引导记录全局唯一标识分区表
分区数4128 / EFI 最小尺寸
最大卷2 TB18 EB

LBA vs CHS

  • [LBA]
    • 逻辑区块地址
    • 比较现代化的方式
    • 更符合 SSD, Flash 这样的块设备
    • 一般为 512 或 1024
    • ISO-9660 标准的 CD 为 2048
  • CHS
    • 柱面-磁头-扇区
    • 旧式的机械磁盘
// H = heads per cylinder - 每个磁柱的磁头数
// S = sectors per track - 每磁道的扇区数
$lba = ($c * H + $h) * S + $s - 1;

$c = $lba / (S * H);
$h = ($lba / S) % H;
$s = ($lba % S) + 1;

FAQ

扩展最后一个分区

# from cloud-guest-utils
growpart /dev/sda 3

#
parted /dev/sda resize 3 100%

# fidks 扩展最后一个分区
apk add util-linux
echo -e 'd\n\nn\n\n\n\n\n\np\nw\n' | fdisk /dev/sda

# GPT
sgdisk -e /dev/sda
sgdisk -d 3 /dev/sda
sgdisk -N 3 /dev/sda
partprobe /dev/sda

扩展文件系统

# ext4
apk add e2fsprogs-extra
resize2fs /dev/sda3

# luks - 扩展分区
cryptsetup open /dev/sdb2 root
cryptsetup resize root
# 扩展文件系统
resize2fs /dev/mapper/root