磁盘分区的一点记录

由于折腾,经常重装操作系统,每次到了给磁盘分区的时候,总是免不了去 Wiki 上溜两眼,这里做个简单的记录。

块设备

目前的机器大多会有两块硬盘,一块机械、一块固态。磁盘被系统识别之后,就会被分配为一个块设备,比如说:/dev/sda 或者 /dev/nvme0n1 之类的。可以使用 fdisk 或者 lsblk 工具进行查看。而一个块设备,代表的抽象接口的磁盘。用户程序可以使用这些块设备来与我们的磁盘进行交互,而不用担心驱动器到底是 IDE、SCSI 还是别的什么东西。

分区表

虽然理论上可以用一整块磁盘来安装系统(btrfs RAID),但实践中几乎不这么做。一般将一块磁盘划分成一些小的、更容易被管理的块设备,即 分区 。目前有两个标准的分区技术可以被使用:MBRGPT

MBR

主引导记录MBR (Master Boot Record)对分区的起始扇区和长度使用32比特的标识符,它支持三种分区类型:主分区、扩展分区和逻辑分区。主分区把它们的信息存储在主引导记录里一个非常小的空间里,通常是512字节,因为这个空间太小了,所以系统只支持四个主分区。(例如从 /dev/sda1 到/dev/sda4)

虽然大多数主板制造商仍然支持传统模式,但除非使用的是2010年之前的硬件,否则最好使用GUID分区表对磁盘进行分区。

GPT

GPT(GUID Partition Table)为分区使用64比特标识符,它用来存储分区信息的空间也远比MBR的512字节要大,GPT磁盘它也不对分区的数量作限制。分区的大小限制可以达到8ZiB。

当操作系统和系统固件之间的软件接口是UEFI (相对于BIOS)时,GPT几乎是必选的,因为这里MBR会引起很多兼容性问题。GPT还利用校验和和冗余。 它携带CRC32校验和以检测报头和分区表中的错误,并在磁盘的末尾有一个备份GPT。 此备份表可用于恢复磁盘开头附近主GPT的损坏。

判断:ls /sys/firmware/efi/efivars

分区方案

在设计分区方案之前,为把分区设计的更加合理,需要考虑一些综合的因素:GPT还是MBR? 多少个分区以及多大? 是否需要 Swap 空间? 是否需要BIOS引导分区?下面是一些常用的分区方案:

UEFI/GPT

Mount point on the installed systemPartitionPartition typeSuggested size
/boot or /efi/dev/sda1EFI system partition260 MiB
//dev/sda2Linux x86-64 root (/)23–32 GiB
[SWAP]/dev/sda3Linux swapMore than 512 MiB
/home/dev/sda4Linux /homeRemainder of the device

BIOS/MBR

Mount point on the installed systemPartitionPartition typeBoot flagSuggested size
//dev/sda1LinuxYes23–32 GiB
[SWAP]/dev/sda2Linux swapNoMore than 512 MiB
/home/dev/sda3LinuxNoRemainder of the device

BIOS/GPT

Mount point on the installed systemPartitionPartition TypePartition attributesSuggested size
None/dev/sda1BIOS boot partition 1 MiB
//dev/sda2Linux x86-64 root (/)Legacy BIOS bootable23–32 GiB
[SWAP]/dev/sda2Linux swap More than 512 MiB
/home/dev/sda3Linux Remainder of the device

示例

使用 parted 对磁盘进行分区,使用 GPT 分区表

parted -a optimal /dev/sda
mklabel gpt 
unit mib 
mkpart primary 1 260
name 1 boot
set 1 boot on 
mkpart primary 260  -1
name 2 root

格式化文件系统

mkfs.fat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2

好了,分区划完,可以装系统,装引导。

添加新评论