Linux系统下必需的分区为: 根分区("/") + 交换分区(swap)
swap分区相当于Windows中虚拟内存的概念,也就是内存数据与硬盘的交换。
根分区包含Linux系统所有的目录。如果在安装系统时只分配了/分区,那么上面的/boot、/usr和/var将都包含在根分区中,也就是这些分区将占用根分区的空间。
如果将/boot、/usr等单独划分,那么这些分区将不再占用根分区空间。
虽然Linux默认只需划分根分区和交换分区即可完成系统安装,但是不建议这么做,因为如果只划分了/分区,那么当/遭到破坏以后,系统可能无法启动,存储在/分区的资料也可能丢失,这样很不安全。
因此,我们建议给独立的应用分配独立的分区,这样即使某个分区被破坏,也不影响其他分区的数据,能最大程度减少系统崩溃造成的损失。
以下分区建议在安装系统时独立分配。
/boot:存储系统的引导信息和内核等信息。 Boot Loader Files
/usr:存储系统应用软件安装信息。 User Programs
/var:存储系统日志信息。 Variable Files
所有的东西必须在/目录下,分开后是系统把他挂载在根目录下,物理上还是映射在你所在物理分区
虽然有一些关于分区方案的通用建议,但没有严格的准则。有许多影响分区方案的因素,例如对灵活性的期望,访问速度,安全性以及可用磁盘空间的硬性限制。实际上就是个人取舍的问题。如果你想双启动 Arch Linux 和 Windows,请参考 Windows and Arch Dual Boot。
警告: 请别忘记为boot-loader预留空间。这对于 MBR 和 GRUB-Legacy 来说不是问题,但是许多新方案可能要求占用一个特殊的小分区。
这种是最简单,同时也能满足大部分应用场景的方案。如果需要的话,可以建立一个 swapfile。通常刚开始的时候建议一个单独的 /
分区,然后根据应用场景的需要,例如 RAID,加密,独立的多媒体分区等建立其他的分区。
UEFI系统需要 ESP 分区,在 BIOS 系统上使用 GPT 进行分区后,安装 GRUB 时会需要一个额外的 BIOS 启动分区。
将某个路径挂载为独立分区可以使其拥有不同的文件系统和挂载参数。某些情况下(例如多媒体文件分区),可以被多个操作系统共享。
下面这些路径可以作为独立分区的挂载点,你也可以根据实际需要做出其他决定。
根目录是目录树的顶层,这里是主文件系统挂载和其他文件系统挂靠的地方。所有文件和目录都在根目录 /
显示,即使它们实际上存储在其他的物理设备上。根文件系统中的内容应该足以启动、恢复、修复系统。因此 /
目录下的特定目录是不能作为独立分区的。
/
分区或叫根分区是最重要而且必需的,需要最先挂载,其他其他分区可以被它取代。
警告: 与系统启动相关的特定目录(除了 /boot
) 必须 与 /
在同一个分区,或在系统刚进入用户态的时候通过 initramfs 挂载。这些特定的目录包括:/etc
和 /usr
[1] 。
/boot
分区包含内核、ramdisk 镜像以及 bootloader 配置文件和 bootloader stage。它也可以存放内核在执行用户态程序之前所使用的其他数据。/boot
在日常系统运行中并不需要,只在启动和内核升级(包括重建initial ramdisk)的时候用到。
如果使用软RAID0(条带化)系统的话,必须有一个独立的 /boot
分区。
Note: 如果使用 UEFI 启动管理器,支持读取 ESP 文件系统,建议将 ESP 挂载到 /boot
.
/home
目录包含用户定义的配置文件、缓存、应用程序数据和媒体文件。
将/home
目录独立使得/
分区可以单独重新划分,但是请注意你可以在 /home
没有独立分区的情况下你仍然可以在不修改 /home
目录内容的情况下重装 Arch —— 删除其他顶级目录,然后执行pacstrap。
不能与使用其他发行版的用户共享同一个home目录,因为不同的发行版可能使用不兼容的软件版本和补丁。可以共享媒体目录,或至少使用 /home
分区下的不同home目录。
/var
目录存储变量数据例如 spool 目录和文件,管理和登录数据,pacman 的缓存,ABS 树等等。它通常被用作缓存或者日志记录,因此读写频繁。将它独立出来可以避免由于大量日志写入造成的磁盘空间耗尽等问题。
可以将 /usr
设置为只读挂载。所有在操作系统运行过程中(例如安装或软件维护)写入 /usr
的东西放到 /var
下。
注意: /var
包含许多小文件。如果将其作为独立分区,在文件系统的选择上需要考虑这一点。
默认情况下这个目录已经是一个独立分区,systemd 将其挂载问tmpfs。
swap 分区提供能够被作为虚拟内存的内存空间。swap file 也可以实现同样的功能,并且它们之间没有明显的性能区别,但是后者更易于根据需要调整大小。如果没有使用休眠特性的话,swap 分区可以被多个系统共享。查看 Suspend and hibernate 了解如何通过 swap 分区或文件休眠。
注意:
分区的大小主要取决于个人的选择,以下内容可能会有一定帮助:
/boot - 200 MB
实际需求大约 100 MB,如果有多个内核/启动镜像同时存在,建议分配 200 或者 300 MB。
/ - 15-20 GB
传统上包括 /usr
目录,根据安装的软件数量,会产生非常明显的增长。15-20 GB 对于大多数用户来说是一个比较合适的取值。如果你打算在这里放一个交换文件(swap file)的话,需要适当调大取值。
/var - 8-12 GB
除了其他数据以外,还包括ABS 树和 pacman 缓存。保留缓存的包提供了包降级的能力,因此非常有用。也正因为这样,/var
的大小会随着时间推移而增长。尤其是 pacman 缓存将会随着新软件的安装、系统的升级而增长。在磁盘空间不足的时候,可以安全的清理这个目录。/var
分配 8-12 GB 对于桌面系统来说是比较合适的取值,具体取值取决于安装的软件数量。
/home - [不定]
通常用于存放用户数据,下载的文件和媒体文件。在桌面系统中,/home
通常是最大的文件系统。
swap - [不定]
在拥有不足 512 MB 内存的机器上,通常为 swap 分区分配2倍内存大小的空间。如果有更大的内存(大于 1024 MB),可以分配较少的空间甚至不需要swap 分区。
注意: 如果你要使用休眠到磁盘功能,你需要参考Suspend and hibernate#About swap partition/file size。使用虚拟机时建议使用 Swap.
/data - [不定]
可以为需要多用户共享的文件建立一个“data”分区。也可以使用 /home
分区用于这一目的。
https://www.kernel.org/ || util-linux
https://www.kernel.org/ || util-linux
|| util-linux
http://www.rodsbooks.com/gdisk/ || gptfdisk
http://www.rodsbooks.com/gdisk/ || gptfdisk
http://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html || gptfdisk
http://www.gnu.org/software/parted/parted.html || parted
http://gparted.sourceforge.net/ || gparted
http://sourceforge.net/projects/partitionman/ || partitionmanager
下面表格可以帮助选择
用户交互 | MBR | GPT |
---|---|---|
对话框 | fdisk parted | fdisk gdisk parted |
模拟图形界面 | cfdisk | cfdisk cgdisk |
非交互 | sfdisk parted | sfdisk sgdisk parted |
图形界面 | gparted partitionmanager | gparted partitionmanager |
恰当的分区对齐有助于提升性能和使用寿命。这是由硬件层面和文件系统层面的每次块 I/O 操作特性决定的。对齐的关健是分区大小(至少)是块大小的倍数,块大小取决于选用的硬件设备。如果分区没有以块大小的整数倍对齐,对齐文件系统就失去意义了,因为从分区的起始偏移开始就是有偏差的。
传统上,机械硬盘是按照柱面、磁头和扇区来寻址需要读写的数据位置(也被称作 CHS addressing)。这代表了相关数据的径向的位置、驱动器磁头(包括盘片和盘面)和轴向的位置。对于 LBA (逻辑块寻址),这就不再是这样了。而是整个磁盘被按照连续的数据流寻址,以扇区作为最小寻址单位。
标准的扇区大小是512B,但是现代的高容量机械硬盘使用更大的值,通常是 4KiB。使用高于512B的值被称作高级格式化
固态硬盘基于闪存芯片,与机械硬盘有显著的不同。只读访问能够以随机方式进行,而擦除(覆写或随机写入)只能以整块进行。此外,擦除块大小(Erase Block Size,EBS)比块大小明显大很多,例如 128KiB vs 4KiB,所以需要以 EBS 的整数倍进行对齐。有些 NVMe 需要 4KiB 对齐,要确定 SSD 大小,请查看 Advanced Format#How to determine if HDD employ a 4k sector.
以前,在分区的时候需要手工计算和介入以确保正确对齐。现在有许多常用的分区工具已经可以自动处理分区对齐问题:
要验证一个分区是否对齐,使用parted 工具进行检查:
# parted /dev/sda
(parted) align-check optimal 1
1 aligned