Handbook:AMD64/Blocks/Disks/cs

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:AMD64/Blocks/Disks and the translation is 83% complete.

Outdated translations are marked like this.


Tabulky oddílů

Although it is theoretically possible to use a raw, unpartitioned disk to house a Linux system (when creating a btrfs RAID for example), this is almost never done in practice. Instead, disk block devices are split up into smaller, more manageable block devices. On amd64 systems, these are called partitions. There are currently two standard partitioning technologies in use: MBR and GPT.

MBR

"MBR (Master Boot Record") používá 32bitové identifikátory startovního sektoru a délky oddílů a podporuje tři typy oddílů: primární, rozšířený a logický. Informace o primárního oddílech jsou uloženy v master boot record samotném - velmi malé (obvykle 512 bytů) oblasti na začátku disku. V důsledku tohoto malého prostoru jsou podporovány pouze čtyři primární oddíly (například /dev/sda1/dev/sda4).

Pro podporu více oddílů je nutné označit jeden z primárních oddílů jak rozšířený oddíl. Tento oddíl pak může obsahovat logické oddíly (oddíly v oddílech).

Important
Although still supported by most motherboard manufacturers partition tables are considered legacy. Unless working with hardware that is pre-2010, it best to partition a disk using a GUID Partition Table. Readers who must proceed with MBR should acknowledge the following information:
  • Most post-2010 motherboards consider MBR a legacy (supported, but not ideal) boot mode.
  • Due to using 32-bit identifiers, master boot record partitioning tables cannot handle disks that are greater than 2 TiBs in size.
  • Unless a extended partition is created, MBR supports a maximum of four partitions.
  • The MBR setup does not provide any backup-MBR, so if an application or user overwrites the MBR, all partition information is lost.

The Handbook authors suggest using GPT whenever possible for Gentoo installations.

GPT

The GPT (GUID Partition Table) setup uses 64-bit identifiers for the partitions. The location in which it stores the partition information is much bigger than the 512 bytes of an MBR, which means there is practically no limit on the amount of partitions for a GPT disk. Also the size of a partition is bounded by a much greater limit (almost 8 ZiB - yes, zettabytes).

Pokud je systémovým softwarovým rozhraním mezi operačním systémem a firmwarem UEFI (namísto BIOSu), GPT je téměř nezbytné, jinak se objeví problémy kompatibility s MBR.

GPT also takes advantage of checksumming and redundancy. It carries CRC32 checksums to detect errors in the header and partition tables and has a backup GPT at the end of the disk. This backup table can be used to recover damage of the primary GPT near the beginning of the disk.

GPT nebo MBR

Z popisu uvedeného shora může člověk nabýt dojmu, že GPT by mělo být pokaždé doporučeným postupem, nicméně existuje tu několik háčků.

Using GPT on a BIOS-based computer works, but then one cannot dual-boot with a Microsoft Windows operating system. The reason is that Microsoft Windows will boot in UEFI mode if it detects a GPT partition label.

Some buggy motherboard firmware configured to boot in BIOS/CSM/legacy mode might also have problems with booting from GPT labeled disks. If that is the case, it might be possible to work around the problem by adding the boot/active flag on the protective MBR partition which has to be done through fdisk with the -t dos option to force it to read the partition table using the MBR format.

V takovém případě spusťte fdisk a přepněte označení pomocí klávesy a. Stisknutím 1 vyberete první oddíl, stisknutím w zapíšete změny na disk a opustíte aplikaci fdisk.

user $fdisk -t dos /dev/sda
Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
  
Command (m for help): a
Partition number (1-4): 1
  
Command (m for help): w

Použití UEFI

When installing Gentoo on a system that uses UEFI to boot the operating system (instead of BIOS), then it is important that an EFI System Partition (ESP) is created. The instructions for parted below contain the necessary pointers to correctly handle this operation.

The ESP must be a FAT variant (sometimes shown as vfat on Linux systems). The official UEFI specification denotes FAT12, 16, or 32 filesystems will be recognized by the UEFI firmware, although FAT32 is recommended for the ESP. Proceed in formatting the ESP as FAT32:

root #mkfs.fat -F 32 /dev/sda2
Important
If a FAT variant is not used for the ESP, the system's UEFI firmware is not guaranteed to find the bootloader (or Linux kernel) and most likely be unable to boot the system!

Pokročilá úložiště

Btrfs RAID

Jak je uvedeno shora, btrfs má schopnost vytvářet systém souborů napříč mnoha zařízeními. Systémy souborů btrfs generované tímto způsobem mohou fungovat v následujících módech: raid0, raid1, raid10, raid5 a raid 6. Módy RAID 5 a 6 byly podstatně vylepšeny, avšak nadále jsou považovány za nestabilní. Po vytvoření systému souborů napříč několik zařízeními je možné pomocí pár příkazů přidávat nová zařízení a stará odstraňovat. Btrfs vyžaduje větší zapojení než jiné systémy souborů, čímž činí záležitost méně přívětivou začátečníkům.

Systém souborů ext4 může být konvertován na systém souborů btrfs, což může být užitečné těm, kteří by rádi nainstalovali Gentoo na stabilní a dobře vyzkoušený systém souborů a postupně zvyšovali svoje znalosti o novějších systémech souborů, jako je btrfs, experimentováním.

LVM

The amd64 Installation CDs provide support for Logical Volume Manager (LVM). LVM increases the flexibility offered by the partitioning setup. The installation instructions below will focus on "regular" partitions, but it is good to know LVM is supported if that route is desired. Visit the LVM article for more details. Newcomers beware: although fully supported LVM is outside the scope of this guide.

Výchozí schéma oddílů

Po celý zbytek této příručky bude využíváno následující schéma oddílů jako jednoduchý příklad rozdělení:

Partition Filesystem Size Description
/dev/sda1 (bootloader) 2M BIOS boot partition
/dev/sda2 ext2 (or fat32 if UEFI is being used) 128M Boot/EFI system partition
/dev/sda3 (swap) 512M or higher Swap partition
/dev/sda4 ext4 Rest of the disk Root partition

Pokud je to dostatečné a čtenář se vydá cestou GPT, může okamžitě přejít na Výchozí: Použití parted k rozdělení disku. Ti, kteří se stále zajímají o MBR (hej - stává se to!) a používají výchozí rozdělení, mohou přeskočit na Alternativa: Použití fdisku k rozdělení disku.

fdisk a parted jsou obě utility k rozdělení disku. fdisk je dobře známá, stabilní, doporučená k rozdělení podle MBR, zatímco parted byla jedna z prvních utilit pro správu oddílů podporujících GTP oddíly. Ti, kterým se líbí rozhraní programu fdisk mohou použít gdisk (GPT disk) jako alternativu k parted.

Před uvedením instrukcí k tvorbě se první části budou věnovat detailnějšímu popisu toho, jak mohou být oddíly tvořeny a zmíní nejčastější problémy.

Návrh rozdělení oddílů

Jak mnoho a jak veliké?

Počet oddílů je vysoce závislý na prostředí. V případě velkého množství uživatelů je radno mít adresář /home/ oddělený z důvodu zvýšené bezpečnosti a snadnějšího zálohování. Pokud je Gentoo instalováno jako mailový server, pak by měl být adresář /var oddělen, jelikož maily jsou uloženy uvnitř adresáře /var/. Správná volba systému souborů pak může maximalizovat výkon. Herní servery budou mít oddělený adresář /opt/, jelikož většina herních serverů se instaluje do něj. Důvod je stejný jako u adresáře /home/: bezpečnost a zálohy. Ve většině situací je třeba mít adresář /usr/ velký, nejenže bude obsahovat většinu aplikací, ale strom Portage samotný zabere nejméně 500 MB, nezahrnuje v to další zdroje, které jsou v něm uloženy.

Jak vidno, vše ponejvíce závisí na tom, jakého cíle chce administrátor dosáhnout. Oddělené oddíly nebo svazky mají následující výhody:

  • Vyberete nejlepší systém souborů pro každý oddíl nebo svazek
  • Systému nemůže dojít volné místo na disku, pokud bude jediný nefunkční nástroj neustále zapisovat soubory na oddíl nebo svazek
  • Kontrola systému souborů je v případě potřeby časově zkrácena, jelikož kontroly lze činit paralelně (ačkoli tato výhoda se týká spíše více disků než více oddílů).
  • Bezpečnost může být zvýšena připojením některých oddílů v režimu pouze pro čtení, s volbou nosuid (setuid bity jsou ignorovány), noexec (spouštěcí bity jsou ignorovány) etc.

Nicméně mnohost oddílů má také nevýhody. Pokud nejsou správně nakonfigurovány, systém může skončit s velkým množstvím volného místa ne jednom oddíle a žádným na jiném. Další nepříjemností je to, že oddělené oddíly - zvláště u důležitých přípojných bodů jako je /usr/ nebo /var/ - často vyžadují od administrátora, aby startoval s pomocí initramfs a připojil oddíl ještě před startem zaváděcího skriptu. Ne vždy je to však pravidlem a výsledky se mohou lišit.

U SCSI a SATA platí limit 15 oddílů, pokud disk nepoužívá popisky GPT.

A co swap?

Neexistuje perfektní hodnota pro swap oddíl. Účelem swapu je poskytnout úložiště na disku v případě, že interní paměť jádra je pod tlakem. Swap umožňuje jádru přesunout stránky paměti, které nejspíše nebudou v krátkém časovém okamžiku potřebné na disk (swap nebo page-out) a paměť tak uvolnit. Samozřejmě pokud je tato paměť opět potřeba, je nutné tyto stránky opět vložit zpět do paměti (page-in), což zabere nějaký čas (jelikož disky jsou oproti vnitřní paměti pomalé).

Pokud systém nebude spouštět aplikace náročné na paměť nebo pokud má k dispozici hodně paměti, pak pravděpodobně nepotřebuje mnoho prostoru pro swap. Swap je však také používán pro uložení veškeré paměti v případě uspání. Pokud systém bude potřebovat uspávat, pak bude potřeba většího prostoru pro swap, obvykle nejméně v množství paměti instalované v systému.


Co je to bootovací oddíl BIOSu?

Bootvací oddíl BIOSu je velmi malý (1 až 2 MB) oddíl, do něhož mohou zavaděče jako GRUB2 umístit dodatečná data, která se nevejdou do přiděleného úložiště (několik stovek bytů v případě MBR) a která nemohou být umístěna jinam.

Tento oddíl není vždy potřeba, ale vezmeme-li v úvahu nízké nároky na prostor a těžkosti, které by nám vznikly při dokumentaci ostatních možností dělení, doporučujeme tak jako tak jej vytvořit.

For completeness, the BIOS boot partition is needed when a GPT partition layout is used with GRUB2 in PC/BIOS mode. It is not required when booting in EFI/UEFI mode.

Výchozí: Použití parted k rozdělení disku

V této kapitole budeme používat příkladmé rozdělení zmíněné v pokynech již dříve:

Partition Description
/dev/sda1 BIOS boot partition
/dev/sda2 Boot partition
/dev/sda3 Swap partition
/dev/sda4 Root partition

Rozdělení změňte dle osobních preferencí.

Prohlížení současného rozdělení oddílů pomocí parted

Aplikace parted poskytuje jednoduché rozhraní pro rozdělení disků a podporuje velmi velké oddíly (více než 2 TB). Spusťte parted nad diskem (v našem příkladu použijeme /dev/sda). Doporučuje se zvolit, aby parted použilo optimální zarovnání oddílů:

root #parted -a optimal /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

Zarovnání znamená, že oddíly začínají na dobře známých hranicích v disku, což zajišťuje že operace na disku na úrovni operačního systému (získávání stránek z disku) používají co nejméně vnitřních diskových operací. Nezarovnané oddíly mohou vyžadovat, aby disk načítal dvě stránky, ačkoli operační systém žádal pouze jedinou.

Se všemi volbami podporovanými parted se lze seznámit napsáním příkazu help a stisknutím enteru.

Nastavení popisku GPT

Většina disků na architekturách x86 nebo amd64 je předpřipravena s popiskem "msdos". Příkazem k označení popiskem GPT je v parted mklabel gpt:

Warning
Změna typu oddílu vymaže všechny oddíly z disku. Všechna data na disku budou ztracena.
(parted)mklabel gpt

Pro rozdělení disku dle MBR, použijte mklabel msdos.

Odstranění všech oddílů s parted

Není-li tak již učiněno (například prostřednictvím dřívější operace mklabel nebo proto, že jde o čerstvě formátovaný disk), nejprve odstraňte všechny existující oddíly z disku. Napiště print, abyste viděli existující oddíly a rm <N>, kde <N> představuje číslo oddílu, který má být odstraněn.

(parted)rm 2

Udělejte to stejné pro všechny zbývající oddíly, které nejsou potřeba. Nicméně dejte pozor na jakékoli chyby - parted vykonává změny bezprostředně (narozdíl od fdisk, který je uchovává a umožňuje uživateli jejich vzetí zpět před uložením nebo odchodem z programu).

Tvorba oddílů

Now parted will be used to create the partitions with the following settings:

  • Typ použitého oddílu. Většinou se jedná o primární. Pokud používáte popisek oddílů msdos, nezapomeňte, že nelze mít více než 4 primární oddíly. Pokud potřebujete více než 4 oddíly, vytvořte jeden z prvních čtyř oddílů jako rozšířený a vytvořte logické oddíly uvnitř něj.
  • Počátek umístění oddílu (může být vyjádřen v MB, GB, ...)
  • Konec oddílu (může být vyjádřen v MB, GB, ...)

Nejprve sdělte parted, že jednotky s nimiž budeme pracovat jsou megabyty (ve skutečnosti mebibyty, zkrácené na MiB, což je "standardní" zápis, nicméně mi budeme nadále používat MB, neboť je běžnější):

(parted)unit mib

Nyní vytvořte 2MB oddíl, který bude později použit zavaděčem GRUB2. K tomu použijte příkaz mkpart a sdělte parted, aby začalo na 1 MB a skončilo na 3 MB (čímž se vytvoří oddíl o velikosti 2 MB).

(parted)mkpart primary 1 3
(parted)name 1 grub
(parted)set 1 bios_grub on
(parted)print
Model: Virtio Block Device (virtblk)
Disk /dev/sda: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number   Start      End      Size     File system  Name   Flags
 1       1.00MiB    3.00MiB  2.00MiB               grub   bios_grub

To stejné udělejte s oddílem boot (128 MB), swap oddílem (v tomto příkladu 512 MB) a kořenovým oddílem který se rozprostírá po zbývající části disku (pročež označíme koncové umístění jako -1, což znamená konec disku mínus jeden MB, to je nejvzdálenější místo, kam mohou oddíly dosahovat).

(parted)mkpart primary 3 131
(parted)name 2 boot
(parted)mkpart primary 131 643
(parted)name 3 swap
(parted)mkpart primary 643 -1
(parted)name 4 rootfs

Používáte-li k bootování rozhraní UEFI (namísto BIOSu), označte bootovací oddíl jako systémový oddíl EFI. Parted tak učiní automaticky, pokud nastavíte na oddíle volbu "boot":

(parted)set 2 boot on

Výsledek vypadá takto:

(parted)print
Model: Virtio Block Device (virtblk)
Disk /dev/sda: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number   Start      End      Size     File system  Name   Flags
 1       1.00MiB    3.00MiB  2.00MiB               grub   bios_grub
 2       3.00MiB    131MiB   128MiB                boot   boot
 3       131MiB     643MiB   512MiB                swap
 4       643MiB     20479MiB 19836MiB              rootfs
Note
On an UEFI installation, the boot and esp flags will show up on the boot partition.

K ukončení parted použijte příkaz quit.

Alternativa: Použití fdisku k rozdělení disku

Note
Ačkoli by aktuální fdisk měl podporovat GPT, stále se ukazuje, že s ním má problémy. Instrukce níže uvedené předpokládají, že je použito rozdělení MBR.

Následující části vysvětlují jak vytvořit příkladmé rozdělení disku pomocí příkazu fdisk. Příkladmé rozdělení oddílů bylo zmíněno dříve:

Partition Description
/dev/sda1 BIOS boot partition
/dev/sda2 Boot partition
/dev/sda3 Swap partition
/dev/sda4 Root partition

Rozložení oddílů změňte podle osobních preferencí.

Prohlížení současného rozdělení oddílů

fdisk je populární a silný nástroj k rozdělení disku na oddíly. Spusťte jej nad diskem (v našem případě použijeme /dev/sda):

root #fdisk /dev/sda
Note
Podporu GPT využijte pomocí volby -t gpt. Doporučuje se pozorně studovat výstup příkazu fdisk v případě, že by aktuální vývoj fidsku změnil výchozí volbu na MBR. Zbývající část instrukcí předpokládá rozdělení MBR.

Použijte p k zobrazení aktuální konfigurace rozdělení disku:

Command (m for help):p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Tento konkrétní disk byl nastaven tak, aby obsahoval sedm linuxových souborů systémů (každý z odpovídajícím oddílem označeným jako "Linux") a oddíl swap (označený jako "Linux swap").

Odstranění všech oddílů s fdiskem

Nejprve odstraníme všechny oddíly z disku. Pro vymazání oddílu stiskněte d. Vymazání existujícího oddílu /dev/sda1:

Command (m for help):d
Partition number (1-4): 1

The partition has now been scheduled for deletion. It will no longer show up when printing the list of partitions (p, but it will not be erased until the changes have been saved. This allows users to abort the operation if a mistake was made - in that case, type q immediately and hit Enter and the partition will not be deleted.

Opakovaně stiskněte p pro zobrazení výpisu oddílů a stiskněte d a číslo oddílu k vymazání. Nakonec bude tabulka oddílů prázdná:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
Device Boot    Start       End    Blocks   Id  System

Nyní, když je tabulka oddílů v paměti prázdná, můžeme vytvářet oddíly.

Tvorba bootovacího oddílu BIOSu

First create a very small BIOS boot partition. Type n to create a new partition, then p to select a primary partition, followed by 1 to select the first primary partition. When prompted for the first sector, make sure it starts from 2048 (which is needed for the boot loader) and hit Enter. When prompted for the last sector, type +2M to create a partition 2 Mbyte in size:

Note
Začátek od sektoru 2048 je pojistkou v případě, že zavaděč nedetekuje tento oddíl k dispozici ke svému použití.
Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (64-10486533532, default 64): 2048
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +2M

Označte oddíl pro účely UEFI:

Command (m for help):t
Selected partition 1
Hex code (type L to list codes): 4
Changed system type of partition 1 to 4 (BIOS boot)
Note
Použití UEFI s rozdělení oddílů MBR se nedoporučuje. Pokud používáte systém s UEFI, použijte prosím rozdělení GPT.

Tvorba bootovacího oddílu

Nyní vytvořte malý bootovací oddíl. Pro vytvoření nového oddílu stiskněte n, potom p pro vytvoření primárního oddílu, následně 2 ke zvolení druhého primárního oddílu. Na dotaz ohledně prvního sektoru přijměte výchozí volbu stisknutím klávesy Enter. Na dotaz ohledně posledního sektoru, napište +128M pro vytvoření oddílu o velikosti 128 MB:

Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (5198-10486533532, default 5198): (Hit enter)
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +128M

Nyní po stisknutí p se zobrazí následující výpis:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1         3      5198+  ef  EFI (FAT-12/16/32)
/dev/sda2             3        14    105808+  83  Linux

Stiskněte a pro přepnutí bootovací značky na oddíle a zvolte 2. Po opětovném stisknutí p si všimněte, že ve sloupci "Boot" se nachází *.

Vytvoření swap oddílu

Pro vytvoření swap oddílu stiskněte n pro vytvoření nového oddílu, poté p pro vytvoření primárního oddílu. Po té stiskněte 3 pro vytvoření třetího primárního oddílu, /dev/sda3. Na dotaz ohledně prvního sektoru stiskněte Enter. Na dotaz ohledně posledního sektoru napište +512M (nebo jinou hodnotu dle potřebného prostoru pro swap) k vytvoření oddílu velkého 512 MB.

Po tomto všem stiskněte t k nastavení typu oddílu, stisknutím 3 vyberete právě vytvořený oddíl a po té vepiště "82" pro nastavení typu na "Linux Swap".

Vytvoření kořenového oddílu

Nakonec vytvoříme kořenový oddíl, k vytvoření nového oddílu stiskněte n, po té p pro vytvoření primárního oddílu. Po té stiskněte 4 k vytvoření čtvrtého primárního oddílu /dev/sda4. Na dotaz ohledně prvního sektoru stiskněte Enter. Na dotaze ohledně posledního sektoru, stiskněte Enter, čímž vytvoříte zaplníte zbývající prostor na disku. Po dokončení těchto kroků by mělo stisknutí p zobrazit tabulku oddílu, která bude vypadat podobně jako takto:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1         3      5198+  ef  EFI (FAT-12/16/32)
/dev/sda2   *         3        14    105808+  83  Linux
/dev/sda3            15        81    506520   82  Linux swap
/dev/sda4            82      3876  28690200   83  Linux

Uložení rozložení oddílů

K uložení rozdělení oddílů disků a ukončení programu fdisk stiskněte w.

Command (m for help):w

Po té, co jsme vytvořili oddíly, je čas umístit na ně systém souborů.