Wie kann ich / var auf einer separaten Partition speichern?

13

Ich möchte /varauf einer separaten Partition von speichern /. Was ist der richtige Weg, um dies einzurichten?

ændrük
quelle

Antworten:

17

Bereiten Sie zuerst eine neue Partition vor (zB mit partedund mkfs).

Angenommen, die Partition ist / dev / sda5

Hängen Sie die neue Partition ein:

mkdir /var2
mount /dev/sda5 /var2

Synchronisiere deine aktuelle Var:

rsync -a /var/ /var2

Fügen Sie den Eintrag zu / etc / fstab hinzu

/dev/sda5    /var    ext4    defaults      2 2

Starten Sie neu.

Wenn Sie Ihr altes / var zurücksetzen müssen, kommentieren Sie einfach den Eintrag in fstab aus.

Aleksandr Levchuk
quelle
1
Ich würde einige Informationen hinzufügen, um den Speicherplatz auf dem alten /varwiederherzustellen: von einer Live-CD starten, die Partition auf dem installierten System mounten /und rm -rf /var/*.
Enzotib
1
Guter Punkt. Sie können auch /während des Betriebs (aber nach dem Neustart) eine Bereitstellung an einem anderen Speicherort auf dem aktuellen System vornehmen. Dann können Sie am alten erhalten /varund es löschen, wenn Sie
Aleksandr Levchuk
1
Ich habe mich auch darüber gewundert. Die erste 1 ist wirklich archaisch und wirkungslos, die zweite steuert die Reihenfolge der fscks, wenn es Zeit ist, Ihre ext während des Bootens zu scannen. Ich achte nicht mehr auf sie. Setzen Sie einfach 1 1, weil die Syntax dies erfordert.
Aleksandr Levchuk
2
Sie sollten 2 2 setzen, damit Dinge wie / fsck scan vor / var erhalten, wenn Sie das 30. Mal neu starten. Andernfalls, wenn / var fehlschlägt und Sie auffordert, die Probleme manuell in einer einzelnen Benutzer-Shell zu beheben, haben Sie kein Dateisystem. Lustige Sachen.
Aleksandr Levchuk
2
Ist das nicht die Empfehlung, UUIDs in fstab zu verwenden? Ich habe die geeignete Verwendung blkid -o list -s UUID, aber ich denke , Sie mit sudo ausführen müssen
steevc
2

Konfigurieren einer neuen / var-Partition auf einem virtuellen Server

Als ich einen neuen virtuellen Server übernahm, der von der Hosting-Firma meines Arbeitgebers bereitgestellt wurde, war nicht genügend Speicherplatz im Root-Dateisystem verfügbar. Glücklicherweise hatten sie den Logical Volume Manager (LVM) verwendet , um die virtuelle Festplatte zu unterteilen, und es war genügend freier Speicherplatz verfügbar, um neue Volumes zu erstellen. Ich habe extra logische Volumes erstellt für varund homedie waren reguläre Verzeichnisse im Root-Dateisystem. Da der Anbieter von virtuellen Servern keine KVM-ähnliche Schnittstelle zur Verfügung stellte, über die ich im Einzelbenutzermodus auf den Server zugreifen konnte, verwendete ich eine sehr ähnliche Methode wie die von Aleksander (diese Antwort enthält zusätzliche Details zur Wiederherstellung des Speicherplatzes in Zusatz zu LVM-spezifischen Befehlen).

Erstellen Sie mit LVM ein neues / var-Dateisystem

Erstellen Sie ein logisches Volume für das neue varDateisystem, hängen Sie es (unter Verwendung eines temporären Verzeichnisses) ein und kopieren Sie Dateien vom aktuellen /varin das neue Dateisystem:

# Create a new 60GB logical volume in the `VolGroup00` group called `var`.
sudo lvcreate -L 60GB -n var VolGroup00
# Create an ext4 filesystem on this new `var` volume.
sudo mkfs.ext4 /dev/VolGroup00/var
# Mount this filesystem at a temporary mount-point.
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new

Da bei laufenden Prozessen Dateien /vargeöffnet und verwendet werden, kann der Verzeichnisbaum nicht einfach in das neue Dateisystem verschoben werden. Rekursives ( -r) Kopieren von Dateien von der aktuellen /varPartition in das neue Dateisystem unter Beibehaltung von Dateiattributen und erweiterten Attributen ( -a, --archiveOption). Ein vorsichtiger Benutzer erstellt möglicherweise zuerst einen LVM-Snapshot des aktuellen Volumes, bevor er kopiert, aber das ist zu viel Off-Topic-Detail für diese Frage.

sudo cp -ra /var/ /var.new/

Alternativ können die Dateien rsyncmit der -a, --archiveOption kopiert werden , Zeitstempel, Eigentumsrechte, Modi usw. -X, --xattrsbeizubehalten und die erweiterten Attribute wie die von AppArmor und SELinux verwendeten Sicherheitsetiketten beizubehalten:

sudo rsync -raX /var/ /var.new/

Aktualisieren Sie die Dateisystemtabelle

Konfigurieren Sie das neue Dateisystem, das als neuer Einhängepunkt verwendet /varwerden soll, indem Sie die folgende Zeile hinzufügen /etc/fstab. Beachten Sie, dass dies 0als Durchlaufnummer (letztes Feld) verwendet wird, damit das Dateisystem fscknach einer bestimmten Anzahl von Neustarts nicht automatisch überprüft wird ( ).

/dev/mapper/VolGroup00-var    /var    ext4  defaults  0 0

Da ein Wechsel in den Einzelbenutzermodus nicht möglich ist, starten Sie den Computer neu, um dieses neue Volume als zu verwenden /var.

Temporären Einhängepunkt entfernen

Nach dem Neustart des Computers wird das neue Dateisystem bereitgestellt, /varsodass der temporäre Bereitstellungspunkt sicher entfernt werden kann:

sudo rmdir /var.new

Stellen Sie Speicherplatz vom Root-Dateisystem wieder her

Die alten /varDateien belegen weiterhin Speicherplatz auf der Root-Partition, sind jedoch nicht leicht zugänglich, während ein anderes Dateisystem eingehängt ist /var(sie werden vom neuen Dateisystem unter Verwendung des /varVerzeichnisses als Einhängepunkt „maskiert“ ). Verwenden Sie einen temporären Einhängepunkt, um das Root-Dateisystem einzuhängen, sodass der Inhalt des ursprünglichen /varVerzeichnisses über einen alternativen Pfad verfügbar ist.

    sudo mkdir /old-root
    sudo mount /dev/mapper/VolGroup00-root /old-root/
    sudo rm -rf /old-root/var/*
    sudo umount /old-root/
    sudo rmdir /old-root/
Anthony G - Gerechtigkeit für Monica
quelle
Gute Erklärung der Optionen. Sie verwenden jedoch lvcreateund mkfs.ext4ohne zu erklären, was und warum verwendet werden. Vielleicht können Sie einfach sagen, dass dies für die Erstellung der neuen Partition ist, da sie nicht das Hauptthema der Antwort sind.
PhoneixS
Vielen Dank für das Feedback @PhoneixS Ich habe die Antwort bearbeitet, um sie klarer zu gestalten und zusätzliche kontextbezogene Informationen bereitzustellen.
Anthony G - Gerechtigkeit für Monica