Difference between revisions of "Partitioning"

From ArchWiki
Jump to: navigation, search
m (Replaced a comma with a semicolon)
m (Partitioning tools: add link)
 
(168 intermediate revisions by 52 users not shown)
Line 1: Line 1:
 
[[Category:File systems]]
 
[[Category:File systems]]
 +
[[ar:Partitioning]]
 +
[[es:Partitioning]]
 +
[[hu:Partitioning]]
 
[[it:Partitioning]]
 
[[it:Partitioning]]
 +
[[ja:パーティショニング]]
 +
[[pl:Partitioning]]
 
[[ru:Partitioning]]
 
[[ru:Partitioning]]
[[zh-cn:Partitioning]]
+
[[zh-CN:Partitioning]]
{{Article summary start}}
+
{{Related articles start}}
{{Article summary text|An overview of disk partitioning tools, best practices, and additional considerations.}}
+
{{Related|fstab}}
{{Article summary heading|Related}}
+
{{Related|LVM}}
{{Article summary wiki|fstab}}
+
{{Related|Swap}}
{{Article summary wiki|LVM}}
+
{{Related|File systems}}
{{Article summary wiki|Swap}}
+
{{Related|Arch filesystem hierarchy}}
{{Article summary wiki|Format a device}}
+
{{Related articles end}}
{{Article summary wiki|File Systems}}
+
''Partitioning'' a hard drive allows one to logically divide the available space into sections that can be accessed independently of one another.
{{Article summary end}}
+
  
''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 creating 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.  
  
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.  
+
Each partition should be formatted to a [[File systems|file system type]] before being used.
  
Each partition should be formatted to a [[File Systems|file system type]] before being used.
+
== Partition table ==
  
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.''
+
Partition information is stored in the partition table; today, there are 2 main formats in use: the classic [[Master Boot Record]], and the modern [[GUID Partition Table]]. The latter is an improved version that does away with several limitations of MBR style.
  
==Partition type==
+
=== Master Boot Record ===
  
Partitioning a hard disk drive defines specific memory storage areas. These are called partitions. Each partition behaves as a separate disk and is formatted with a specific filesystem type (see below).
+
MBR originally only supported up to 4 partitions. Later on, extended and logical partitions were introduced to get around this limitation.
  
There are 3 types of disk partitions:
+
There are 3 types of partitions:
  
 
* Primary
 
* Primary
Line 33: Line 37:
 
'''Primary''' partitions can be bootable and are limited to four partitions per disk or RAID volume. If a partitioning scheme requires more than four partitions, an '''extended''' partition containing '''logical''' partitions is used. Extended partitions can be thought of as containers for logical partitions. A hard disk can contain no more than one extended partition. The extended partition is also counted as a primary partition so if the disk has an extended partition, only three additional primary partitions are possible (i.e. three primary partitions and one extended partition). The number of logical partitions residing in an extended partition is unlimited. A system that dual boots with Windows will require that Windows reside in a primary partition.
 
'''Primary''' partitions can be bootable and are limited to four partitions per disk or RAID volume. If a partitioning scheme requires more than four partitions, an '''extended''' partition containing '''logical''' partitions is used. Extended partitions can be thought of as containers for logical partitions. A hard disk can contain no more than one extended partition. The extended partition is also counted as a primary partition so if the disk has an extended partition, only three additional primary partitions are possible (i.e. three primary partitions and one extended partition). The number of logical partitions residing in an extended partition is unlimited. A system that dual boots with Windows will require that Windows reside in a primary partition.
  
The customary numbering scheme is to create primary partitions {{ic|sda1}} through {{ic|sda3}} followed by an extended partition {{ic|sda4}}. The logical partitions on {{ic|sda4}} are numbered {{ic|sda5}}, {{ic|sda6}}, etc.
+
The customary numbering scheme is to create primary partitions ''sda1'' through ''sda3'' followed by an extended partition ''sda4''. The logical partitions on ''sda4'' are numbered ''sda5'', ''sda6'', etc.
  
===Swap partition===
+
See also [[Wikipedia:Master boot record]].
  
A swap partition is a place on the drive for virtual RAM. This allows the kernel to access disk space for data that does not fit into physical RAM.
+
=== GUID Partition Table ===
  
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.  
+
There is only one type of partition, '''primary'''. The amount of partitions per disk or RAID volume is unlimited.
  
{{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]}}
+
See also [[Wikipedia:GUID Partition Table]].
 +
 
 +
=== Btrfs Partitioning ===
 +
 
 +
Btrfs can occupy an entire data storage device and replace the [[MBR]] or [[GPT]] partitioning schemes. See the [[Btrfs#Partitioning]] instructions for details.
 +
 
 +
See also [[Wikipedia:Btrfs]].
 +
 
 +
=== Choosing between GPT and MBR ===
 +
 
 +
[[GUID Partition Table]] (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 the recent developments to the formatting tools ''fdisk'' (MBR) and ''gdisk'' (GPT), it is equally easy to get good dependability and performance for GPT or MBR.
 +
 
 +
One should consider these to choose between GPT and MBR:
 +
 
 +
* If using GRUB legacy as the bootloader, one must use MBR.
 +
* To dual-boot with Windows (both 32-bit and 64-bit) using Legacy BIOS, one must use MBR.
 +
* To dual-boot Windows 64-bit using [[UEFI]] instead of BIOS, one must use GPT.
 +
* If you are installing on the older hardware, especially laptop, consider choosing MBR because its BIOS might not support GPT.
 +
* If none of the above apply, choose freely between GPT and MBR; since GPT is more modern, it is recommended in this case.
 +
* It is recommended to use always GPT for [[UEFI]] boot as some UEFI firmwares do not allow UEFI-MBR boot.
 +
 
 +
{{Note|For GRUB to boot from a GPT partitioned disk on a BIOS based system, one has to create a [[GRUB#GUID_Partition_Table_.28GPT.29_specific_instructions|BIOS boot partition]]. Please note this partition is unrelated to the {{ic|/boot}} mountpoint, and will be used by GRUB directly. Do not create a filesystem on it, and do not mount it.}}
  
 
== Partition scheme ==
 
== Partition scheme ==
  
There are no strict rules for partitioning a hard drive, although one may follow the general guidance given below. A disk partitioning scheme is determined by various issues such as desired flexibility, speed, security, as well as the limitations imposed by available disk space. It is essentially personal preference. If you would like to dual boot Arch Linux and a Windows operating system please see [[Windows and Arch Dual Boot]].
+
There are no strict rules for partitioning a hard drive, although one may follow the general guidance given below. A disk partitioning scheme is determined by various issues such as desired flexibility, speed, security, as well as the limitations imposed by available disk space. It is essentially personal preference. If you would like to dual boot Arch Linux and a Windows operating system please see [[Dual boot with Windows]].
  
 
=== Single root partition ===
 
=== Single root partition ===
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
+
This scheme is the simplest and should be enough for most use cases. A [[swapfile]] can be created and easily resized as needed. It usually makes sense to start by considering a single {{ic|/}} partition and then separate out others based on specific use cases like RAID, encryption, a shared media partition, etc.  Note that installing GRUB on a BIOS system partitioned with GPT requires an additional BIOS boot partition.  
* Just a single root partition without swap.
+
  
 
=== Discrete partitions ===
 
=== Discrete partitions ===
There are several advantages for using discrete partitions as opposed to placing everything in one partition:
 
  
* Security: Each filesystem may be configured in {{ic|/etc/fstab}} as {{ic|nosuid}}, {{ic|nodev}}, {{ic|noexec}}, {{ic|readonly}}, etc.
+
Separating out a path as a partition allows for the choice of a different filesystem and mount options. In some cases like a media partition, they can also be shared between operating systems.
* Stability: A user, or malfunctioning program can completely fill a filesystem with garbage if they have write permissions for it. Critical programs residing on a different filesystem remain unaffected.
+
* Speed: A filesystem that gets re-written too frequently may become fragmented. Separate filesystems remain unaffected and each can be defragmented separately. Fragmentation can be avoided by ensuring that each filesystem is never in danger of filling up completely.
+
* Integrity: If one filesystem becomes corrupted, separate filesystems remain unharmed.
+
* Versatility: Sharing data across several systems becomes more expedient when independent filesystems are used. Separate filesystem types may also be chosen based upon the nature of data and usage.
+
  
 
=== Mount points ===
 
=== Mount points ===
 +
 
The following mount points are possible choices for separate partitions, you can make your decision based on actual needs.
 
The following mount points are possible choices for separate partitions, you can make your decision based on actual needs.
  
====/ (root)====
+
==== Root partition ====
The root directory is the top of the hierarchy, the point where the primary filesystem is mounted and from which all other filesystems stem. All files and directories appear under the root directory'' {{ic|/}}'', even if they are stored on different physical devices. The contents of the root filesystem must be adequate to boot, restore, recover, and/or repair the system. Therefore, certain directories under'' {{ic|/}} ''are not candidates for separate partitions.
+
  
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.
+
{{Note|Upon installation, the {{ic|/}} (root) partition must be mounted '''first''': this is because any directories such as {{ic|/boot}} or {{ic|/home}} that have separate partitions will have to be created in the root file system. The {{ic|/mnt}} directory of the live system will be used to mount the root partition, and consequently all the other partitions will stem from there. Once the {{ic|/}} partition has been mounted, any remaining partitions may be mounted in any order. The general procedure is to first create the mount point, and then mount the partition to it.}}
  
{{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]].}}
+
The root directory is the top of the hierarchy, the point where the primary filesystem is mounted and from which all other filesystems stem. All files and directories appear under the root directory {{ic|/}}, even if they are stored on different physical devices. The contents of the root filesystem must be adequate to boot, restore, recover, and/or repair the system. Therefore, certain directories under {{ic|/}} are not candidates for separate partitions.
  
====/boot====
+
The {{ic|/}} partition or root partition is necessary and it is the most important. The other partitions can be replaced by it.
The {{ic|/boot}} directory contains the kernel and ramdisk images as well as the bootloader configuration file and bootloader stages. It also stores data that is used before the kernel begins executing user-space programs. {{ic|/boot}} is not required for normal system operation, but only during boot and kernel upgrades (when regenerating the initial ramdisk).
+
  
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.
+
{{Warning|Directories essential for booting (except for {{ic|/boot}}) '''must''' be on the same partition as {{ic|/}} or mounted in early userspace by the [[initramfs]]. These essential directories are: {{ic|/etc}} and {{ic|/usr}} [http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken].}}
  
{{Warning|Unlike {{ic|/boot}}, the other directories essential for booting '''must''' be on the same partition as ''' {{ic|/}}'''. These essential directories are: {{ic|/bin}}, {{ic|/etc}}, {{ic|/lib}}, {{ic|/sbin}} and {{ic|/usr}} [http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken].}}
+
==== /boot ====
  
====/home====
+
The {{ic|/boot}} directory contains the kernel and ramdisk images as well as the bootloader configuration file and bootloader stages. It also stores data that is used before the kernel begins executing user-space programs. {{ic|/boot}} is not required for normal system operation, but only during boot and kernel upgrades (when regenerating the initial ramdisk).
The {{ic|/home}} directory stores personal files in different folders. It holds miscellaneous personal data as well as user-specific configuration files for applications. Keeping it in a separate partition can be very useful for backup: it often requires the most disk space (for desktop users) and may need to be expanded at a later date.
+
  
A {{ic|/home}} partition can also be shared with other Linux systems installed in multi boot, although this is not recommended becuase of possible incompatibilities between user configuration files.
+
A separate {{ic|/boot}} partition is needed if installing a software RAID0 (stripe) system.
  
====Swap====
+
{{Note|It is recommended to mount [[ESP]] to {{ic|/boot}} if booting using UEFI boot loaders that do not contain drivers for other filesystems. Such loaders are for example [[EFISTUB]] and [[systemd-boot]].}}
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.
+
==== /home ====
  
{{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]}}
+
The {{ic|/home}} directory contains user-specific configuration files, caches, application data and media files.
  
====/usr====
+
Separating out {{ic|/home}} allows {{ic|/}} to be re-partitioned separately, but note that you can still reinstall Arch with {{ic|/home}} untouched even if it is not separate - the other top-level directories just need to be removed, and then pacstrap can be run.
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]].
+
You should not share home directories between users on different distributions, because they use incompatible software versions and patches. Instead, consider sharing a media partition or at least using different home directories on the same {{ic|/home}} partition.
  
====/var====
+
==== /var ====
The {{ic|/var}} directory stores Contains variable data such as spool directories and files, administrative and logging data, [[pacman]]'s cache, the [[Arch Build System|ABS]] tree, etc. It is used for example for caching and logging, and hence frequently read or written. Keeping it in a separate partition avoids running out of disk space due to flunky logs, etc.
+
  
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}}''.
+
The {{ic|/var}} directory stores variable data such as spool directories and files, administrative and logging data, [[pacman]]'s cache, the [[ABS]] tree, etc. It is used, for example, for caching and logging, and hence frequently read or written. Keeping it in a separate partition avoids running out of disk space due to flunky logs, etc.
  
{{Note|{{ic|/var}} contains many small files. The choice of filesystem type (see below) should consider this fact if a separate partition is used.}}
+
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}}.
 +
 
 +
{{Note|{{ic|/var}} contains many small files. The choice of file system type should consider this fact if a separate partition is used.}}
  
 
==== /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.
 
  
====How big should my partitions be?====
+
This is already a separate partition by default, by virtue of being mounted as ''tmpfs'' by systemd.
  
The size of the partitions depends on personal preference, but the following information may be helpful:
+
==== Swap ====
  
; {{ic|/boot}} — 100 MB : A {{ic|/boot}} partition requires only about 100 MB.
+
A [[swap]] partition provides memory that can be used as virtual RAM. A [[swap file]] should be considered too, as they don't have any performance overhead compared to a partition but are much easier to resize as needed. A swap partition can ''potentially'' be shared between operating systems, but not if hibernation is used.
; {{ic|/}} — 15-20 GB : The root filesystem ({{ic|/}}) '''must''' contain the {{ic|/usr}} directory, which can grow significantly depending upon how much software is installed. 15-20 GB should be sufficient for most users with modern hard disks.
+
; {{ic|/var}} — 8-12 GB : The {{ic|/var}} filesystem will contain, among other data, the [[Arch Build System|ABS]] tree and the [[pacman]] cache. Keeping cached packages is useful and versatile as it provides the ability to downgrade. As a result, {{ic|/var}} tends to grow in size. The pacman cache in particular will grow as the system is expanded and updated. It can, however, be safely cleared if space becomes an issue. If you are using an SSD, you may wish to locate your {{ic|/var}} on an HDD and keep the {{ic|/}} and {{ic|/home}} partitions on your SSD to avoid needless read/writes to the SSD. 8-12 GB on a desktop system should be sufficient for {{ic|/var}}, depending on how much software will be installed. Servers tend to have relatively larger {{ic|/var}} filesystems.
+
; {{ic|/home}} — [very large] : The {{ic|/home}} filesystem is typically where user data, downloads, and multimedia reside. On a desktop system, {{ic|/home}} is typically the largest filesystem on the drive by a large margin. If it becomes necessary to reinstall Arch, all the data on your {{ic|/home}} partition will be retained if it is setup on its own partition.
+
  
{{Note|If available, an extra 25% of space added to each filesystem will provide a cushion for future expansion and help protect against fragmentation.}}
+
==== How big should my partitions be? ====
  
==Partitioning tools==
+
{{Note|
 +
*The below are simply recommendations; there is no hard rule dictating partition size.
 +
*If available, an extra 25% of space added to each filesystem will provide a cushion for future expansion and help protect against fragmentation.}}
  
To control the actual partition scheme type:
+
The size of the partitions depends on personal preference, but the following information may be helpful:
# fdisk -l
+
  
*{{App|fdisk|Terminal partitioning tools included in Linux.|https://www.kernel.org/|{{Pkg|util-linux}}}}
+
; /boot - 200 MB : It requires only about 100 MB, but if multiple kernels/boot images are likely to be in use, 200 or 300 MB is a better choice.
*{{App|cfdisk|A terminal partitioning tool written with ncurse libraries.|https://www.kernel.org/|{{Pkg|util-linux}}}}
+
; / - 15-20 GB : It traditionally contains the {{ic|/usr}} directory, which can grow significantly depending upon how much software is installed. 15-20 GB should be sufficient for most users with modern hard disks. If you plan to store a swap file here, you might need a larger partition size.
{{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.}}
+
; /var - 8-12 GB : It will contain, among other data, the [[ABS]] tree and the [[pacman]] cache. Retaining these packages is helpful in case a package upgrade causes instability, requiring a [[downgrade]] to an older, archived package. The pacman cache in particular will grow as the system is expanded and updated, but it can be safely cleared if space becomes an issue. 8-12 GB on a desktop system should be sufficient for {{ic|/var}}, depending on how much software will be installed.
*{{App|GNU Parted|Terminal partitioning tool.|http://www.gnu.org/software/parted/parted.html|{{pkg|parted}}}}
+
; /home - [varies] : It is typically where user data, downloads, and multimedia reside. On a desktop system, {{ic|/home}} is typically the largest filesystem on the drive by a large margin.
*{{App|Partitionmanager|Graphical tool written in QT.|http://sourceforge.net/projects/partitionman/|{{AUR|partitionmanager}}}}
+
; swap - [varies] : 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 is outdated. For example, on average desktop 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.
*{{App|QtParted|Similar to Partitionmanager, available in [[AUR]].|http://qtparted.sourceforge.net/|{{AUR|qtparted}}}}
+
; /data - [varies] : One can consider mounting a "data" partition to cover various files to be shared by all users. Using the {{ic|/home}} partition for this purpose is fine as well.
 +
 
 +
{{Note|
 +
* See [[Suspend and hibernate]] to hibernate into a swap partition or file.
 +
* A swap partition is highly recommended when using [[virtual machine]] guests.
 +
}}
 +
 
 +
== Partitioning tools ==
 +
 
 +
*{{App|[[fdisk]]|Terminal partitioning tools included in Linux.|https://www.kernel.org/|{{Pkg|util-linux}}}}
 +
*{{App|[[cfdisk]]|Terminal partitioning tool written with ncurses libraries.|https://www.kernel.org/|{{Pkg|util-linux}}}}
 +
*{{App|[[sfdisk]]|Scriptable version of fdisk.||{{Pkg|util-linux}}}}
 +
*{{App|[[gdisk]]|[[GPT]] version of fdisk.|http://www.rodsbooks.com/gdisk/|{{Pkg|gptfdisk}}}}
 +
*{{App|[[cgdisk]]|GPT version of 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]]|Terminal partitioning tool.|https://www.gnu.org/software/parted/parted.html|{{pkg|parted}}}}
 
*{{App|[[GParted]]|Graphical tool written in GTK.|http://gparted.sourceforge.net/|{{Pkg|gparted}}}}
 
*{{App|[[GParted]]|Graphical tool written in GTK.|http://gparted.sourceforge.net/|{{Pkg|gparted}}}}
 +
*{{App|Partitionmanager|Graphical tool written in Qt.|http://sourceforge.net/projects/partitionman/|{{Pkg|partitionmanager}}}}
 +
*{{App|QtParted|Similar to Partitionmanager, available in [[AUR]].|http://qtparted.sourceforge.net/|{{AUR|qtparted}}{{Broken package link|{{aur-mirror|qtparted}}}}}}
 +
 +
 +
This table will help you to choose utility for your needs:
 +
 +
{| class="wikitable"
 +
! User interaction
 +
! MBR
 +
! GPT
 +
|-
 +
| Dialog
 +
| fdisk
 +
 +
parted
 +
| fdisk
 +
gdisk
 +
 +
parted
 +
|-
 +
| Pseudo-graphics
 +
| cfdisk
 +
| cfdisk
 +
cgdisk
 +
|-
 +
| Non-interactive
 +
| sfdisk
 +
 +
parted
 +
| sfdisk
 +
sgdisk
  
==Partition Alignment ==
+
parted
==== High-level Overview ====
+
|-
'''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.
+
| Graphical
 +
| gparted
 +
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.}}
+
qtparted(?)
{{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.}}
+
| gparted
 +
partitionmanager
  
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.
+
qtparted(?)
 +
|}
  
=== Using GPT - Modern Method ===
+
== Partition alignment ==
[[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 ====
+
Proper partition alignment is essential for optimal performance and longevity. This is due to the [[wikipedia:Block (data storage)|block]] nature of every I/O operation on the hardware level as well as file system level. The key to alignment is partitioning to (at least) the given ''block size'', which depends on the used hardware. If the partitions are not aligned to begin at multiples of the ''block size'', aligning the file system is a pointless exercise because everything is skewed by the start offset of the partition.
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====
+
=== Hard disk drives ===
  
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}}:
+
Historically, hard drives were addressed by indicating the ''cylinder'', the ''head'', and the ''sector'' at which data was to be read or written (also known as [[wikipedia:Cylinder-head-sector|CHS addressing]]). These represented the radial position (cylinder), the axial position (drive head: platter and side), and the azimuth (sector) of the data respectively. Nowadays, with [[wikipedia:Logical block addressing|logical block addressing]], the entire hard drive is addressed as one continuous stream of data and the term [[wikipedia:Disk sector|sector]] designates the smallest addressable unit.
  
* Install {{ic|gdisk}} through the {{pkg|gptfdisk}} package from the '''extra''' repository.
+
The standard ''sector size'' is 512B, but modern high-capacity hard drives use greater value, commonly 4KiB. Using values greater than 512B is referred to as the [[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.}}
+
=== Solid state drives ===
  
{{Warning|GRUB legacy does not support GUID partitioning scheme, users must use [[burg]], [[GRUB]] or [[Syslinux]].}}
+
Solid state drives are based on [[wikipedia:Flash memory|flash memory]], and thus differ significantly from hard drives. While reading remains possible in a random access fashion, erasure (hence rewriting and random writing) is possible only by [[wikipedia:Flash_memory#Block_erasure|whole blocks]]. Additionally, the ''erase block size'' (EBS) are significantly greater than regular ''block size'', for example 128KiB vs. 4KiB, so it is necessary to align to multiples of EBS. [[NVMe]] drives should be aligned to 4KiB.
  
{{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.}}
+
=== Partitioning tools ===
  
=== Using MBR - Legacy Method ===
+
In the past, proper alignment required manual calculation and intervention when partitioning. Many of the common partition tools now handle partition alignment automatically:
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 ====
+
On an already partitioned disk, you can use [[parted]] to verify the alignment of a partition on a device. For instance, to verify alignment of partition 1 on {{ic|/dev/sda}}:
*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|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!}}
+
{{Warning|1=Using {{ic|/usr/bin/blockdev}} with option {{ic|--getalignoff}} to check if a the partition is aligned has been reported to be [https://bbs.archlinux.org/viewtopic.php?id=174141 unreliable].}}
  
==See also==
+
== See also ==
*[[Ext4#Creating_ext4_partitions_from_scratch|Creating ext4 partitions from scratch]]
+
 
*[[Wikipedia:Disk partitioning]]
 
*[[Wikipedia:Disk partitioning]]
 +
*[http://www.novell.com/coolsolutions/feature/19350.html Manually Partitioning Your Hard Drive with fdisk]
 +
*[http://www.thomas-krenn.com/en/wiki/Partition_Alignment Partition Alignment] (with examples)

Latest revision as of 09:54, 20 May 2016

Partitioning a hard drive allows one to logically divide the available space into sections that can be accessed independently of one another.

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 creating 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.

Each partition should be formatted to a file system type before being used.

Partition table

Partition information is stored in the partition table; today, there are 2 main formats in use: the classic Master Boot Record, and the modern GUID Partition Table. The latter is an improved version that does away with several limitations of MBR style.

Master Boot Record

MBR originally only supported up to 4 partitions. Later on, extended and logical partitions were introduced to get around this limitation.

There are 3 types of partitions:

  • Primary
  • Extended
    • Logical

Primary partitions can be bootable and are limited to four partitions per disk or RAID volume. If a partitioning scheme requires more than four partitions, an extended partition containing logical partitions is used. Extended partitions can be thought of as containers for logical partitions. A hard disk can contain no more than one extended partition. The extended partition is also counted as a primary partition so if the disk has an extended partition, only three additional primary partitions are possible (i.e. three primary partitions and one extended partition). The number of logical partitions residing in an extended partition is unlimited. A system that dual boots with Windows will require that Windows reside in a primary partition.

The customary numbering scheme is to create primary partitions sda1 through sda3 followed by an extended partition sda4. The logical partitions on sda4 are numbered sda5, sda6, etc.

See also Wikipedia:Master boot record.

GUID Partition Table

There is only one type of partition, primary. The amount of partitions per disk or RAID volume is unlimited.

See also Wikipedia:GUID Partition Table.

Btrfs Partitioning

Btrfs can occupy an entire data storage device and replace the MBR or GPT partitioning schemes. See the Btrfs#Partitioning instructions for details.

See also Wikipedia:Btrfs.

Choosing between GPT and MBR

GUID Partition Table (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 the recent developments to the formatting tools fdisk (MBR) and gdisk (GPT), it is equally easy to get good dependability and performance for GPT or MBR.

One should consider these to choose between GPT and MBR:

  • If using GRUB legacy as the bootloader, one must use MBR.
  • To dual-boot with Windows (both 32-bit and 64-bit) using Legacy BIOS, one must use MBR.
  • To dual-boot Windows 64-bit using UEFI instead of BIOS, one must use GPT.
  • If you are installing on the older hardware, especially laptop, consider choosing MBR because its BIOS might not support GPT.
  • If none of the above apply, choose freely between GPT and MBR; since GPT is more modern, it is recommended in this case.
  • It is recommended to use always GPT for UEFI boot as some UEFI firmwares do not allow UEFI-MBR boot.
Note: For GRUB to boot from a GPT partitioned disk on a BIOS based system, one has to create a BIOS boot partition. Please note this partition is unrelated to the /boot mountpoint, and will be used by GRUB directly. Do not create a filesystem on it, and do not mount it.

Partition scheme

There are no strict rules for partitioning a hard drive, although one may follow the general guidance given below. A disk partitioning scheme is determined by various issues such as desired flexibility, speed, security, as well as the limitations imposed by available disk space. It is essentially personal preference. If you would like to dual boot Arch Linux and a Windows operating system please see Dual boot with Windows.

Single root partition

This scheme is the simplest and should be enough for most use cases. A swapfile can be created and easily resized as needed. It usually makes sense to start by considering a single / partition and then separate out others based on specific use cases like RAID, encryption, a shared media partition, etc. Note that installing GRUB on a BIOS system partitioned with GPT requires an additional BIOS boot partition.

Discrete partitions

Separating out a path as a partition allows for the choice of a different filesystem and mount options. In some cases like a media partition, they can also be shared between operating systems.

Mount points

The following mount points are possible choices for separate partitions, you can make your decision based on actual needs.

Root partition

Note: Upon installation, the / (root) partition must be mounted first: this is because any directories such as /boot or /home that have separate partitions will have to be created in the root file system. The /mnt directory of the live system will be used to mount the root partition, and consequently all the other partitions will stem from there. Once the / partition has been mounted, any remaining partitions may be mounted in any order. The general procedure is to first create the mount point, and then mount the partition to it.

The root directory is the top of the hierarchy, the point where the primary filesystem is mounted and from which all other filesystems stem. All files and directories appear under the root directory /, even if they are stored on different physical devices. The contents of the root filesystem must be adequate to boot, restore, recover, and/or repair the system. Therefore, certain directories under / are not candidates for separate partitions.

The / partition or root partition is necessary and it is the most important. The other partitions can be replaced by it.

Warning: Directories essential for booting (except for /boot) must be on the same partition as / or mounted in early userspace by the initramfs. These essential directories are: /etc and /usr [1].

/boot

The /boot directory contains the kernel and ramdisk images as well as the bootloader configuration file and bootloader stages. It also stores data that is used before the kernel begins executing user-space programs. /boot is not required for normal system operation, but only during boot and kernel upgrades (when regenerating the initial ramdisk).

A separate /boot partition is needed if installing a software RAID0 (stripe) system.

Note: It is recommended to mount ESP to /boot if booting using UEFI boot loaders that do not contain drivers for other filesystems. Such loaders are for example EFISTUB and systemd-boot.

/home

The /home directory contains user-specific configuration files, caches, application data and media files.

Separating out /home allows / to be re-partitioned separately, but note that you can still reinstall Arch with /home untouched even if it is not separate - the other top-level directories just need to be removed, and then pacstrap can be run.

You should not share home directories between users on different distributions, because they use incompatible software versions and patches. Instead, consider sharing a media partition or at least using different home directories on the same /home partition.

/var

The /var directory stores variable data such as spool directories and files, administrative and logging data, pacman's cache, the ABS tree, etc. It is used, for example, for caching and logging, and hence frequently read or written. Keeping it in a separate partition avoids running out of disk space due to flunky logs, etc.

It exists to make it possible to mount /usr as read-only. Everything that historically went into /usr that is written to during system operation (as opposed to installation and software maintenance) must reside under /var.

Note: /var contains many small files. The choice of file system type should consider this fact if a separate partition is used.

/tmp

This is already a separate partition by default, by virtue of being mounted as tmpfs by systemd.

Swap

A swap partition provides memory that can be used as virtual RAM. A swap file should be considered too, as they don't have any performance overhead compared to a partition but are much easier to resize as needed. A swap partition can potentially be shared between operating systems, but not if hibernation is used.

How big should my partitions be?

Note:
  • The below are simply recommendations; there is no hard rule dictating partition size.
  • If available, an extra 25% of space added to each filesystem will provide a cushion for future expansion and help protect against fragmentation.

The size of the partitions depends on personal preference, but the following information may be helpful:

/boot - 200 MB 
It requires only about 100 MB, but if multiple kernels/boot images are likely to be in use, 200 or 300 MB is a better choice.
/ - 15-20 GB 
It traditionally contains the /usr directory, which can grow significantly depending upon how much software is installed. 15-20 GB should be sufficient for most users with modern hard disks. If you plan to store a swap file here, you might need a larger partition size.
/var - 8-12 GB 
It will contain, among other data, the ABS tree and the pacman cache. Retaining these packages is helpful in case a package upgrade causes instability, requiring a downgrade to an older, archived package. The pacman cache in particular will grow as the system is expanded and updated, but it can be safely cleared if space becomes an issue. 8-12 GB on a desktop system should be sufficient for /var, depending on how much software will be installed.
/home - [varies] 
It is typically where user data, downloads, and multimedia reside. On a desktop system, /home is typically the largest filesystem on the drive by a large margin.
swap - [varies] 
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 is outdated. For example, on average desktop 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.
/data - [varies] 
One can consider mounting a "data" partition to cover various files to be shared by all users. Using the /home partition for this purpose is fine as well.
Note:

Partitioning tools

  • fdisk — Terminal partitioning tools included in Linux.
https://www.kernel.org/ || util-linux
  • cfdisk — Terminal partitioning tool written with ncurses libraries.
https://www.kernel.org/ || util-linux
  • sfdisk — Scriptable version of fdisk.
|| util-linux
http://www.rodsbooks.com/gdisk/ || gptfdisk
  • cgdisk — GPT version of cfdisk.
http://www.rodsbooks.com/gdisk/ || gptfdisk
  • sgdisk — Scriptable version of gdisk.
http://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html || gptfdisk
https://www.gnu.org/software/parted/parted.html || parted
  • GParted — Graphical tool written in GTK.
http://gparted.sourceforge.net/ || gparted
  • Partitionmanager — Graphical tool written in Qt.
http://sourceforge.net/projects/partitionman/ || partitionmanager
  • QtParted — Similar to Partitionmanager, available in AUR.
http://qtparted.sourceforge.net/ || qtpartedAUR[broken link: archived in aur-mirror]


This table will help you to choose utility for your needs:

User interaction MBR GPT
Dialog fdisk

parted

fdisk

gdisk

parted

Pseudo-graphics cfdisk cfdisk

cgdisk

Non-interactive sfdisk

parted

sfdisk

sgdisk

parted

Graphical gparted

partitionmanager

qtparted(?)

gparted

partitionmanager

qtparted(?)

Partition alignment

Proper partition alignment is essential for optimal performance and longevity. This is due to the block nature of every I/O operation on the hardware level as well as file system level. The key to alignment is partitioning to (at least) the given block size, which depends on the used hardware. If the partitions are not aligned to begin at multiples of the block size, aligning the file system is a pointless exercise because everything is skewed by the start offset of the partition.

Hard disk drives

Historically, hard drives were addressed by indicating the cylinder, the head, and the sector at which data was to be read or written (also known as CHS addressing). These represented the radial position (cylinder), the axial position (drive head: platter and side), and the azimuth (sector) of the data respectively. Nowadays, with logical block addressing, the entire hard drive is addressed as one continuous stream of data and the term sector designates the smallest addressable unit.

The standard sector size is 512B, but modern high-capacity hard drives use greater value, commonly 4KiB. Using values greater than 512B is referred to as the Advanced Format.

Solid state drives

Solid state drives are based on flash memory, and thus differ significantly from hard drives. While reading remains possible in a random access fashion, erasure (hence rewriting and random writing) is possible only by whole blocks. Additionally, the erase block size (EBS) are significantly greater than regular block size, for example 128KiB vs. 4KiB, so it is necessary to align to multiples of EBS. NVMe drives should be aligned to 4KiB.

Partitioning tools

In the past, proper alignment required manual calculation and intervention when partitioning. Many of the common partition tools now handle partition alignment automatically:

  • fdisk
  • gdisk
  • gparted
  • parted

On an already partitioned disk, you can use parted to verify the alignment of a partition on a device. For instance, to verify alignment of partition 1 on /dev/sda:

# parted /dev/sda
(parted) align-check optimal 1
1 aligned
Warning: Using /usr/bin/blockdev with option --getalignoff to check if a the partition is aligned has been reported to be unreliable.

See also