Wie verschiebe ich / var auf eine andere Partition?

16

Ich habe eine / Partition, die / var enthält und zu klein ist. Ich habe eine andere vorhandene Partition mit genügend Speicherplatz.

Hier ist mein df:

File system          Size. Occ. Avai. %Ful. Monté sur
/dev/sda1             5,0G  4,5G  289M  95% /
tmpfs                 242M     0  242M   0% /lib/init/rw
udev                   10M  2,7M  7,4M  27% /dev
tmpfs                 242M     0  242M   0% /dev/shm
/dev/sda2              15G  406M   14G   3% /home

Wie kann ich den Ordner / var von sda1 nach sda2 verschieben?

Jérémie
quelle

Antworten:

19

Wechseln Sie in den Einzelbenutzermodus und vergewissern Sie sich, dass der Prozess, in den geschrieben /varwird, gestoppt ist. (Überprüfen Sie mit lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# können Sie entfernen, /var.oldwenn Sie fertig sind, um den Speicherplatz freizugeben
  • mkdir -p /var
  • mount -o bind /home/var /var
  • Aktualisieren Sie Ihre /etc/fstab, um die Bindung permanent zu machen.

/etc/fstab

 /home/var /var        none    bind
Zoredache
quelle
Danke! Wie kann ich in den Einzelbenutzermodus wechseln? Verbleibt der Ordner 'var' im Verzeichnis / home?
Jérémie
Ja, es würde immer ein /home/varVerzeichnis geben, wenn Sie das Problem auf diese Weise lösen. Auf eine Weise können Sie in den Einzelbenutzermodus wechseln, indem Sie den Computer neu starten und im Startmenü den Einzelbenutzermodus auswählen.
Zoredache
Ich bin mir nicht sicher, ob dies die ganze Zeit gut funktionieren wird. Wenn Sie eine neuere Version (Wheezy) verwenden, ist das Dateisystem / run möglicherweise in Ordnung. OTOH: Zu Beginn des Startvorgangs können Dateien in / var geöffnet werden, bevor sie gebunden werden.
cstamas
1
@cstamas, Es wird unterstützt , / var auf einem separaten Dateisystem zu haben , und das war schon immer so. Es wird sogar empfohlen, / var auf einem separaten Server zu haben, da dies in FHS und den offiziellen Debian-Dokumenten eine gute Sache ist.
Zoredache
Ok, ich denke du hast recht. Es war mir nur seltsam, dies mit Reittieren zu tun.
Cstamas
5

Sie können auch verwenden:

 mkdir /home/var
 <move contents of /var to /home/var -- however you want; EX: mv /var/* /home/var>
 mv /var /var.old
 ln -s /home/var /var

Dies scheint viel einfacher zu sein, als mit fstab und mount herumzuspielen.

mdpc
quelle
1
Ich bin mir nicht sicher, warum irgendjemand dies abgelehnt hätte. Das würde einwandfrei funktionieren. Ein sym-link sollte gut funktionieren. Ich benutze Bindungshalterungen nur für andere Dinge, daher neige ich dazu, zuerst an diese zu denken.
Zoredache
1
Um dies hinzuzufügen, ist es vielleicht nicht so sicher, aber es funktioniert tatsächlich. Ich habe dies kürzlich an einer Maschine durchgeführt, bevor ich sie in Produktion genommen habe. Vorsicht ist geboten, wenn es sich um eine Maschine handelt, auf der viele Prozesse ausgeführt werden. In meinem Fall war es ein frischer Server, auf dem nur Tomcat ausgeführt werden sollte.
AJ Brown
1
Symlinking / var funktioniert, aber stattdessen ziehe ich es vor, einen Eintrag in / etc / fstab zu setzen, um mir zu merken, auf welcher Partition / auf welchem ​​Volume ich was und warum abgelegt habe (Sie können Kommentare hinzufügen). Auf diese Weise ist mir auch verständlicher, was ich in der Konfiguration ändern muss, wenn ich etwas an meiner Hardware ändern muss.
Gerlos
1
Ich kann nicht sehen, wie das funktionieren würde. Ich möchte, dass es funktioniert, aber grundlegende Dinge wie init use / var, nicht wahr?
Sue Spence
1

Verschieben, /varohne in den Einzelbenutzermodus zu wechseln

Als ich einen neuen virtuellen Server übernahm, der von der Hosting-Firma meines Arbeitgebers für mich bereitgestellt wurde, erstellte ich zusätzliche logische Volumes für varund homedie waren reguläre Verzeichnisse in der Root-Partition. Da der Anbieter des virtuellen Servers keine KVM-ähnliche Schnittstelle zur Verfügung stellte, über die ich im Einzelbenutzermodus auf den Server zugreifen konnte, waren die obigen Antworten für meine Einrichtung nicht zutreffend. Ich hoffe, diese Antwort ist für andere in einer ähnlichen Situation nützlich (ich habe die LVM-Details beibehalten, aber diese können übersprungen werden, da es nicht besonders relevant ist, ob das neue Dateisystem auf einem logischen Volume oder einer Festplattenpartition erstellt wird).

Erstellen und verwenden Sie ein neues /varDateisystem mit LVM

Erstellen Sie das Dateisystem für das neue varVolume, hängen Sie es (unter Verwendung eines temporären Verzeichnisses) ein und kopieren Sie Dateien vom aktuellen /varin das neue Dateisystem. rsyncVerwenden Sie beim Kopieren von Dateien die -a, --archiveOption zum Beibehalten von Zeitstempeln, Eigentümern, Modi usw. und die -X, --xattrsOption zum Beibehalten der erweiterten Attribute, z. B. der von AppArmor und SELinux verwendeten Sicherheitsetiketten.

sudo lvcreate -L 60GB -n var VolGroup00
sudo mkfs.ext4 /dev/VolGroup00/var
sudo mkdir /var.new
sudo mount /dev/VolGroup00/var /var.new
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 Passnummer (letztes Feld) verwendet wird, damit das Dateisystem fscknach einer bestimmten Anzahl von Neustarts nicht automatisch überprüft wird ( ) (Ich habe keinen Zugriff, um mich im Einzelbenutzermodus beim Server anzumelden).

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

Da ich nicht in den Einzelbenutzermodus wechseln kann, starten Sie den Computer neu, um dieses neue Volume als zu verwenden /var.

Stellen Sie Speicherplatz vom Root-Dateisystem wieder her

Führen Sie nach dem Neustart des Computers die folgenden Schritte aus, um das temporäre Verzeichnis zu bereinigen und die alten /varDateien aus dem Root-Dateisystem zu entfernen :

  1. Entfernen Sie den temporären Einhängepunkt:

    sudo rmdir /var.new
    
  2. Erstellen Sie einen neuen Einhängepunkt, um einen alternativen Pfad zu den Dateien im alten /varVerzeichnis im Root-Dateisystem zu erstellen (derzeit wird er vom neuen /varDateisystem im Verzeichnis „maskiert“ ):

    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