专栏首页吴伟祥Linux Partition scheme 分区方案(一)

Linux Partition scheme 分区方案(一)

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 来说不是问题,但是许多新方案可能要求占用一个特殊的小分区。

单root分区

这种是最简单,同时也能满足大部分应用场景的方案。如果需要的话,可以建立一个 swapfile。通常刚开始的时候建议一个单独的 / 分区,然后根据应用场景的需要,例如 RAID,加密,独立的多媒体分区等建立其他的分区。

UEFI系统需要 ESP 分区,在 BIOS 系统上使用 GPT 进行分区后,安装 GRUB 时会需要一个额外的 BIOS 启动分区。

多分区

将某个路径挂载为独立分区可以使其拥有不同的文件系统和挂载参数。某些情况下(例如多媒体文件分区),可以被多个操作系统共享。

挂载点

下面这些路径可以作为独立分区的挂载点,你也可以根据实际需要做出其他决定。

根分区  /

根目录是目录树的顶层,这里是主文件系统挂载和其他文件系统挂靠的地方。所有文件和目录都在根目录 / 显示,即使它们实际上存储在其他的物理设备上。根文件系统中的内容应该足以启动、恢复、修复系统。因此 /目录下的特定目录是不能作为独立分区的。

/ 分区或叫根分区是最重要而且必需的,需要最先挂载,其他其他分区可以被它取代。

警告: 与系统启动相关的特定目录(除了 /boot) 必须 与 / 在同一个分区,或在系统刚进入用户态的时候通过 initramfs 挂载。这些特定的目录包括:/etc 和 /usr [1] 。

/boot                      Boot Loader Files

/boot 分区包含内核、ramdisk 镜像以及 bootloader 配置文件和 bootloader stage。它也可以存放内核在执行用户态程序之前所使用的其他数据。/boot 在日常系统运行中并不需要,只在启动和内核升级(包括重建initial ramdisk)的时候用到。

如果使用软RAID0(条带化)系统的话,必须有一个独立的 /boot 分区。

Note: 如果使用 UEFI 启动管理器,支持读取 ESP 文件系统,建议将 ESP 挂载到 /boot.

/home                      Home Directories  

/home目录包含用户定义的配置文件、缓存、应用程序数据和媒体文件。

/home目录独立使得/分区可以单独重新划分,但是请注意你可以在 /home 没有独立分区的情况下你仍然可以在不修改 /home 目录内容的情况下重装 Arch —— 删除其他顶级目录,然后执行pacstrap。

不能与使用其他发行版的用户共享同一个home目录,因为不同的发行版可能使用不兼容的软件版本和补丁。可以共享媒体目录,或至少使用 /home 分区下的不同home目录。

/var                            Variable     Files

/var 目录存储变量数据例如 spool 目录和文件,管理和登录数据,pacman 的缓存,ABS 树等等。它通常被用作缓存或者日志记录,因此读写频繁。将它独立出来可以避免由于大量日志写入造成的磁盘空间耗尽等问题。

可以将 /usr 设置为只读挂载。所有在操作系统运行过程中(例如安装或软件维护)写入 /usr 的东西放到 /var 下。

注意: /var包含许多小文件。如果将其作为独立分区,在文件系统的选择上需要考虑这一点。

/tmp                           Temporary Files

默认情况下这个目录已经是一个独立分区,systemd 将其挂载问tmpfs

Swap

swap 分区提供能够被作为虚拟内存的内存空间。swap file 也可以实现同样的功能,并且它们之间没有明显的性能区别,但是后者更易于根据需要调整大小。如果没有使用休眠特性的话,swap 分区可以被多个系统共享。查看 Suspend and hibernate 了解如何通过 swap 分区或文件休眠。

分区应该设置多大?

注意:

  • 以下只是简单的建议,分区大小没有严格的准则
  • 如果可能的话,为每个文件系统保留 25% 的额外空间以应对今后的变化,还可以避免文件系统碎片

分区的大小主要取决于个人的选择,以下内容可能会有一定帮助:

/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 分区用于这一目的。

分区工具

  • fdisk — Linux 自带的命令行分区工具。

https://www.kernel.org/ || util-linux

  • cfdisk — 使用 ncurses 库编写的具有伪图形界面的命令行分区工具。

https://www.kernel.org/ || util-linux

  • sfdisk — 支持脚本的 fdisk.

|| util-linux

http://www.rodsbooks.com/gdisk/ || gptfdisk

  • cgdisk — GPT 版的 cfdisk。

http://www.rodsbooks.com/gdisk/ || gptfdisk

  • sgdisk — Scriptable version of gdisk.

http://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html || gptfdisk

  • GNU Parted — 命令行分区工具。

http://www.gnu.org/software/parted/parted.html || parted

  • GParted — GTK 图形界面的分区工具。

http://gparted.sourceforge.net/ || gparted

  • Partitionmanager — QT 图形界面的分区工具。

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.

分区工具

以前,在分区的时候需要手工计算和介入以确保正确对齐。现在有许多常用的分区工具已经可以自动处理分区对齐问题:

  • fdisk
  • gdisk
  • gparted
  • parted

要验证一个分区是否对齐,使用parted 工具进行检查:

# parted /dev/sda
(parted) align-check optimal 1
1 aligned

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mysql分区表 介绍和使用(转)

    分区表可以用一张表存储大量数据,达到和物理分表同样的效果,但操作起来更简单,对于使用者来说和普通表无差别

    wuweixiang
  • MySql数据库分表分区实践(转)

    海量设备通过物联网服务接入云端,设备每30s上报一次自身数据(以下称为动态数据)。 物联网服务将设备上报的数据转发给数据处理网关,由数据入库网关执行批量入库操作...

    wuweixiang
  • Linux 格式化和挂载数据盘 转

    本文描述如何用一个新的数据盘创建一个单分区数据盘并挂载文件系统。本文仅适用于使用 fdisk 命令对一个不大于 2 TB 的数据盘执行分区操作。如果需要分区的数...

    wuweixiang
  • linux学习第十四篇:查看磁盘,文件大小命令:df,du;磁盘分区

    df命令 df:查看已挂载磁盘的总容量、使用容量、剩余容量等,可以不加任何参数,默认是按k为单位显示的。 ? 带有tmpfs的都是临时的文件系统,所以在对应的挂...

    用户1215343
  • VM虚拟机系统自定义分区

    点击下一步,选择其他,因为我们安装的既不是 win 也不是 Linux,是双系统:

    wsuo
  • 盘点 Kafka 不能保证严格消费顺序的各种情况

    上一篇文章「保证严格的消息顺序消费究竟有多难?」简单描述了对消息顺序消费的一些理解,上一篇文章中的第二个故障问题,感觉没描述清楚,现在我以 Kafka 为例子,...

    张乘辉
  • 一文带你搞懂 MySQL 中的分区!

    首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。

    良月柒
  • 最小化约束下的杂质分区

    原文标题:Minimizing Impurity Partition Under Constraints

    李欣颖6837176
  • MySQL分区分库分表(2) --- 实操篇

    上一篇主要讲到了分区分库分表的概念,其实在不影响性能的情况下,我们完全可以使用单分区单库单表。但是业务量大的情况下,受到性能限制我们不得不选择使用分区分库分表。...

    逆月翎
  • Linux-fdisk磁盘分区命令(16)

    名称: fdisk 使用: fdisk [块设备磁盘] 说明: 将一个块设备(磁盘)分成若干个块设备(磁盘),并将分区的信息写进分区表。  fdisk命令菜单常...

    张诺谦

扫码关注云+社区

领取腾讯云代金券