This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Handbuch:IA64/Installation/Festplatten
Einführung in blockorientierte Geräte
Blockorientierte Geräte
Let's take a good look at disk-oriented aspects of Gentoo Linux and Linux in general, including Linux filesystems, partitions, and block devices. Once the ins and outs of disks and filesystems are understood, partitions and filesystems can be established for the Gentoo Linux installation.
To begin, let's look at block devices. The most famous block device is probably the one that represents the first drive in a Linux system, namely /dev/sda. SCSI and Serial ATA drives are both labeled /dev/sd*; even IDE drives are labeled /dev/sd* with the libata framework in the kernel. When using the old device framework, then the first IDE drive is /dev/hda.
The block devices above represent an abstract interface to the disk. User programs can use these block devices to interact with the disk without worrying about whether the drives are IDE, SCSI, or something else. The program can simply address the storage on the disk as a bunch of contiguous, randomly-accessible 512-byte blocks.
Partitionen
Obwohl es theoretisch möglich wäre eine vollständige Festplatte zu nutzen um ein Linux-System unterzubringen, kommt das in der Praxis fast nie vor. Stattdessen werden komplette Festplatten Block Devices in kleinere, besser handhabbare Block Devices unterteilt. Auf IA64 Systemen werden diese Partitionen genannt.
Itanium Systeme verwenden zum Booten EFI, das Extensible Firmware Interface. Das Partitionstabellen-Format das EFI versteht wird GPT oder GUID Partition Table genannt. Das Partitionierungsprogramm das GPT versteht wird "parted" genannt, darum ist dies das Tool das wir unten verwenden. Darüber hinaus kann EFI nur FAT Dateisysteme lesen, deshalb ist dies das Format für die EFI Bootpartition. Dort installiert "elilo" den Kernel.
Erweiterte Speichermöglichkeit
Die IA64 Installations-CDs bieten Unterstützung für LVM2. LVM2 erhöht die Flexibilität, die das Partitionieren anbietet. Während der Installationsanleitungen konzentrieren wir uns auf "normale" Partitionen, aber es ist dennoch gut zu wissen, dass auch LVM2 unterstützt wird.
Entwurf Partitionsschema
How many partitions and how big?
The number of partitions is highly dependent on the environment. For instance, if there are lots of users, then it is advised to have /home/ separate as it increases security and makes backups easier. If Gentoo is being installed to perform as a mail server, then /var/ should be separate as all mails are stored inside /var/. A good choice of filesystem will then maximize the performance. Game servers will have a separate /opt/ as most gaming servers are installed there. The reason is similar for the /home/ directory: security and backups. In most situations, /usr/ is to be kept big: not only will it contain the majority of applications, it typically also hosts the Gentoo ebuild repository (by default located at /usr/portage) which already takes around 650 MiB. This disk space estimate excludes the packages/ and distfiles/ directories that are generally stored within this ebuild repository.
It very much depends on what the administrator wants to achieve. Separate partitions or volumes have the following advantages:
- Choose the best performing filesystem for each partition or volume.
- The entire system cannot run out of free space if one defunct tool is continuously writing files to a partition or volume.
- If necessary, file system checks are reduced in time, as multiple checks can be done in parallel (although this advantage is more with multiple disks than it is with multiple partitions).
- Security can be enhanced by mounting some partitions or volumes read-only,
nosuid
(setuid bits are ignored),noexec
(executable bits are ignored) etc.
Jedoch haben viele Partitionen auch Nachteile. Wenn diese schlecht auf das System angepasst sind, hat dieses viel freien Speicherplatz auf einer Partition und keinen auf einer Anderen mehr übrig. Ein weiterer Nachteil besteht darin, dass separate Partitionen - vor allem für wichtige Mount-Pfade wie /usr/ oder /var/ - es notwendig ein initramfs während des Bootens zu benutzen, welches diese Partitionen vor der Ausführung anderer Bootskripte mountet.
Weiterhin gibt es ein Limit von maximal 15 Partitionen für SCSI und SATA Datenträger, es sei denn der Datenträger nutzt GPT-labels.
What about swap space?
Die perfekte Größe für eine Swap-Partition gibt es nicht. Der Zweck von Swap-Speicher es ist Festplattenspeicherplatz für den Kernel bereitzuhalten, wenn der interne Speicher (RAM) knapp wird. Der Swap-Speicher erlaubt dem Kernel Speicherseiten auf die vermutlich nicht bald zugegriffen wird auf die Platte auszulagern (Swap oder Page-Out) um Arbeitsspeicher freizumachen. Wird der Speicherinhalt plötzlich benötigt, müssen diese Speicherseiten (Pages) wieder zurück in den Arbeitsspeicher geladen werden (Page-In), dies dauert eine Weile (da Festplatten verglichen mit Arbeitsspeicher sehr langsam sind).
When the system is not going to run memory intensive applications or the system has lots of memory available, then it probably does not need much swap space. However, swap space is also used to store the entire memory in case of hibernation. If the system is going to need hibernation, then a bigger swap space is necessary, often at least the amount of memory installed in the system.
Nicht-Standard Beispiel-Partitionsschema
Eine Beispiel-Partitionierung für eine 20 GB Festplatte ist unten dargestellt, verwendet in einen Demonstrations-Laptop (mit Webserver, Mailserver, Gnome, ...):
root #
df -h
Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext4 509M 132M 351M 28% / /dev/sda2 ext4 5.0G 3.0G 1.8G 63% /home /dev/sda7 ext4 7.9G 6.2G 1.3G 83% /usr /dev/sda8 ext4 1011M 483M 477M 51% /opt /dev/sda9 ext4 2.0G 607M 1.3G 32% /var /dev/sda1 ext2 51M 17M 31M 36% /boot /dev/sda6 swap 516M 12M 504M 2% <not mounted> (Unpartitionierter Bereich für zukünftige Verwendung: 2 GB)
/usr/ ist hier ziemlich voll (83% belegt), aber wenn die gesamte Software erst einmal installiert ist, wächst /usr/ normalerweise nicht mehr viel. Die Zuweisung einiger Gigabytes Festplatten-Speicher für /var/ mag übertrieben scheinen, denken Sie aber daran, dass portage diese Partition standardmäßig zum kompilieren von Paketen verwendet. Um /var/ in einer vernünftigen Größe (z.B. 1 GB) zu halten, ändern Sie die PORTAGE_TMPDIR Variable in /etc/portage/make.conf um auf eine Partition mit genügend freier Festplattenkapazität zum Kompilieren von sehr großen Paketen wie LibreOffice zu verweisen.
Fesplatte partitionieren mit parted
Die folgenden Teile erklären, wie Sie das Beispiel-Partitionslayout erstellen, das wir im Rest der Installationsanleitung verwenden, nämlich:
Partition | Beschreibung |
---|---|
/dev/sda1 | EFI Boot Partition |
/dev/sda2 | Swap Partition |
/dev/sda3 | Root Partition |
Ändern Sie das Partitions-Layout Ihren Vorstellungen entsprechen ab.
Anzeigen des Partitions-Layouts
parted ist der GNU Partition Editor. Wenden Sie parted auf die Festplatte an (in unserem Beispiel verwenden wir /dev/sda):
root #
parted /dev/sda
Wenn Sie in parted angekommen sind, erscheint eine Eingabeaufforderung die folgendermaßen aussieht:
(parted)
An dieser Stelle ist eines der verfügbaren Kommandos help
, um andere zur Verfügung stehende Kommandos anzuzeigen. Ein anderer Befehl ist print
, um die derzeitige Festplattenkonfiguration anzuzeigen:
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 203.938 fat32 boot 2 203.938 4243.468 linux-swap 3 4243.469 34724.281 ext4
Diese Konfiguration ist sehr ähnlich zu der oben empfohlenen. Achten Sie in der zweiten Zeile darauf, dass die Partitionstabelle vom Typ GPT ist. Wenn es ein anderer Typ ist, wird das ia64 System nicht von dieser Festplatte booten können. Zur Erklärung wie Partitionen erzeugt werden, lassen Sie uns erst die Partitionen löschen und sie anschließend neu erzeugen.
Löschen aller Partitionen
Im Gegensatz zu fdisk und einigen anderen Partitionierungs-Programmen, die Änderungen so lange verschieben bis der Schreibbefehl erteilt wird, haben die parted Kommandos sofortige Wirkung. Das heißt wenn Partition hinzugefügt oder entfernt wurden gibt es keine "Rückgängig" Funktion.
Der einfache Weg um alle Partitionen zu löschen und neu anzufangen der garantiert, dass wir den richtigen Partitionstyp verwenden ist eine neue Partitionstabelle mit dem Befehl mklabel
zu erstellen. Dies führt zu einer leeren GPT Partitionstabelle.
(parted) mklabel
gpt
(parted) mklabel
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags
Jetzt, da die Partitionstabelle leer ist, sind wir soweit um die Partitionen zu erstellen. Wie wir zuvor angesprochen haben, werden wir ein Standard-Partitionsschema verwenden. Natürlich brauchen Sie diese Anweisungen nicht haargenau zu befolgen, sondern können sie Ihren persönlichen Bedürfnissen anpassen.
EFI Boot Partition erstellen
Erzeugen Sie als erstes eine kleinen EFI Boot Partition im FAT Dateisystem, damit die IA64 Firmware sie lesen kann. In unserem Beispiel ist sie 32 MB groß, das zum speichern von Kerneln und elilo Konfigurationen geeignet sein sollte. Rechnen Sie damit, dass jeder IA64 Kernel um die 5 MB groß ist. Diese Konfiguration lässt somit etwas Spielraum zum Experimentieren.
(parted)
mkpart primary fat32 0 32
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 32.000 fat32
Swap Partition erstellen
Lassen Sie uns nun die Swap Partition erstellen. Die klassische Größe einer Swap Partition war zwei mal so groß wie der Arbeitsspeicher im System. In modernen Systemen mit viel Arbeitsspeicher ist dies nicht länger notwendig. In den meisten Desktop Systemen reicht eine 512 Megabyte große Swap Partition aus. Für einen Server sollten Sie etwas mehr in Betracht ziehen, um die zu erwartenden Bedürfnisse zu berücksichtigen.
(parted)
mkpart primary linux-swap 32 544
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 32.000 fat32 2 32.000 544.000
Root Partition erstellen
Schließlich erstellen wir die Root Partition. Unsere Konfiguration wird dazu führen, dass die Root Partition die noch verbleibende Festplatte belegt. Wir verwenden standardmäßig ext4, aber es sind auch ext2, jfs, reiserfs oder xfs möglich. Das eigentliche Dateisystem wird nicht in diesem Schritt erzeugt, aber die Partitionstabelle enthält die Angabe, welche Partition welches Dateisystem beinhaltet und es ist eine gute Idee, die Tabelle passend zum Verwendungszweck anzulegen.
(parted)
mkpart primary ext4 544 34732.890
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 32.000 fat32 2 32.000 544.000 3 544.000 34732.874
parted beenden
Zum Beenden von parted
tippen Sie quit
. Es besteht keine Notwendigkeit in einem separaten Schritt das Partitionslayout zu speichern, weil parted
das bereits bei jedem einzelnen der vorigen Schritte getan hat. parted
wird Sie daran erinnern die Datei /etc/fstab zu aktualisieren, was wir später in der Installationsanleitung tun werden.
(parted)
quit
Information: Don't forget to update /etc/fstab, if necessary.
Erstellung von Dateisystemen
Einleitung
Now that the partitions are created, it is time to place a filesystem on them. In the next section the various file systems that Linux supports are described. Readers that already know which filesystem to use can continue with Applying a filesystem to a partition. The others should read on to learn about the available filesystems...
Dateisysteme
Several filesystems are available. Some of them are found stable on the ia64 architecture - it is advised to read up on the filesystems and their support state before selecting a more experimental one for important partitions.
- btrfs
- A next generation filesystem that provides many advanced features such as snapshotting, self-healing through checksums, transparent compression, subvolumes and integrated RAID. A few distributions have begun to ship it as an out-of-the-box option, but it is not production ready. Reports of filesystem corruption are common. Its developers urge people to run the latest kernel version for safety because the older ones have known problems. This has been the case for years and it is too early to tell if things have changed. Fixes for corruption issues are rarely backported to older kernels. Proceed with caution when using this filesystem!
- ext2
- This is the tried and true Linux filesystem but doesn't have metadata journaling, which means that routine ext2 filesystem checks at startup time can be quite time-consuming. There is now quite a selection of newer-generation journaled filesystems that can be checked for consistency very quickly and are thus generally preferred over their non-journaled counterparts. Journaled filesystems prevent long delays when the system is booted and the filesystem happens to be in an inconsistent state.
- ext3
- The journaled version of the ext2 filesystem, providing metadata journaling for fast recovery in addition to other enhanced journaling modes like full data and ordered data journaling. It uses an HTree index that enables high performance in almost all situations. In short, ext3 is a very good and reliable filesystem.
- ext4
- Initially created as a fork of ext3, ext4 brings new features, performance improvements, and removal of size limits with moderate changes to the on-disk format. It can span volumes up to 1 EB and with maximum file size of 16TB. Instead of the classic ext2/3 bitmap block allocation ext4 uses extents, which improve large file performance and reduce fragmentation. Ext4 also provides more sophisticated block allocation algorithms (delayed allocation and multiblock allocation) giving the filesystem driver more ways to optimize the layout of data on the disk. Ext4 is the recommended all-purpose all-platform filesystem.
- f2fs
- The Flash-Friendly File System was originally created by Samsung for the use with NAND flash memory. As of Q2, 2016, this filesystem is still considered immature, but it is a decent choice when installing Gentoo to microSD cards, USB drives, or other flash-based storage devices.
- JFS
- IBM's high-performance journaling filesystem. JFS is a light, fast and reliable B+tree-based filesystem with good performance in various conditions.
- ReiserFS
- A B+tree-based journaled filesystem that has good overall performance, especially when dealing with many tiny files at the cost of more CPU cycles. ReiserFS appears to be less maintained than other filesystems.
- XFS
- A filesystem with metadata journaling which comes with a robust feature-set and is optimized for scalability. XFS seems to be less forgiving to various hardware problems.
- vfat
- Also known as FAT32, is supported by Linux but does not support any permission settings. It is mostly used for interoperability with other operating systems (mainly Microsoft Windows) but is also a necessity for some system firmware (like UEFI).
- NTFS
- This "New Technology" filesystem is the flagship filesystem of Microsoft Windows. Similar to vfat above it does not store permission settings or extended attributes necessary for BSD or Linux to function properly, therefore it cannot be used as a root filesystem. It should only be used for interoperability with Microsoft Windows systems (note the emphasis on only).
When using ext2, ext3, or ext4 on a small partition (less than 8GB), then the file system must be created with the proper options to reserve enough inodes. The mke2fs (mkfs.ext2) application uses the "bytes-per-inode" setting to calculate how many inodes a file system should have. On smaller partitions, it is advised to increase the calculated number of inodes.
Bei ext2 kann dies mit dem folgenden Befehl erfolgen:
root #
mkfs.ext2 -T small /dev/<device>
Bei ext3 und ext4 fügen Sie die Option -j
hinzu um Journaling zu aktivieren:
root #
mkfs.ext2 -j -T small /dev/<device>
Dies vervierfacht die Zahl der Inodes für ein angegebenes Dateisystem in der Regel, da es dessen "bytes-per-inode" (Bytes pro Inode) von 16 kB auf 4 kB pro Inode reduziert. Durch die Angabe des Verhältnisses kann dies sogar weiter optimiert werden:
root #
mkfs.ext2 -i <ratio> /dev/<device>
Dateisystem auf Partition anlegen
To create a filesystem on a partition or volume, there are user space utilities available for each possible filesystem. Click the filesystem's name in the table below for additional information on each filesystem:
Filesystem | Creation command | On minimal CD? | Package |
---|---|---|---|
btrfs | mkfs.btrfs | Yes | sys-fs/btrfs-progs |
ext2 | mkfs.ext2 | Yes | sys-fs/e2fsprogs |
ext3 | mkfs.ext3 | Yes | sys-fs/e2fsprogs |
ext4 | mkfs.ext4 | Yes | sys-fs/e2fsprogs |
f2fs | mkfs.f2fs | Yes | sys-fs/f2fs-tools |
jfs | mkfs.jfs | Yes | sys-fs/jfsutils |
reiserfs | mkfs.reiserfs | Yes | sys-fs/reiserfsprogs |
xfs | mkfs.xfs | Yes | sys-fs/xfsprogs |
vfat | mkfs.vfat | Yes | sys-fs/dosfstools |
NTFS | mkfs.ntfs | Yes | sys-fs/ntfs3g |
For instance, to have the root partition (/dev/sda3) in ext4 as used in the example partition structure, the following commands would be used:
root #
mkfs.ext4 /dev/sda3
Erzeugen Sie nun die Dateisysteme auf den zuvor erzeugten Partitionen (oder logischen Laufwerken).
Activating the swap partition
mkswap is the command that is used to initialize swap partitions:
root #
mkswap /dev/sda2
To activate the swap partition, use swapon:
root #
swapon /dev/sda2
Erzeugen und aktivieren Sie jetzt die Swap-Partition mit den oben genannten Befehlen.
Einhängen
Now that the partitions are initialized and are housing a filesystem, it is time to mount those partitions. Use the mount command, but don't forget to create the necessary mount directories for every partition created. As an example we mount the root partition:
root #
mount /dev/sda3 /mnt/gentoo
Wenn sich /tmp/ auf einer separaten Partition befinden muss, ändern Sie die Berechtigungen nach dem Einhängen folgendermaßen:
root #
chmod 1777 /mnt/gentoo/tmp
In der Anleitung wird später das Dateisystem proc (eine virtuelle Schnittstelle zum Kernel) zusammen mit anderen Kernel-Pseudodateisystemen eingehängt. Zunächst installieren wir jedoch die Gentoo Installationsdateien.