Difference between revisions of "Partitioning (简体中文)"

From ArchWiki
Jump to: navigation, search
(flagged broken section links)
(Tag: wiki-scripts)
 
(30 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:File systems (简体中文)]]
 
[[Category:File systems (简体中文)]]
 +
[[ar:Partitioning]]
 
[[en:Partitioning]]
 
[[en:Partitioning]]
 
[[es:Partitioning]]
 
[[es:Partitioning]]
 +
[[hu:Partitioning]]
 
[[it:Partitioning]]
 
[[it:Partitioning]]
 +
[[ja:パーティショニング]]
 +
[[pl:Partitioning]]
 
[[ru:Partitioning]]
 
[[ru:Partitioning]]
{{Article summary start}}
+
{{Related articles start (简体中文)}}
{{Article summary text|An overview of disk partitioning tools, best practices, and additional considerations.}}
+
{{Related|Arch filesystem hierarchy}}
{{Article summary heading|Related}}
+
{{Related|File systems}}
{{Article summary wiki|fstab}}
+
{{Related|fdisk}}
{{Article summary wiki|LVM}}
+
{{Related|parted}}
{{Article summary wiki|Swap}}
+
{{Related|fstab}}
{{Article summary wiki|Format a device}}
+
{{Related|LVM}}
{{Article summary wiki|File Systems}}
+
{{Related|Swap}}
{{Article summary end}}
+
{{Related|Format a device}}
{{TranslationStatus (简体中文)|Partitioning|2012-10-26|230363}}
+
{{Related articles end}}
{{Translateme (简体中文)}}
+
{{TranslationStatus (简体中文)|Partitioning|2016-07-31|441741}}
  
''Partitioning'' a hard drive allows one to logically divide the available space into sections that can be accessed independently of one another. Partition information is stored within a hard drive's [[GUID Partition Table]] or [[Master Boot Record]].
+
''分区'' 硬盘的可用空间可以划分为多个逻辑区块,区块之间的访问是相互独立的。
  
An entire hard drive may be allocated to a single partition, or one may divide the available storage space across multiple partitions. A number of scenarios require creation multiple partitions: dual- or multi-booting, for example, or maintaining a [[swap]] partition. In other cases, partitioning is used as a means of logically separating data, such as creating separate partitions for audio and video files. Common partitioning schemes are discussed in detail below.
+
可以为一个硬盘划分一个或者多个分区。一些场景需要使用多个分区:例如双重或多重启动,或使用 [[swap]] 分区。此外,分区也可以从逻辑上隔离数据,例如为音频和视频数据创建单独的分区。下面将会讨论通用的分区方案。
  
Each partition should be formatted to a [[File Systems|file system type]] before being used.
+
每个分区在使用前需要格式化为 [[File systems (简体中文)|文件系统]]
  
Users may create up to four ''primary partitions'' per hard drive. If additional partitions are required, a single ''extended partition'' can be created instead (that is, up to three primary partitions and one extended partition). An extended partition can be further divided into an unlimited number of ''logical partitions.''
+
== 分区表 ==
  
==分区类型==
+
分区信息被存放在分区表中。目前有两种主流的模式:传统的 [[Master Boot Record]],和新的 [[GUID Partition Table]]。后者功能更强大,解决了许多MBR的限制。
  
磁盘分区是指在磁盘上定义若干区域(分区),每个都象是一个独立的磁盘,可以在其上创建一个文件系统(格式化)。
+
{{Note|可以用 {{ic|parted ''/dev/sda'' print}} 或 {{ic|fdisk -l ''/dev/sda''}} 查看当前分区信息,{{ic|''/dev/sda''}} 是设备名。}}
  
分区的类型有三种:
+
=== Master Boot Record ===
* 主分区
+
* 扩展分区
+
** 逻辑分区
+
  
'''主分区'''可以被启动,一个物理磁盘或RAID卷最多能有'''4个主分区'''。如果需要三个以上分区,需要使用包含'''逻辑分区'''的'''扩展分区'''。扩展分区可以看作存放逻辑分区的容器。一个硬盘最多只能有一个扩展分区。而且,扩展分区也算主分区,所以有扩展分区的话,就只能有另外三个主分区。扩展分区可以划分为无限多个逻辑分区。如果使用多系统,Windows必须装在主分区。
+
MBR原本只支持最多4个分区。后来加入了扩展分区和逻辑分区以绕过这个限制。
  
进行磁盘分区时,可以观察到命名规则为:主分区为 {{ic|sda1}}到{{ic|sda3}},跟着是扩展分区{{ic|sda4}},在扩展分区中划分出来的逻辑分区分别是{{ic|sda5}}、{{ic|sda6}},以此类推。
+
目前有三中分区类型:
  
===交换分区===
+
* 主分区(Primary)
 +
* 扩展分区(Extended)
 +
** 逻辑分区(Logical)
  
交换分区(swap)是在硬盘上划出的一段虚拟内存区域,当物理内存已经放不下数据时,用来临时应急充当内存。
+
'''主分区'''每个磁盘或者RAID卷上只能有4个,可设置为可启动状态。如果分区方案要求使用4个以上的分区,就需要使用一个包含'''逻辑分区'''的'''扩展分区'''。扩展分区可以被看作是容纳逻辑分区的容器。硬盘上最多只能有1个扩展分区。如果磁盘上有1个扩展分区,它也被看作是1个主分区。因此只能另外再建立3个主分区(例如3个主分区加1个扩展分区)。扩展分区内所包含的逻辑分区数量没有限制。如果在双重启动中有Windows,Windows需要占据一个主分区。
  
以前,一般规则是交换分区为物理内存的两倍,在内存越来越大的今天,这个规则已经逐步过时。如果你的内存较小,只有512M,那么作为日常应用,需要 2 倍就足够了。如果系统有大量内存(超过 1024M),则可以完全不用交换分区,因为可以在以后使用 [[HOW TO: Create swap file|交换文件]] 替代。本例中使用 1G 交换分区。
+
通常习惯是创建主分区''sda1''到''sda3'',然后建立一个扩展分区''sda4''。''sda4''中包含''sda5'',''sda6''等逻辑分区。
{{注意|如果使用休眠到磁盘,必须要'''等于'''物理内存的交换分区。这种情况下,推荐使用超过物理内存容量10%-15%}}
+
  
==分区结构==
+
{{Wikipedia (简体中文)|主引导记录}}
  
如何对磁盘进行分区全靠个人喜好,下面提供一些指导。设计分区结构一般要考虑扩展性、速度、安全性以及磁盘空间。两种简单而常见的结构是:一,一个根分区,一个交换分区;二,只有一个根分区。请继续阅读,以做出最佳选择。如果同时安装了Windows,请阅读[[Windows and Arch Dual Boot|Windows和Arch双系统]]。
+
=== GUID 分区表 ===
  
=== Single root partition ===
+
GPT方案中只有一种分区类型,'''主分区'''。磁盘和RAID卷中包含的分区数量没有限制。
This scheme is the simplest; it is quick to setup but lacks flexibility and security. Two simple possibilities are:
+
* One partition for root and one partition for swap
+
* Just a single root partition without swap.
+
  
=== Discrete partitions ===
+
{{Wikipedia (简体中文)|GUID磁碟分割表}}
  
比起使用单独一个大分区,使用独立的分区有如下优点:
+
=== Btrfs 分区 ===
  
* 安全:在{{ic|/etc/fstab}}中,每个文件系统可以单独配置为'nosuid'、'nodev'、'noexec'、'readonly' 等。
+
Btrfs可以独占整个存储设备并替代 [[MBR]] 和 [[GPT]] 分区方案。请参考[[Btrfs#Partitioning|Btrfs Partitioning]]{{Broken section link}}以获取更多信息。
* 稳定:只要有写权限,一个用户或恶意程序可能在文件系统里写满垃圾。位于其它文件系统上的重要程序将免受影响。
+
* 速度:经常写入的文件系统会有碎片(避免碎片的方式是不将文件系统写满),单独的文件系统不受其它分区的影响,而且可以单独进行碎片整理。
+
* 保险:就算一个文件系统坏掉了,别的不会受影响。
+
* 通用:使用独立文件系统,更有利于在多个系统间共享文件。每个文件系统都能够根据数据和使用状况单独选择合适的格式。
+
  
=== Mount points ===
+
{{Wikipedia (简体中文)|Btrfs}}
  
下面的挂载点可以放在单独的分区中:
+
=== 选择GPT 还是 MBR ===
  
====/ (root)====
+
[[GUID Partition Table]] (GPT)是一种更灵活的分区方式。它正在逐步取代[[Master Boot Record]] (MBR)系统。GPT相对于诞生于MS-DOS时代的MBR而言,有许多优点。新版的''fdisk''(MBR)和''gdisk''(GPT)使得使用GPT或者MBR在可靠性和性能最大化上都非常容易。
根文件系统是目录等级的最顶部,所有其它文件系统都通过它访问,即使位于不同的物理设备,所有目录和文件也都显示在根目录{{ic|/}}下面。根文件系统必须能够启动、恢复、还原或者修复系统。所以 / 下面的一些目录不应该位于不同分区。(参见下面的警告)。
+
  
The {{ic|/}} partition or root partition is necessary and it is the most important. The other partitions can be replaced by it, even though having different partitions is recommended.
+
在做出选择前,需要考虑如下内容:
 +
* 如果使用GRUB legacy作为bootloader,必须使用MBR。
 +
* 如果使用传统的BIOS,并且双启动中包含 Windows (无论是32位版还是64位版),必须使用MBR。
 +
* 如果使用 [[UEFI]] 而不是BIOS,并且双启动中包含 Windows 64位版,必须使用GPT。
 +
* 非常老的机器需要使用 MBR,因为 BIOS 可能不支持 GPT.
 +
* 如果不属于上述任何一种情况,可以随意选择使用 GPT 还是 MBR。由于 GPT 更先进,建议选择 GPT。
 +
* 建议在使用 [[Unified Extensible Firmware Interface|UEFI]] 的情况下选择 GPT,因为有些 UEFI firmware 不支持从 MBR 启动。
  
{{Note|1=Support for {{ic|/usr}} as a separate partition is not provided by default [https://bbs.archlinux.org/viewtopic.php?pid=1006924#p1006924]. If you have a compelling reason for doing so, read [[mkinitcpio#/usr as a separate partition]].}}
+
{{注意|为了使 GRUB 从一台有 GPT 分区的基于 BIOS 的系统上启动,需要创建一个 [[GRUB#GUID_Partition_Table_.28GPT.29_specific_instructions|BIOS 启动分区]], 这个分区和 /boot 没关系,仅仅是 GRUB 使用,不要建立文件系统和挂载。}}
  
====/boot====
+
== 分区方案 ==
  
此目录包含内核、ramdisk 镜像和启动加载程序的配置文件和不同阶段使用的文件。/boot 还可以保存内核开始执行用户空间程序前使用的数据,包括保存的主启动扇区和扇区映射文件。/boot 是启动必须的,但是特别的地方是它可以位于单独分区。
+
虽然有一些关于分区方案的通用建议,但没有严格的准则。有许多影响分区方案的因素,例如对灵活性的期望,访问速度,安全性以及可用磁盘空间的硬性限制。实际上就是个人取舍的问题。如果你想双启动 Arch Linux 和 Windows,请参考 [[Windows and Arch Dual Boot]]。
 +
{{警告|请别忘记为boot-loader预留空间。这对于 MBR 和 GRUB-Legacy 来说不是问题,但是许多新方案可能要求占用一个特殊的小分区。}}
  
If kept on a separate partition, {{ic|/boot}} does not require a journaled file system. A separate {{ic|/boot}} partition is needed if installing a software RAID0 (stripe) system.
+
=== 单root分区 ===
  
{{警告|除了{{ic|/boot}},启动系统必须的分区为: {{ic|/bin}}, {{ic|/etc}}, {{ic|/lib}} 和 {{ic|/sbin}}。和{{ic|/boot}}不同,这些目录必须位于'''{{ic|/}}'''。}}
+
这种是最简单,同时也能满足大部分应用场景的方案。如果需要的话,可以建立一个 [[swapfile]]。通常刚开始的时候建议一个单独的 {{ic|/}} 分区,然后根据应用场景的需要,例如 RAID,加密,独立的多媒体分区等建立其他的分区。
  
====/home====
+
[[UEFI]]系统需要 [[EFI System Partition|ESP]] 分区,在 [[BIOS]] 系统上使用 [[GPT]] 进行分区后,安装 GRUB 时会需要一个额外的 BIOS 启动分区。
The {{ic|/home}} directory contains user-specific configuration files (the so-called "dot files"). Optionally, it can also hold any type of media (videos, music, etc), and if you use Wine, the games/programs will be installed in {{ic|~/.wine/}} by default. So please take this into account if you chose to create a separate home partition.
+
  
While keeping it on a separate partition can be useful in case you reinstall, some prefer to start fresh (because that's usually the reason for a reinstall), instead of reusing old, and possibly deprecated or problematic, configuration files. The main advantage is that, in very rare cases, if the root partition becomes too full, it will not impact your web browser, media player, torrent client, etc. They will keep working uninhibited, and will keep saving new changes to their setting files or to their cache.
 
  
A home partition can also be shared with other installed Linux distributions, but this is not recommended because of possible incompatibilities between user-specific configuration files. The only exception is if each distribution has its own user dir on the shared home partition.
+
=== 多分区 ===
  
====Swap====
+
将某个路径挂载为独立分区可以使其拥有不同的文件系统和挂载参数。某些情况下(例如多媒体文件分区),可以被多个操作系统共享。
  
The [[swap]] partition provides memory that can be used as virtual RAM. It is recommended for PCs with 1GB or less of physical RAM.
+
=== 挂载点 ===
  
Historically, the general rule for swap partition size was to allocate twice the amount of physical RAM. As computers have gained ever larger memory capacities, this rule has become deprecated. On machines with up to 512MB RAM, the 2x rule is usually adequate. If a sufficient amount of RAM (more than 1024MB) is available, it may be possible to have a smaller swap partition or even eliminate it. With more than 2 GB of physical RAM, one can generally expect good performance without a swap partition. There is always an option to create a [[HOW TO: Create swap file|swap file]] after the system is setup.
+
下面这些路径可以作为独立分区的挂载点,你也可以根据实际需要做出其他决定。
  
{{Note|The old rule of matching the swap partition size with the available RAM when using [[Suspend_to_Disk|suspend-to-disk]] no longer applies. The default suspend method uses an image the size of 40% of the currently available RAM by default. Even with [[TuxOnIce]] the atomic copy generally only takes about 70% after compression.[http://tuxonice.net/features]}}
+
==== 根分区 ====
  
====/usr====
+
根目录是目录树的顶层,这里是主文件系统挂载和其他文件系统挂靠的地方。所有文件和目录都在根目录 {{ic|/}} 显示,即使它们实际上存储在其他的物理设备上。根文件系统中的内容应该足以启动、恢复、修复系统。因此 {{ic|/}} 目录下的特定目录是不能作为独立分区的。
The {{ic|/usr}} directory stores file that are shared by all users. A {{ic|/usr}} partition can be useful because it can be shared with others Linux OS.
+
  
In order to have a separate /usr partition, a mkinitcpio hook is required, as /usr is expected to be available at boot: see [[Mkinitcpio#/usr as a separate partition]].
+
{{ic|/}} 分区或叫根分区是最重要而且必需的,需要最先挂载,其他其他分区可以被它取代。
  
====/var====
+
{{警告|与系统启动相关的特定目录(除了 {{ic|/boot}}) '''必须''' 与 {{ic|/}} 在同一个分区,或在系统刚进入用户态的时候通过 [[initramfs]] 挂载。这些特定的目录包括:{{ic|/etc}} 和 {{ic|/usr}} [http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken] 。}}
  
;{{ic|/var}}: 存放可变数据,比如管理和登录数据、[[pacman (简体中文)|pacman]]缓存、[[Arch Build System (简体中文)|ABS]]目录树等。该分区的存在使得挂载{{ic|/usr}}为只读成为可能,以前在{{ic|/usr}}读写的数据现在都改在{{ic|/var}}下进行。<br>{{注意|{{ic|/var}}下存放着很多零散的小文件。如果使用独立分区,需要斟酌一下文件系统类型(见下)。}}
+
==== /boot ====
  
It exists to make it possible to mount'' {{ic|/usr}} ''as read-only. Everything that historically went into'' {{ic|/usr}} ''that is written to during system operation (as opposed to installation and software maintenance) must reside under'' {{ic|/var}}''.
+
{{ic|/boot}} 分区包含内核、ramdisk 镜像以及 bootloader 配置文件和 bootloader stage。它也可以存放内核在执行用户态程序之前所使用的其他数据。{{ic|/boot}} 在日常系统运行中并不需要,只在启动和内核升级(包括重建initial ramdisk)的时候用到。
  
{{Note|{{ic|/var}} contains many small files. The choice of filesystem type (see below) should consider this fact if a separate partition is used.}}
+
如果使用软RAID0(条带化)系统的话,必须有一个独立的 {{ic|/boot}} 分区。
 +
 
 +
{{Note|如果使用 UEFI 启动管理器,支持读取 ESP 文件系统,建议将 [[ESP]] 挂载到 {{ic|/boot}}.}}
 +
 
 +
==== /home ====
 +
 
 +
{{ic|/home}}目录包含用户定义的配置文件、缓存、应用程序数据和媒体文件。
 +
 
 +
将{{ic|/home}}目录独立使得{{ic|/}}分区可以单独重新划分,但是请注意你可以在 {{ic|/home}} 没有独立分区的情况下你仍然可以在不修改 {{ic|/home}} 目录内容的情况下重装 Arch —— 删除其他顶级目录,然后执行pacstrap。
 +
 
 +
不能与使用其他发行版的用户共享同一个home目录,因为不同的发行版可能使用不兼容的软件版本和补丁。可以共享媒体目录,或至少使用 {{ic|/home}} 分区下的不同home目录。
 +
 
 +
==== /var ====
 +
 
 +
{{ic|/var}} 目录存储变量数据例如 spool 目录和文件,管理和登录数据,[[pacman]] 的缓存,[[ABS]] 树等等。它通常被用作缓存或者日志记录,因此读写频繁。将它独立出来可以避免由于大量日志写入造成的磁盘空间耗尽等问题。
 +
 
 +
可以将 {{ic|/usr}} 设置为只读挂载。所有在操作系统运行过程中(例如安装或软件维护)写入 {{ic|/usr}} 的东西放到 {{ic|/var}} 下。
 +
 
 +
{{注意|{{ic|/var}}包含许多小文件。如果将其作为独立分区,在文件系统的选择上需要考虑这一点。}}
  
 
==== /tmp ====
 
==== /tmp ====
Directory for programs that require temporary storage of files such as'' {{ic|.lck}} '', which can be used to prevent multiple instances of their respective program until a task is completed. Upon completion, the'' {{ic|.lck}} ''file will be automatically removed. Programs must not assume that any files or directories in'' {{ic|/tmp}} ''are preserved between invocations of the program and files and directories located under'' {{ic|/tmp}} ''will typically be deleted whenever the system is booted.
 
  
=====我的分区应该设多大?=====
+
默认情况下这个目录已经是一个独立分区,systemd 将其挂载问''tmpfs''。
 +
 
 +
==== Swap ====
  
这个问题最好根据个人需要回答,请参考下面这些原则:
+
[[swap]] 分区提供能够被作为虚拟内存的内存空间。[[Swap#Swap file|swap file]] 也可以实现同样的功能,并且它们之间没有明显的性能区别,但是后者更易于根据需要调整大小。如果没有使用休眠特性的话,swap 分区''可以''被多个系统共享。查看 [[Suspend and hibernate]] 了解如何通过 swap 分区或文件休眠。
  
* 根文件系统({{ic|/}})包含{{ic|/usr}}目录,这样如果安装很多程序,会变得很大。15-20GB应该能够满足大部分人的要求。
+
==== 分区应该设置多大? ====
* {{ic|/var}}文件系统除包含软件数据,还有[[ABS (简体中文)|ABS]]树和[[pacman (简体中文)|pacman]]缓存。缓存软件包快捷方便;可以按照要求降级软件包。{{ic|/var}}的大小会逐步增长;[[pacman (简体中文)|pacman]]缓存在运行中逐步增大,但是可以很方便的清空。如果使用 SSD 应该将{{ic|/var}}放到HDD,将 {{ic|/}}和{{ic|/home}}分区放到SSD,以减少SSD的读写。8-12GB对桌面系统来说应该足够了,服务器需要更大的{{ic|/var}}文件系统。
+
* {{ic|/home}}文件系统一般存放用户数据、下载和多媒体文件。在桌面电脑中,{{ic|/home}} 一般是远超过其它的最大的文件系统。记住如果重装Arch。{{ic|/home}}中的数据不会改变(只要{{ic|/home}}是独立分区)。
+
* {{ic|/boot}}一般只需要大概100MB。
+
* 如果空间充足,可以为每个文件系统多留25%空间,以应对以后的变化,还可以避免碎片。
+
  
==Partitioning tools==
+
{{注意|
 +
* 以下只是简单的建议,分区大小没有严格的准则
 +
* 如果可能的话,为每个文件系统保留 25% 的额外空间以应对今后的变化,还可以避免文件系统碎片
 +
}}
 +
分区的大小主要取决于个人的选择,以下内容可能会有一定帮助:
  
To control the actual partition scheme type:
+
; /boot - 200 MB : 实际需求大约 100 MB,如果有多个内核/启动镜像同时存在,建议分配 200 或者 300 MB。
# fdisk -l
+
; / - 15-20 GB : 传统上包括 {{ic|/usr}} 目录,根据安装的软件数量,会产生非常明显的增长。15-20 GB 对于大多数用户来说是一个比较合适的取值。如果你打算在这里放一个交换文件(swap file)的话,需要适当调大取值。
 +
; /var - 8-12 GB : 除了其他数据以外,还包括[[ABS]] 树和 [[pacman]] 缓存。保留缓存的包提供了包[[downgrade|降级]]的能力,因此非常有用。也正因为这样,{{ic|/var}} 的大小会随着时间推移而增长。尤其是 pacman 缓存将会随着新软件的安装、系统的升级而增长。在磁盘空间不足的时候,可以安全的清理这个目录。{{ic|/var}} 分配 8-12 GB 对于桌面系统来说是比较合适的取值,具体取值取决于安装的软件数量。
 +
; /home - [不定] : 通常用于存放用户数据,下载的文件和媒体文件。在桌面系统中,{{ic|/home}} 通常是最大的文件系统。
 +
; swap - [不定] : 在拥有不足 512 MB 内存的机器上,通常为 swap 分区分配2倍内存大小的空间。如果有更大的内存(大于 1024 MB),可以分配较少的空间甚至不需要swap 分区。
 +
: {{注意|如果你要使用休眠到磁盘功能,你需要参考[[Suspend and hibernate#About swap partition/file size]]。使用[[virtual machine|虚拟机]]时建议使用 Swap.}}
 +
; /data - [不定] : 可以为需要多用户共享的文件建立一个“data”分区。也可以使用 {{ic|/home}} 分区用于这一目的。
  
*{{App|fdisk|Terminal partitioning tools included in Linux.|https://www.kernel.org/|{{Pkg|util-linux}}}}
+
== 分区工具 ==
*{{App|cfdisk|A terminal partitioning tool written with ncurse libraries.|https://www.kernel.org/|{{Pkg|util-linux}}}}
+
{{Note| The first partition created by cfdisk starts at sector 63, instead of the usual 2048. This will cause problems with [[Grub#msdos-style_error_message|grub2]]. grub-legacy and syslinux should work fine.}}
+
*{{App|GNU Parted|Terminal partitioning tool.|http://www.gnu.org/software/parted/parted.html|{{pkg|parted}}}}
+
*{{App|Partitionmanager|Graphical tool written in QT.|http://sourceforge.net/projects/partitionman/|{{AUR|partitionmanager}}}}
+
*{{App|QtParted|Similar to Partitionmanager, available in [[AUR]].|http://qtparted.sourceforge.net/|{{AUR|qtparted}}}}
+
*{{App|[[GParted]]|Graphical tool written in GTK.|http://gparted.sourceforge.net/|{{Pkg|gparted}}}}
+
  
==Partition Alignment ==
+
*{{App|[[fdisk]]|Linux 自带的命令行分区工具。|https://www.kernel.org/|{{Pkg|util-linux}}}}
==== High-level Overview ====
+
*{{App|[[cfdisk]]|使用 ncurses 库编写的具有伪图形界面的命令行分区工具。|https://www.kernel.org/|{{Pkg|util-linux}}}}
'''Proper partition alignment is essential for optimal performance and longevity.''' The key to alignment is partitioning to (at least) the EBS (erase block size) of the SSD.
+
*{{App|[[sfdisk]]|支持脚本的 fdisk.||{{Pkg|util-linux}}}}
 +
*{{App|[[gdisk]]|[[GPT]] 版的 fdisk。|http://www.rodsbooks.com/gdisk/|{{Pkg|gptfdisk}}}}
 +
*{{App|[[cgdisk]]|GPT 版的 cfdisk。|http://www.rodsbooks.com/gdisk/|{{Pkg|gptfdisk}}}}
 +
*{{App|[[sgdisk]]|Scriptable version of gdisk.|http://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html|{{Pkg|gptfdisk}}}}
 +
*{{App|GNU Parted|命令行分区工具。|http://www.gnu.org/software/parted/parted.html|{{pkg|parted}}}}
 +
*{{App|[[GParted]]|GTK 图形界面的分区工具。|http://gparted.sourceforge.net/|{{Pkg|gparted}}}}
 +
*{{App|Partitionmanager|QT 图形界面的分区工具。|http://sourceforge.net/projects/partitionman/|{{Pkg|partitionmanager}}}}
  
{{Note|The EBS is largely vendor specific; a Google search on the model of interest would be a good idea! The Intel X25-M for example is thought to have an EBS of 512 KiB, but Intel has yet to publish anything officially to this end.}}
+
下面表格可以帮助选择
{{Note|If one does not know the EBS of one's SSD, use a size of 512 KiB. Those numbers are greater or equal than almost all of the current EBS. Aligning partitions for such an EBS will result in partitions also aligned for all lesser sizes. This is how Windows 7 and Ubuntu "optimize" partitions to work with SSD.}}
+
  
If the partitions are not aligned to begin at multiples of the EBS (512 KiB for example), aligning the file system is a pointless exercise because everything is skewed by the start offset of the partition. Traditionally, hard drives were addressed by indicating the ''cylinder'', the ''head'', and the ''sector'' at which data was to be read or written. These represented the radial position, the drive head (= platter and side) and the axial position of the data respectively. With LBA (logical block addressing), this is no longer the case. Instead, the entire hard drive is addressed as one continuous stream of data.
+
{| class="wikitable"
 +
! 用户交互
 +
! MBR
 +
! GPT
 +
|-
 +
| 对话框
 +
| fdisk <br> parted
 +
| fdisk <br> gdisk <br> parted
 +
|-
 +
| 模拟图形界面
 +
| cfdisk
 +
| cfdisk <br> cgdisk
 +
|-
 +
| 非交互
 +
| sfdisk <br> parted
 +
| sfdisk <br> sgdisk <br> parted
 +
|-
 +
| 图形界面
 +
| gparted <br> partitionmanager
 +
| gparted <br> partitionmanager
 +
|}
  
=== Using GPT - Modern Method ===
+
== 分区对齐 ==
[[GPT]] is an alternative, contemporary partitioning style. It is intended to replace the old Master Boot Record ([[MBR]]) system. GPT has several advantages over MBR, which has quirks dating back to MS-DOS times. With recent developments to the formatting tools fdisk (MBR) and gdisk (GPT), it is equally easy to use GPT or MBR and get maximum performance.
+
  
==== Choosing between GPT and MBR ====
+
恰当的分区对齐有助于提升性能和使用寿命。这是由硬件层面和文件系统层面的每次[[wikipedia:Block (data storage)|块]] I/O 操作特性决定的。对齐的关健是分区大小(至少)是''块大小''的倍数,''块大小''取决于选用的硬件设备。如果分区没有以''块大小''的整数倍对齐,对齐文件系统就失去意义了,因为从分区的起始偏移开始就是有偏差的。
The choice basically boils down to this:
+
* If using GRUB Legacy as the bootloader, one must use MBR. See [[#Using MBR - Legacy Method]].
+
* To dual-boot with Windows, one must use MBR. See [[#Using MBR - Legacy Method]].
+
** A special exception to this rule: dual-booting Windows Vista/7 64 bit, and using [[UEFI]] instead of BIOS, one must use GPT.
+
* If none of the above apply, choose freely between GPT and MBR. Since GPT is more modern, it is recommended in this case.
+
  
==== Gdisk Usage Summary====
+
=== 机械硬盘 ===
  
The GPT-able tool equivalent to {{ic|fdisk}}, {{ic|gdisk}}, can perform partition alignment automatically on a 2048 sector (or 1024KiB) block size base which should be compatible with the vast majority of SSDs if not all. GNU parted also supports GPT, but is [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=601813 less user-friendly] for aligning partitions. A summary of the typical usage of {{ic|gdisk}}:
+
传统上,机械硬盘是按照''柱面''、''磁头''和''扇区''来寻址需要读写的数据位置(也被称作 [[wikipedia:Cylinder-head-sector|CHS addressing]])。这代表了相关数据的径向的位置、驱动器磁头(包括盘片和盘面)和轴向的位置。对于 [[wikipedia:Logical block addressing|LBA (逻辑块寻址)]],这就不再是这样了。而是整个磁盘被按照连续的数据流寻址,以[[wikipedia:Disk sector|扇区]]作为最小寻址单位。
  
* Install {{ic|gdisk}} through the {{pkg|gptfdisk}} package from the '''extra''' repository.
+
标准的''扇区大小''是512B,但是现代的高容量机械硬盘使用更大的值,通常是 4KiB。使用高于512B的值被称作[[Advanced Format|高级格式化]]
* Start {{ic|gdisk}} against your SSD.
+
* If the SSD is brand new or if wanting to start over, create a new empty GUID partition table (aka GPT) with the {{keypress|o}} command.
+
* Create a new partition with the {{keypress|n}} command (primary type/1st partition).
+
* Assuming the partition is new, gdisk will pick the highest possible alignment. Otherwise, it will pick the largest power of two that divides all partition offsets.
+
* If choosing to start on a sector before the 2048th gdisk will automatically shift the partition start to the 2048th disk sector. This is to ensure a 2048-sectors alignment (as a sector is 512B, this is a 1024KiB alignment which should fit any SSD NAND erase block).
+
* Use the {{ic|<nowiki>+x{M,G}</nowiki>}} format to extend the partition {{ic|x}} megabytes or gigabytes, if choosing a size that is not a multiple of the alignment size (1024kiB), gdisk will shrink the partition to the nearest inferior multiple.
+
* Select the partition's type id, the default, {{ic|Linux/Windows data}} (code {{ic|0700}}), should be fine for most use. Press {{Keypress|L}} to show the codes list.
+
* Assign other partitions in a like fashion.
+
* Write the table to disk and exit via the {{keypress|w}} command.
+
* Create the filesystems as usual.
+
  
{{Warning|If planning to use the GPT partitioned SSD as a boot-disk on a BIOS based system (most systems except Apple computers and some very rare motherboard models with Intel chipset) one may have to create, preferably at the disk's beginning, a 2 MiB partition with no filesystem and with the partition type as {{ic|BIOS boot}} or {{ic|bios_grub}} partition (gdisk type code {{ic|EF02}}) for booting from the disk using [[GRUB]]. For [[Syslinux]], one does not need to create a separate 2 MiB bios_grub partition, but one needs to have separate {{ic|/boot}} partition and enable {{ic|Legacy BIOS Bootable partition}} attribute for that partition (using gdisk). See [[GPT]] for more information.}}
+
=== 固态硬盘 ===
  
{{Warning|GRUB legacy does not support GUID partitioning scheme, users must use [[burg]], [[GRUB]] or [[Syslinux]].}}
+
固态硬盘基于[[wikipedia:Flash memory|闪存芯片]],与机械硬盘有显著的不同。只读访问能够以随机方式进行,而擦除(覆写或随机写入)只能以[[wikipedia:Flash_memory#Block_erasure|整块]]进行。此外,''擦除块大小''(Erase Block Size,EBS)比''块大小''明显大很多,例如 128KiB vs 4KiB,所以需要以 EBS 的整数倍进行对齐。有些 [[NVMe]] 需要 4KiB 对齐,要确定 SSD 大小,请查看 [[Advanced Format#How to determine if HDD employ a 4k sector]].
  
{{Warning|If planning to dual boot with Windows (XP, Vista or 7) do NOT use GPT since they do NOT support booting from a GPT disk in BIOS systems! Users need to use the legacy MBR method described below for dual-boot in BIOS systems! This limitation does not apply if booting in UEFI mode and using Windows Vista (64bits) or 7 (64bits). For 32-bit Windows Vista and 7, and 32 and 64-bit Windows XP, users need to use MBR partitioning and boot in BIOS mode only.}}
+
=== 分区工具 ===
  
=== Using MBR - Legacy Method ===
+
以前,在分区的时候需要手工计算和介入以确保正确对齐。现在有许多常用的分区工具已经可以自动处理分区对齐问题:
Using MBR, the utility for editing the partition table is called {{ic|fdisk}}. Recent versions of fdisk have abandoned the deprecated system of using cylinders as the default display unit, as well as MS-DOS compatibility by default. The latest fdisk automatically aligns all partitions to 2048 sectors, or 1024 KiB, which should work for all EBS sizes that are known to be used by SSD manufacturers. This means that the default settings will give you proper alignment.
+
  
Note that in the olden days, fdisk used cylinders as the default display unit, and retained an MS-DOS compatibility quirk that messed with SSD alignment. Therefore one will find many guides around the internet from around 2008-2009 making a big deal out of getting everything correct. With the latest fdisk, things are much simpler, as reflected in this guide.
+
* fdisk
 +
* gdisk
 +
* gparted
 +
* parted
  
==== Fdisk Usage Summary ====
+
要验证一个分区是否对齐,使用[[parted]] 工具进行检查:
*Start {{ic|fdisk}}.
+
*If the SSD is brand new, create a new empty DOS partition table with the {{keypress|o}} command.
+
*Create a new partition with the {{keypress|n}} command (primary type/1st partition).
+
*Use the {{ic|+xG}} format to extend the partition {{ic|x}} gigabytes.
+
*Change the partition's system id from the default type of Linux ({{ic|type 83}}) to the desired type via the {{keypress|t}} command. This is an optional step should the user wish to create another type of partition for example, swap, NTFS, LVM, etc. Note that a complete listing of all valid partition types is available via the {{keypress|l}} command.
+
*Assign other partitions in a like fashion.
+
*Write the table to disk and exit via the {{keypress|w}} command.
+
  
When finished, users may format their newly created partitions with {{ic|mkfs.x /dev/sdXN}} where {{ic|x}} is the filesystem, {{ic|X}} is the drive letter, and {{ic|N}} is the partition number.
+
# parted /dev/sda
The following example will format the first partition on the first disk to ext4 using the defaults specified in {{ic|/etc/mke2fs.conf}}:
+
(parted) align-check optimal 1
# mkfs.ext4 /dev/sda1
+
1 aligned
 +
 +
{{Warning|1=用 {{ic|/usr/bin/blockdev --getalignoff}} 检查的话可能有 [https://bbs.archlinux.org/viewtopic.php?id=174141 误报]。}}
  
{{Warning|Using the {{ic|mkfs}} command can be dangerous as a simple mistake can result in formatting the WRONG partition and in data loss! TRIPLE check the target of this command before hitting the Enter key!}}
+
== 参考资料 ==
  
==See also==
+
*[[Ext4#Creating ext4 partitions from scratch|Creating ext4 partitions from scratch]]{{Broken section link}}
*[[Ext4#Creating_ext4_partitions_from_scratch|Creating ext4 partitions from scratch]]
+
 
*[[Wikipedia:Disk partitioning]]
 
*[[Wikipedia:Disk partitioning]]

Latest revision as of 10:03, 7 August 2016

翻译状态: 本文是英文页面 Partitioning翻译,最后翻译时间:2016-07-31,点击这里可以查看翻译后英文页面的改动。

分区 硬盘的可用空间可以划分为多个逻辑区块,区块之间的访问是相互独立的。

可以为一个硬盘划分一个或者多个分区。一些场景需要使用多个分区:例如双重或多重启动,或使用 swap 分区。此外,分区也可以从逻辑上隔离数据,例如为音频和视频数据创建单独的分区。下面将会讨论通用的分区方案。

每个分区在使用前需要格式化为 文件系统

分区表

分区信息被存放在分区表中。目前有两种主流的模式:传统的 Master Boot Record,和新的 GUID Partition Table。后者功能更强大,解决了许多MBR的限制。

Note: 可以用 parted /dev/sda printfdisk -l /dev/sda 查看当前分区信息,/dev/sda 是设备名。

Master Boot Record

MBR原本只支持最多4个分区。后来加入了扩展分区和逻辑分区以绕过这个限制。

目前有三中分区类型:

  • 主分区(Primary)
  • 扩展分区(Extended)
    • 逻辑分区(Logical)

主分区每个磁盘或者RAID卷上只能有4个,可设置为可启动状态。如果分区方案要求使用4个以上的分区,就需要使用一个包含逻辑分区扩展分区。扩展分区可以被看作是容纳逻辑分区的容器。硬盘上最多只能有1个扩展分区。如果磁盘上有1个扩展分区,它也被看作是1个主分区。因此只能另外再建立3个主分区(例如3个主分区加1个扩展分区)。扩展分区内所包含的逻辑分区数量没有限制。如果在双重启动中有Windows,Windows需要占据一个主分区。

通常习惯是创建主分区sda1sda3,然后建立一个扩展分区sda4sda4中包含sda5sda6等逻辑分区。

请参考 Wikipedia 以获取更多关于本主题的信息: 主引导记录

GUID 分区表

GPT方案中只有一种分区类型,主分区。磁盘和RAID卷中包含的分区数量没有限制。

请参考 Wikipedia 以获取更多关于本主题的信息: GUID磁碟分割表

Btrfs 分区

Btrfs可以独占整个存储设备并替代 MBRGPT 分区方案。请参考Btrfs Partitioning[broken link: invalid section]以获取更多信息。

请参考 Wikipedia 以获取更多关于本主题的信息: Btrfs

选择GPT 还是 MBR

GUID Partition Table (GPT)是一种更灵活的分区方式。它正在逐步取代Master Boot Record (MBR)系统。GPT相对于诞生于MS-DOS时代的MBR而言,有许多优点。新版的fdisk(MBR)和gdisk(GPT)使得使用GPT或者MBR在可靠性和性能最大化上都非常容易。

在做出选择前,需要考虑如下内容:

  • 如果使用GRUB legacy作为bootloader,必须使用MBR。
  • 如果使用传统的BIOS,并且双启动中包含 Windows (无论是32位版还是64位版),必须使用MBR。
  • 如果使用 UEFI 而不是BIOS,并且双启动中包含 Windows 64位版,必须使用GPT。
  • 非常老的机器需要使用 MBR,因为 BIOS 可能不支持 GPT.
  • 如果不属于上述任何一种情况,可以随意选择使用 GPT 还是 MBR。由于 GPT 更先进,建议选择 GPT。
  • 建议在使用 UEFI 的情况下选择 GPT,因为有些 UEFI firmware 不支持从 MBR 启动。
注意: 为了使 GRUB 从一台有 GPT 分区的基于 BIOS 的系统上启动,需要创建一个 BIOS 启动分区, 这个分区和 /boot 没关系,仅仅是 GRUB 使用,不要建立文件系统和挂载。

分区方案

虽然有一些关于分区方案的通用建议,但没有严格的准则。有许多影响分区方案的因素,例如对灵活性的期望,访问速度,安全性以及可用磁盘空间的硬性限制。实际上就是个人取舍的问题。如果你想双启动 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 分区包含内核、ramdisk 镜像以及 bootloader 配置文件和 bootloader stage。它也可以存放内核在执行用户态程序之前所使用的其他数据。/boot 在日常系统运行中并不需要,只在启动和内核升级(包括重建initial ramdisk)的时候用到。

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

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

/home

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

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

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

/var

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

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

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

/tmp

默认情况下这个目录已经是一个独立分区,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

Warning: /usr/bin/blockdev --getalignoff 检查的话可能有 误报

参考资料