Comment déplacer / var vers une autre partition existante?

16

J'ai une partition / qui contient / var et est trop petite. J'ai une autre partition existante avec suffisamment d'espace.

Voici mon 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

Comment déplacer le dossier / var de sda1 vers sda2?

Jérémie
la source

Réponses:

19

Passez en mode mono-utilisateur et assurez-vous que tout processus d'écriture /varest arrêté. (Vérifiez avec lsof | grep /var)

  • mkdir -p /home/var
  • rsync -va /var /home/var
  • mv /var /var.old# vous pouvez supprimer /var.oldlorsque vous avez terminé de récupérer l'espace
  • mkdir -p /var
  • mount -o bind /home/var /var
  • mettez /etc/fstabà jour votre pour rendre le bind-mount permanent.

/etc/fstab

 /home/var /var        none    bind
Zoredache
la source
Merci! Comment puis-je entrer en mode mono-utilisateur? Le dossier «var» restera-t-il dans / home?
Jérémie
Oui, il y aurait toujours un /home/varrépertoire si vous résolvez le problème de cette façon. Vous pouvez entrer en mode mono-utilisateur en redémarrant et en choisissant le mode mono-utilisateur dans le menu de démarrage.
Zoredache
Je ne sais pas vraiment si cela fonctionnera bien tout le temps. Si vous utilisez une version plus récente (Wheezy), vous pouvez être OK car il a un système de fichiers / run. OTOH: au début du processus de démarrage, les fichiers peuvent être ouverts dans / var avant d'être montés par liaison.
cstamas
1
@cstamas, Avoir / var sur un système de fichiers séparé est pris en charge , et l'a toujours été. Avoir / var sur un autre est même suggéré comme étant une bonne chose dans FHS, et dans les documents officiels Debian.
Zoredache
Ok, je pense que tu as raison. C'était juste étrange pour moi de le faire avec des montures de reliure.
cstamas
5

Vous pouvez aussi utiliser:

 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

Cela semble beaucoup plus facile que de jouer avec le fstab et le montage.

mdpc
la source
1
Je ne sais pas pourquoi quelqu'un aurait voté contre. Cela fonctionnerait parfaitement bien. Un lien sym devrait fonctionner correctement. J'utilise simplement des montures de liaison pour d'autres choses, donc j'ai tendance à penser à celles-ci en premier.
Zoredache
1
Pour ajouter à cela, ce n'est peut-être pas aussi sûr, mais cela fonctionne en fait. J'ai récemment fait cela sur une machine avant de la mettre en production. Je devrais faire preuve de prudence si c'est une machine qui a été utilisée ou a beaucoup de processus en cours d'exécution. Dans mon cas, c'était un nouveau serveur destiné à exécuter uniquement tomcat.
AJ Brown
1
Symlinking / var fonctionne, mais au lieu de cela, je préfère mettre une entrée dans / etc / fstab, pour me souvenir sur quelle partition / volume je mets quoi et pourquoi (vous pouvez ajouter des commentaires). De cette façon, je comprends mieux ce que je dois changer de configuration si je dois changer quelque chose dans mon matériel.
gerlos
1
Je ne vois pas comment cela fonctionnerait. Je veux que ça marche, mais des choses de base comme init utilisent / var, n'est-ce pas?
Sue Spence
1

Se déplacer /varsans passer en mode mono-utilisateur

Lorsque j'ai repris un nouveau serveur virtuel qui avait été provisionné pour moi par la société d'hébergement de mon employeur, j'ai créé des volumes logiques supplémentaires pour varet homequi étaient des répertoires réguliers dans la partition racine. Étant donné que le fournisseur de serveur virtuel n'a pas fourni d'interface de type KVM par laquelle je pouvais accéder au serveur en mode mono-utilisateur, les réponses ci-dessus n'étaient pas applicables à ma configuration. J'espère que cette réponse est utile pour d'autres dans une situation similaire (j'ai gardé les détails LVM mais ceux-ci peuvent être ignorés car ce n'est pas particulièrement pertinent que le nouveau système de fichiers soit créé sur un volume logique ou une partition de disque).

Créer et utiliser un nouveau /varsystème de fichiers avec LVM

Créez le système de fichiers pour le nouveau varvolume, montez-le (à l'aide d'un répertoire temporaire) et copiez les fichiers du système actuel /varvers le nouveau système de fichiers. Lors de la copie de fichiers avec rsync, utilisez son -a, --archiveoption pour conserver les horodatages, la propriété, les modes, etc. et son -X, --xattrsoption pour conserver les attributs étendus tels que les étiquettes de sécurité utilisées par AppArmor et 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/

Mettre à jour la table du système de fichiers

Configurez le nouveau système de fichiers à utiliser comme nouveau point de montage pour /varen ajoutant la ligne suivante à /etc/fstab. Notez qu'il 0est utilisé comme numéro de passe (dernier champ) afin que le système de fichiers ne soit pas vérifié automatiquement ( fsck) après un certain nombre de redémarrages (je n'ai pas accès pour me connecter au serveur en mode mono-utilisateur).

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

Comme je ne peux pas passer en mode mono-utilisateur, redémarrez l'ordinateur pour utiliser ce nouveau volume en tant que /var.

Récupérer de l'espace disque à partir du système de fichiers racine

Après le redémarrage de la machine, procédez comme suit pour nettoyer le répertoire temporaire et supprimer les anciens /varfichiers du système de fichiers racine:

  1. Supprimez le point de montage temporaire:

    sudo rmdir /var.new
    
  2. Créez un nouveau point de montage pour créer un chemin alternatif vers les fichiers de l'ancien /varrépertoire du système de fichiers racine (il est actuellement «masqué» par le nouveau /varsystème de fichiers monté sur le répertoire):

    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 - justice pour Monica
la source