it-swarm.com.de

Wie erstelle und optimiere ich eine ext4-Partition über die Befehlszeile?

PARTITIONING (z. B. fdisk)
Welche nützlichen Befehle werden zum Partitionieren einer zusätzlichen Festplatte über die Befehlszeile verwendet? Da die meisten veröffentlichten Handbücher auf GParted und andere grafische Dienstprogramme abzielen, wäre eine Zusammenfassung einiger Befehlszeilensequenzen hilfreich.

TUNING - RESERVIERTE PLATZ-, RÜCKSCHREIB- UND ZUGRIFFSZEITEN
So entfernen Sie den reservierten Speicherplatz (standardmäßig), falls das Laufwerk zu 100% voll ist. Da es sich bei mir lediglich um ein sekundäres Laufwerk für "Daten" handelt, wird durch Entfernen des reservierten Bereichs sichergestellt, dass das gesamte Laufwerk zur Verwendung verfügbar ist.

Ich bin auch neugierig auf Write-through vs. Write-back und darauf, die Aktualisierung der Zugriffszeiten (für Dateien und Verzeichnisse) zu überspringen, um die Leistung zu verbessern.

41
gth

Zuallererst:

!! WARNUNG !!

Diese Befehle sind EXAMPLES. Durch das Löschen von Partitionen, das Ändern und Formatieren von Dateisystemen werden Daten gelöscht und/oder der Systemstart Ihres Computers wird möglicherweise verhindert. Machen Sie Backups. Verwendung auf eigene Gefahr. Probieren Sie eine Maschine aus, auf der es Ihnen nichts ausmacht, alle Daten zu verlieren. Einschränkung Admin.


  1. Erkannte Geräte der Klasse "DISK" anzeigen

    lshw -C disk
    
  2. Vorhandene Partitionstabelle (n) anzeigen

    fdisk -l
    
  3. Bearbeiten Sie die Partitionstabelle für mein ausgewähltes Gerät (in diesem Fall "sdx")

    fdisk /dev/sdx
    

    Drücken Sie in FDISK:

    • d ... bis dlösche die aktuelle Partition

    • n ... um eine nneue Partition

    • p ... um es als anzugeben PRIMARY-Partition

    • 1 ... um es als 1ST primäre Partition

    • w ... bis write die Änderungen.

  4. Zeigen Sie die neue Partitionstabelle an:

    fdisk -l
    
  5. Formatieren Sie das Dateisystem der neuen Partition wie folgt: ext4

    mkfs -t ext4 /dev/sdx1
    
  6. Erstellen Sie ein neues Verzeichnis, in das das neue Laufwerk geladen werden soll:

    mkdir /storage
    mount /dev/sdx1 /storage
    

TUNING

  1. Entfernen Sie reservierte Blöcke (d. H. Setzen Sie sie auf 0%), da dieses Laufwerk nur für Benutzerdaten bestimmt ist

    tune2fs -m 0 /dev/sdx1
    
  2. Da sich der Server in der UPS befindet, stellen Sie das Zurückschreiben ein, damit die Apps nicht auf das tatsächliche Schreiben der Festplatte warten

    tune2fs -o journal_data_writeback /dev/sdx1
    
  3. Mounten Sie beim Booten mit /etc/fstab und legen Sie die Rückschreibrichtlinie fest

    vi /etc/fstab
    
  4. Suchen Sie in fstab die entsprechende Zeile für Ihr Laufwerk (oder fügen Sie sie hinzu). Parameter in fstab werden durch Leerzeichen getrennt. Das oben beschriebene Laufwerk könnte beispielsweise wie folgt aussehen:

    /dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1
    
    • Der erste Parameter identifiziert die Partition (entweder durch/dev/oder eine lange UUID);
    • Der zweite Parameter ist der Pfad, an den die Partition angehängt wird.
    • Drittens ist der Dateisystemtyp;
    • Der vierte Parameter enthält die Optionen;
    • Der fünfte ist der Zeitplan für dump für Sicherungen. und,
    • Der sechste Parameter ist pass-number (zur Steuerung der Reihenfolge von fsck).

Ändern Sie die Optionen (4. Parameter) in:

noatime,nodiratime,data=writeback,barrier=0,nobh,errors=remount-ro

Starten Sie den Computer neu, um zu überprüfen, ob alles ordnungsgemäß funktioniert hat.
Denken Sie daran, diese Befehle sind destruktiv! Habe Backups und sei vorsichtig!

64
gth

parted verwenden

Nachfolgend die Anleitung zum Erstellen einer neuen ext4-Partition auf einer neuen Festplatte mit parted (getestet auf Ubuntu 14.04.4 LTS x64). parted unterstützt GUID-Partitionstabelle (GPT) und kann anschließend für Partitionen über 2 TB verwendet werden, im Gegensatz zu fdisk.

Verwenden Sie Sudo lshw -C disk *-disk, um den logischen Namen Ihrer neuen Festplatte anzuzeigen:

   description: ATA Disk
   product: ST6000NM0024-1HT
   vendor: Seagate
   physical id: 0.0.0
   bus info: [email protected]:0.0.0
   logical name: /dev/sdb
   version: SN05
   serial: Z4D30T30
   size: 5589GiB (6001GB)
   configuration: ansiversion=5 sectorsize=4096

Der logische Name ist /dev/sdb. Wir können loslegen:

Sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)

Mit Sudo parted /dev/sdb print können wir sehen, dass die GPT erstellt wurde:

[email protected]:~$ Sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

Wir müssen auch die Größe der Festplatte kennen (wir werden MB als Einheit verwenden):

Sudo parted /dev/sdb print unit MB print free

was anzeigt:

Disk /dev/sdb: 6001175MB

Wir können jetzt die primäre Partition erstellen, sodass sie den gesamten Festplattenspeicher beansprucht. So legen Sie die Partitionsbezeichnung fest:

Sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB 

(Siehe https://unix.stackexchange.com/a/49274/16704 wenn Sie wissen möchten, warum wir --align optimal verwenden)

Mit Sudo parted /dev/sdb print können wir sehen, dass die primäre Partitionsbezeichnung erstellt wurde:

[email protected]:~$ Sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB  xfs          primary

Wir müssen dann mkfs verwenden, um die Partition tatsächlich zu erstellen:

Sudo mkfs.ext4 /dev/sdb1

Die Partition ist nun erstellt, wir müssen sie mounten. Dazu Sudo nano /etc/fstab und fügen Sie die folgende Zeile hinzu (/crimea ist der Ordner, in dem die neue Partition gemountet werden soll):

/dev/sdb1       /crimea ext4 defaults   0       0      

Wir erstellen den Ordner und laden /etc/fstab neu:

Sudo mkdir /crimea
Sudo mount -a # Remount /etc/fstab without rebooting in Linux

Sie können die neu gemountete Partition mit df -h anzeigen:

/dev/sdb1                      5.5T   58M  5.2T   1% /crimea

In Sudo nano /etc/fstab können Sie anstelle von /dev/sdb1 das UUID verwenden, das Sie mit Sudo lshw -C volume finden:

*-volume
       description: EXT4 volume
       vendor: Linux
       physical id: 1
       bus info: [email protected]:0.0.0,1
       logical name: /dev/sdb1
       logical name: /crimea
       version: 1.0
       serial: c3559307-795b-66db-9844-8e974c88a1cf
       size: 200MiB
       capacity: 5589GiB
       capabilities: journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized
       configuration: created=2016-06-24 14:56:55 filesystem=ext4 lastmountpoint=/boot modified=2016-07-01 17:15:55 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2016-07-01 17:07:19 name=primary state=mounted

Ansonsten könntest du einfach Sudo blkid /dev/sdb1 machen:

/dev/sdb1: UUID="c3559307-795b-66db-9844-8e974c88a1cf" TYPE="ext4"

Die neue Zeile /etc/fstab lautet:

UUID=c3559307-795b-66db-9844-8e974c88a1cf          5.5T   58M  5.2T   1% /crimea

https://unix.stackexchange.com/a/137868/16704 erklärt, warum es am besten ist, UUID zu verwenden (liquidat, cc by-sa 3.0):

Die Verwendung der UUID hat den Vorteil, dass sie unabhängig von der tatsächlichen Gerätenummer ist, die das Betriebssystem Ihrer Festplatte gibt. Image Sie fügen dem System eine weitere Festplatte hinzu, und aus irgendeinem Grund entscheidet das Betriebssystem, dass Ihre alte Festplatte jetzt sdb anstelle von sba ist. Ihr Boot-Vorgang wäre durcheinander, wenn fstab auf den Gerätenamen zeigen würde. Im Falle der UUIDs wäre dies jedoch in Ordnung.


Zusammenfassung:

Sudo lshw -C disk                # Checking the location of the new drive. It is /dev/sdb.     
Sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)
Sudo parted /dev/sdb print       # Checking that the GPT has been created
Sudo parted /dev/sdb print unit MB print free # see 6001175MB size
Sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB # Creating partition label
Sudo mkfs.ext4 /dev/sdb1         # Creating the partition
Sudo nano /etc/fstab             # Add line `/dev/sdb1 /crimea ext4 defaults 0 0`
Sudo mount -a # Remount /etc/fstab without rebooting
13