Come spostare / var in un'altra partizione esistente?


16

Ho una / partizione che contiene / var ed è troppo piccola. Ho un'altra partizione esistente con spazio sufficiente.

Ecco il mio 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

Come posso spostare la cartella / var da sda1 a sda2?

Risposte:


19

Passare alla modalità utente singolo e assicurarsi che qualsiasi processo in cui si /varsta scrivendo sia interrotto. (Verifica con lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# puoi rimuovere /var.oldquando hai finito per recuperare lo spazio
  • mkdir -p /var
  • mount -o bind /home/var /var
  • aggiorna il tuo /etc/fstabper rendere permanente il bind-mount.

/etc/fstab

 /home/var /var        none    bind

Thks! Come posso accedere alla modalità utente singolo? La cartella 'var' rimarrà nella / home?
Jérémie,

Sì, ci sarebbe sempre una /home/vardirectory se risolvessi il problema in questo modo. Un modo è possibile accedere alla modalità utente singolo riavviando e scegliendo la modalità utente singolo dal menu Avvio.
Zoredache,

Non sono davvero sicuro che funzionerà sempre bene. Se stai usando una versione più recente (wheezy) potresti essere OK dato che ha un filesystem / run. OTOH: all'inizio del processo di avvio i file possono essere aperti in / var prima che venga montato.
cstamas,

1
@cstamas, Avere / var su un filesystem separato è supportato , e lo è sempre stato. Avere / var su un separato è anche suggerito come una buona cosa in FHS e nei documenti ufficiali Debian.
Zoredache,

Ok, penso che tu abbia ragione. È stato strano per me farlo con i supporti di collegamento.
cstamas,

5

Puoi anche usare:

 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

Questo sembra molto più facile che scherzare con roba di fstab e mount.


1
Non sono sicuro del motivo per cui qualcuno avrebbe dovuto votare in negativo. Funzionerebbe perfettamente. Un collegamento simbolico dovrebbe funzionare correttamente. Uso semplicemente i supporti di collegamento per altre cose, quindi tendo a pensarci prima.
Zoredache,

1
Per aggiungere a ciò, potrebbe non essere così sicuro, ma in realtà funziona. Di recente l'ho fatto su una macchina prima di metterlo in produzione. Dovrei usare cautela se è una macchina che è stata in uso o ha molti processi in esecuzione. Nel mio caso, si trattava di un nuovo server pensato per eseguire solo Tomcat.
AJ Brown,

1
Symlinking / var funziona, ma invece di farlo preferisco inserire una voce in / etc / fstab, per ricordare me stesso su quale partizione / volume metto cosa e perché (puoi aggiungere commenti). In questo modo è anche più comprensibile per me cosa devo cambiare nella configurazione se devo cambiare qualcosa nel mio hardware.
Gerlos,

1
Non riesco a vedere come funzionerebbe. Voglio che funzioni, ma cose basilari come init use / var, no?
Sue Spence,

1

Sposta /varsenza passare alla modalità utente singolo

Quando ho preso nel corso di un nuovo server virtuale che erano stati accantonati per me dalla società di hosting del mio datore di lavoro, ho creato i volumi logici in più per vare homeche erano state le directory regolari nella partizione 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, le risposte di cui sopra non erano applicabili alla mia configurazione. Spero che questa risposta sia utile per gli altri in una situazione simile (ho conservato i dettagli di LVM ma questi possono essere saltati in quanto non è particolarmente rilevante se il nuovo filesystem viene creato su un volume logico o su una partizione del disco).

Crea e usa un nuovo /varfilesystem con LVM

Creare il file system per il nuovo varvolume montarlo (usando una directory temporanea) e copiare i file dalla corrente /varal nuovo filesystem. Quando si copiano i file rsync, usare la sua -a, --archiveopzione per conservare i timestamp, la proprietà, le modalità, ecc. E la sua -X, --xattrsopzione per preservare gli attributi estesi come le etichette di sicurezza usate da AppArmor e SELinux.

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/

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 (non ho accesso per accedere al server in modalità utente singolo).

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

Poiché non riesco a passare alla modalità utente singolo, riavvia il computer per utilizzare questo nuovo volume come /var.

Ripristina lo spazio su disco dal filesystem di root

Dopo il riavvio della macchina, eseguire le seguenti operazioni per ripulire la directory temporanea e rimuovere i vecchi /varfile dal filesystem di root:

  1. Rimuovere il punto di montaggio temporaneo:

    sudo rmdir /var.new
    
  2. Crea un nuovo mount point per creare un percorso alternativo ai file nella vecchia /vardirectory sul filesystem di root (attualmente è "mascherato" dal nuovo /varfilesystem montato sulla directory):

    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/
    
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.