Come posso archiviare / var su una partizione separata?


13

Vorrei archiviare /varsu una partizione separata da /. Qual è il modo corretto di configurarlo?

Risposte:


17

Preparare innanzitutto una nuova partizione (ad esempio con partede mkfs).

Supponiamo che la partizione sia / dev / sda5

Montare la nuova partizione:

mkdir /var2
mount /dev/sda5 /var2

Sincronizza la tua var attuale:

rsync -a /var/ /var2

Aggiungi la voce a / etc / fstab

/dev/sda5    /var    ext4    defaults      2 2

Reboot.

Se ti capita di dover tornare indietro, il tuo vecchio / var commenta semplicemente la voce in fstab.


1
Vorrei aggiungere alcune informazioni per recuperare lo spazio sul vecchio /var: iniziare da un livecd, montare la partizione sul sistema installato /e rm -rf /var/*.
enzotib,

1
Buon punto. Oppure puoi montarlo /in un'altra posizione sul sistema corrente mentre è in esecuzione (ma dopo il riavvio). Quindi puoi ottenere il vecchio /vared eliminarlo se vuoi
Aleksandr Levchuk

1
Mi chiedevo anche quelli. Il primo 1 è qualcosa di veramente arcaico e senza effetti, il secondo controlla l'ordine di fsck quando è il momento di scansionare il tuo ext durante l'avvio. Non faccio più attenzione a loro. Basta inserire 1 1 perché la sintassi lo richiede.
Aleksandr Levchuk

2
Dovresti mettere 2 2 per lasciare che cose come / get fsck scansionino prima di / var quando riavvii la trentesima volta. Altrimenti se / var fallisce e ti chiede di sistemare le cose manualmente in una singola shell utente - allora non avrai alcun filesystem. Cose divertenti.
Aleksandr Levchuk

2
La raccomandazione non è di usare gli UUID in fstab? Ho usato quello appropriato blkid -o list -s UUID, ma penso che devi correre con sudo
steevc

2

Configurazione di una nuova partizione / var su un server virtuale

Quando ho rilevato un nuovo server virtuale fornito dalla società di hosting del mio datore di lavoro, non c'era abbastanza spazio libero nel filesystem di root. Fortunatamente, avevano utilizzato Logical Volume Manager (LVM) per suddividere il disco virtuale e c'era spazio libero sufficiente per creare nuovi volumi. Ho creato volumi logici extra per vare homeche erano state directory regolari nel filesystem di root. Poiché il provider di server virtuali non ha fornito un'interfaccia simile a KVM tramite la quale ho potuto accedere al server in modalità utente singolo, ho utilizzato un metodo molto simile a quello delineato da Aleksander (questa risposta include dettagli aggiuntivi per il recupero dello spazio su disco in oltre ai comandi specifici di LVM).

Crea un nuovo filesystem / var con LVM

Crea un volume logico per il nuovo varfilesystem, montalo (usando una directory temporanea) e copia i file dall'attuale /varal nuovo filesystem:

# 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

Poiché i processi in esecuzione avranno file /varaperti e in uso, l'albero delle directory non può essere semplicemente spostato nel nuovo filesystem. Ricorsivamente ( -r) copia i file dalla /varpartizione corrente al nuovo filesystem preservando gli attributi di file e gli attributi estesi ( -a, --archiveopzione). Un utente prudente potrebbe prima creare un'istantanea LVM del volume corrente prima di copiarlo, ma si tratta di dettagli troppo fuori tema per questa domanda.

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

In alternativa, i file possono essere copiati rsync, con la sua -a, --archiveopzione per conservare timestamp, proprietà, modalità, ecc. E la sua -X, --xattrsopzione per preservare gli attributi estesi come le etichette di sicurezza usate da AppArmor e SELinux:

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

Aggiorna la tabella del filesystem

Configurare il nuovo filesystem da utilizzare come nuovo mount-point /varaggiungendo la seguente riga a /etc/fstab. Si noti che 0viene utilizzato come numero di passaggio (ultimo campo) in modo che il file system non venga controllato automaticamente ( fsck) dopo un certo numero di riavvii.

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

Poiché non è possibile passare alla modalità utente singolo, riavviare il computer per utilizzare questo nuovo volume come /var.

Rimuovere il punto di montaggio temporaneo

Dopo il riavvio della macchina, il nuovo filesystem verrà montato in /varmodo da poter rimuovere in sicurezza il mount-point temporaneo:

sudo rmdir /var.new

Ripristina spazio su disco dal filesystem di root

I vecchi /varfile occuperanno ancora spazio sulla partizione di root ma non sono facilmente accessibili mentre è montato un altro filesystem /var(sono "mascherati" dal nuovo filesystem usando la /vardirectory come suo mount-point). Utilizzare un mount-point temporaneo per montare il filesystem di root in modo che i contenuti della /vardirectory originale siano disponibili tramite un percorso alternativo.

    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/

Bella spiegazione delle opzioni coinvolte. Tuttavia, usi lvcreatee mkfs.ext4senza spiegare cosa sono o perché vengono utilizzati. Forse puoi semplicemente dire che è per creare la nuova partizione in quanto non sono l'argomento principale della risposta.
PhoneixS,

Grazie per il feedback @PhoneixS ho modificato la risposta per renderlo più chiaro e fornire ulteriori informazioni contestuali.
Anthony Geoghegan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.