Handbuch:IA64/Installation/Festplatten
Einführung in blockorientierte Geräte
Blockorientierte Geräte
Schauen wir uns die Festplatten-spezifischen Aspekte von Gentoo Linux und Linux im Allgemeinen an - insbesondere Linux Dateisysteme, Partitionen und blockorientierte Geräte (Block Devices). Wenn Sie die Vor- und Nachteile von Festplatten und Dateisystemen verstanden haben, können Sie Partitionen und Dateisysteme für die Linux-Installation erstellen.
Zu Beginn schauen wir uns blockorientierte Geräte an. Das berühmteste Block Device ist vermutlich jenes, das das erste Laufwerk eines Linux-Systems ist, nämlich /dev/sda. SCSI und serielle ATA Laufwerke werden beide /dev/sd* benannt. Sogar IDE Laufwerke werden mit dem libata Framework im Kernel so benannt. Bei der Verwendung des alten Geräte Frameworks ist das erste IDE Laufwerk /dev/hda.
The following table will help readers determine where to find a certain type of block device on the system:
Type of device | Default device handle | Editorial notes and considerations |
---|---|---|
NVM Express (NVMe) | /dev/nvme0n1 | The latest in solid state technology, NVMe drives are connected to the PCI Express bus and have the fastest transfer block speeds on the market. Systems from around 2014 and newer may have support for NVMe hardware. |
SATA, SAS, SCSI, or USB flash | /dev/sda | Found on hardware from roughly 2007 until the present, this device handle is perhaps the most commonly used in Linux. These types of devices can be connected via the SATA bus, SCSI, USB bus as block storage. |
MMC, eMMC, and SD | /dev/mmcblk0 | embedded MMC devices, SD cards, and other types of memory cards can be useful for data storage. That said, many systems may not permit booting from these types of devices. It is suggested to not use these devices for active Linux installations; rather consider using them to transfer files, which is their design goal. Alernatively they could be useful for short-term backups. |
IDE/PATA | /dev/hda | Older Linux kernel drivers for IDE/Parallel ATA hardware displayed rotational block storage devices connected to the IDE bus starting at this location. Generally these types of devices has been phased out of personal computers since the year 2003, which is when the computer industry standard shifted to SATA. Most systems with one IDE controller could support four devices (hda-hdd). Alternative naming for these older interfaces include Extended IDE (EIDE) and Ultra ATA (UATA). |
Die oben genannten blockorientierten Geräte repräsentieren eine abstrakte Schnittstelle zur Festplatte. Benutzerprogramme können diese Block Devices nutzen, um mit der Festplatte zu interagieren, ohne sich darum sorgen zu müssen, ob die Festplatten über IDE, SCSI oder etwas anderem angebunden sind. Das Programm kann den Speicher auf der Festplatte einfach als eine Anhäufung zusammenhängender 512-Byte Blöcke mit wahlfreiem Zugriff ansprechen.
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.
Ein Partitionsschema entwerfen
Wie viele Partitionen und wie groß?
Die Anzahl der Partitionen hängt stark von der Ziel-Umgebung ab. Wenn es beispielsweise viele Nutzer gibt, ist eine eigene Partition /home/ ratsam, da diese die Sicherheit erhöht und Backups vereinfacht. Wenn Gentoo installiert wird um als Mailserver zu dienen, dann sollte es ein eigenes /var/ geben, weil alle Mails in /var/ gespeichert werden. Eine gute Wahl des Dateisystems maximiert dann die Performance. Spiele-Server werden eine eigene Partition /opt/ besitzen, da die meiste Spiele-Server-Software dort installiert wird. Der Grund ist ähnlich wie für das /home/ Verzeichnis: Sicherheit und Backups. In den meisten Situationen muss /usr/ ausreichend groß sein: hier wird nicht nur die Mehrzahl der Anwendungen gespeichert, sondern auch das Gentoo ebuild Repository (standardmäßig unter: /var/db/repos/gentoo), das alleine schon rund 650 MiB benötigt. Diese Größenabschätzung enthält noch nicht den benötigten Plattenplatz für die Verzeichnisse binpkgs/ und distfiles/, die standardmäßig unter /var/cache/ gespeichert werden.
In most situations on Gentoo, /usr and /var should be kept relatively large in size. /usr hosts the majority of applications available on the system and the Linux kernel sources (under /usr/src). By default, /var hosts the Gentoo ebuild repository (located at /var/db/repos/gentoo) which, depending on the file system, generally consumes around 650 MiB of disk space. This space estimate excludes the /var/cache/distfiles and /var/cache/binpkgs directories, which will gradually fill with source files and (optionally) binary packages respectively as they are added to the system.
Es hängt also stark davon ab, was der Administrator erreichen möchte. Separate Partitionen oder Volumes haben folgende Vorteile:
- Wählen Sie das performanteste Dateisystem für jede Partition oder jedes Volume.
- Dem Gesamtsystem kann der freie Speicherplatz nicht ausgehen, wenn ein fehlerhaftes Tool kontinuierlich Dateien auf eine Partition oder ein Volume schreibt.
- Falls nötig werden Dateisystemüberprüfungen zeitlich reduziert, da mehrere Überprüfungen gleichzeitig durchgeführt werden können. (Wenngleich dieser Vorteil eher bei mehreren Festplatte als bei Partitionen zum Tragen kommt.)
- Sie können die Sicherheit erhöhen indem Sie einige Partitionen oder Volumes read-only,
nosuid
(setuid Flags werden ignoriert),noexec
(executable Flags werden ignoriert) etc. einbinden.
Viele Partitionen können aber auch Nachteile haben. Wenn diese schlecht an das System angepasst sind, kann es sein, dass eine Partition voll ist und auf einer anderen Partition noch viel freier Platz verfügbar ist. Ein weiterer Nachteil besteht darin, dass separate Partitionen - vor allem für wichtige Mount-Pfade wie /usr/ oder /var/ - es häufig notwendig machen, während des Bootens ein initramfs zu benutzen, welches diese Partitionen vor der Ausführung anderer Boot-Skripte mountet. Das ist aber nicht immer notwendig und hängt vom Einzelfall ab.
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.
Was ist mit dem Swap-Speicher?
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).
Wenn auf dem System keine Speicherintensiven Anwendungen ausgeführt werden oder das System viel Speicher zur Verfügung hat, benötigt es vermutlich nicht viel Swap-Speicher. Allerdings wird der Swap-Speicher ebenfalls dazu verwendet, den gesamten Speicherinhalt im Ruhezustand (Hibernation) aufzunehmen. Wenn das System den Ruhezustand benötigt, brauchen Sie daher einen größeren Swap-Speicher. Häufig muss dieser mindestens so groß sein, wie der im System installierte Arbeitsspeicher.
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.
Erstellen von Dateisystemen
Einleitung
Nachdem die Partitionen angelegt wurden, ist es an der Zeit, Dateisysteme darauf anzulegen. Im nächsten Abschnitt werden die unterschiedlichen Dateisysteme beschrieben, die Linux unterstützt. Leser, die bereits wissen, welches Dateisystem sie verwenden wollen, können bei Dateisystem auf einer Partition anlegen fortfahren. Alle anderen sollten weiterlesen, um mehr über die verfügbaren Dateisysteme zu erfahren ...
Dateisysteme
Mehrere Dateisysteme sind verfügbar. Einige davon gelten als stabil auf der ia64 Architektur. Es ist ratsam, sich über das Dateisystem und dessen Unterstützungsgrad zu informieren, bevor Sie sich für wichtige Partitionen für ein eher experimentelles Dateisystem entscheiden.
- 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
- Das ist das erprobte und wahre Linux Dateisystem aber es hat kein Metadaten-Journaling. Dies bedeutet, dass normale ext2 Dateisystemüberprüfungen beim Systemstart ziemlich zeitaufwändig sein können. Mittlerweile gibt es eine gute Auswahl an Journaling-Dateisystemen, die sehr schnell auf Konsistenz überprüft werden können und deshalb ihren Nicht-Journaling-Ausführungen im Allgemeinen bevorzugt werden. Journaling-Dateisysteme verhindern lange Verzögerungen wenn das System gebootet ist und es passiert, dass das Dateisystem in einem inkonsistenten Zustand ist.
- ext3
- Die Journaling-Version des Dateisystems ext2. Es bietet Metadaten-Journaling für schnelle Wiederherstellung zusätzlich zu anderen Journaling-Modi wie Full-Data- und Ordered-Data-Journaling. Es verwendet einen H-Baum (Htree) Index der hohe Leistung in fast allen Situationen ermöglicht. Kurz gesagt, ext3 ist ein sehr gutes und verlässliches Dateisystem.
- ext4
- Ursprünglich als Abspaltung von ext3 entstanden, bringt ext4 neue Funktionen, Leistungsverbesserungen und den Wegfall der Größenbeschränkungen durch moderate Änderungen des On-Disk-Formats. Es kann Datenträger mit bis zu 1 EB und mit Dateigrößen von bis zu 16 TB umspannen. Anstelle der klassischen ext2/3 Bitmap-Block-Allokation nutzt ext4 Extents, die die Performance bei großen Dateien verbessern und Fragmentierung reduzieren. ext4 bietet zusätzlich ausgereiftere Block-Allokation-Algorithmen (Zeitverzögerte Allokation und Mehrfache Preallokation), die dem Dateisystemtreiber mehrere Möglichen bieten das Layout der Daten auf der Festplatte zu optimieren. Es ist das empfohlene Allzweck-Dateisystem für jede Plattform.
- 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
- Das Hochleistungs-Journaling-Dateisystem von IBM. JFS ist ein schlankes, schnelles und verlässliches B+-Baum basiertes Dateisystem mit guter Performance unter verschiedensten Gegebenheiten.
- ReiserFS
- Ein B+-Baum basiertes Journaling-Dateisystem mit einer guten Allgemeinleistung, besonders im Umgang mit winzigen Dateien für den Preis von mehreren CPU-Zyklen. ReiserFS scheint weniger gewartet zu werden als andere Dateisysteme.
- XFS
- Ein Dateisystem mit Metadaten-Journaling, das mit einer Reihe robuster Fähigkeiten daherkommt und für Skalierbarkeit optimiert ist. XFS scheint gegenüber unterschiedlichen Hardwareproblemen weniger Fehlertolerant zu sein.
- vfat
- Ebenfalls als FAT32 bekannt, wird es von Linux unterstützt, aber unterstützt selbst keine Berechtigungseinstellungen. Es wird vor allem aus Kompatibilitätsgründen zu anderen Betriebssystemen (hauptsächlich Microsoft Windows) verwendet. vfat ist zudem eine Notwendigkeit für manche Systemfirmware (wie 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).
Bei der Verwendung von ext2, ext3 oder ext4 auf kleinen Partitionen (kleiner als 8 GB), sollte das Dateisystem mit den passenden Optionen erstellt werden, um genügend Inodes zu reservieren. Die Anwendung mke2fs (mkfs.ext2) verwendet die "bytes-per-inode"-Einstellung um zu berechnen wie viele Inodes eine Dateisystem haben sollte. Auf kleineren Partitionen ist es ratsam die berechnete Anzahl der Inodes zu erhöhen.
Bei ext2, ext3 und ext4 kann dies mit einem der folgenden Befehle erfolgen:
root #
mkfs.ext2 -T small /dev/<device>
root #
mkfs.ext3 -T small /dev/<device>
root #
mkfs.ext4 -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 einer Partition anlegen
Dateisysteme können mit Hilfe von Programmen auf einer Partition oder auf einem Datenträger angelegt werden. Die folgende Tabelle zeigt, welchen Befehl Sie für welches Dateisystem benötigen. Um weitere Informationen zu einem Dateisystem zu erhalten, können Sie auf den Namen des Dateisystems klicken.
Dateisystem | Befehl zum Anlegen | Teil der Minimal CD? | Gentoo Paket |
---|---|---|---|
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 |
Um beispielsweise die root-Partition (/dev/sda3) mit ext4 zu formatieren (wie in der Beispiel-Partitionsstruktur), würde man folgende Befehle verwenden:
root #
mkfs.ext4 /dev/sda3
Erzeugen Sie nun die Dateisysteme auf den zuvor erzeugten Partitionen (oder logischen Laufwerken).
Aktivieren der Swap-Partition
mkswap ist der Befehl der verwendet wird um Swap-Partitionen zu initialisieren:
root #
mkswap /dev/sda2
Zur Aktivierung der Swap-Partition verwenden Sie swapon:
root #
swapon /dev/sda2
Erzeugen und aktivieren Sie jetzt die Swap-Partition mit den oben genannten Befehlen.
Einhängen der Root-Partition
Nun, da die Partitionen initialisiert sind und ein Dateisystem beinhalten, ist es an der Zeit, diese einzuhängen. Verwenden Sie den Befehl mount, aber vergessen Sie nicht die notwendigen Einhänge-Verzeichnisse für jede Partition zu erzeugen. Als Beispiel hängen wir die Root-Partition ein:
root #
mount /dev/sda3 /mnt/gentoo
Wenn sich /tmp/ auf einer separaten Partition befinden muss, ändern Sie die Berechtigungen nach dem Einhängen:
root #
chmod 1777 /mnt/gentoo/tmp
In der Anleitung wird später das Dateisystem proc (eine virtuelle Schnittstelle zum Kernel) zusammen mit anderen Kernel Pseudo-Dateisystemen eingehängt. Zunächst installieren wir jedoch die Gentoo Installationsdateien.