Comment puis-je stocker / var sur une partition séparée?

13

Je voudrais stocker /varsur une partition distincte de /. Quelle est la bonne façon de configurer cela?

ændrük
la source

Réponses:

17

Préparez d'abord une nouvelle partition (par exemple avec partedet mkfs).

Disons que la partition est / dev / sda5

Montez la nouvelle partition:

mkdir /var2
mount /dev/sda5 /var2

Synchronisez votre var actuelle:

rsync -a /var/ /var2

Ajoutez l'entrée dans / etc / fstab

/dev/sda5    /var    ext4    defaults      2 2

Redémarrez.

Si vous avez besoin de revenir en arrière, votre ancien / var commente simplement l'entrée dans fstab.

Aleksandr Levchuk
la source
1
J'ajouterais quelques informations pour récupérer de l'espace sur l'ancien /var: partir d'un livecd, monter la partition sur le système installé /et rm -rf /var/*.
enzotib
1
Bon point. Ou vous pouvez monter /à un autre emplacement sur le système actuel pendant son fonctionnement (mais après le redémarrage). Ensuite, vous pouvez retrouver l'ancien /varet le supprimer si vous le souhaitez
Aleksandr Levchuk
1
Je me posais aussi des questions à ce sujet. Le premier 1 est quelque chose de vraiment archaïque et sans effet, le second contrôle l'ordre des fsck quand il est temps de scanner votre ext pendant le démarrage. Je ne fais plus attention à eux. Mettez juste 1 1 car la syntaxe l'exige.
Aleksandr Levchuk
2
Vous devriez mettre 2 2 pour laisser des choses comme / obtenir fsck scan avant / var lorsque vous redémarrez la 30e fois. Sinon, si / var échoue et vous demande de corriger les choses manuellement dans un seul shell utilisateur - alors vous n'aurez aucun système de fichiers. Truc amusant.
Aleksandr Levchuk
2
N'est-ce pas la recommandation d'utiliser les UUID dans fstab? J'ai eu le bon en utilisant blkid -o list -s UUID, mais je pense que vous devez exécuter avec sudo
steevc
2

Configuration d'une nouvelle partition / var sur un serveur virtuel

Lorsque j'ai repris un nouveau serveur virtuel qui avait été provisionné par la société d'hébergement de mon employeur, il n'y avait pas assez d'espace libre dans le système de fichiers racine. Heureusement, ils avaient utilisé Logical Volume Manager (LVM) pour subdiviser le disque virtuel et il y avait suffisamment d'espace libre disponible pour créer de nouveaux volumes. J'ai créé des volumes logiques supplémentaires pour varet homequi avaient été des répertoires réguliers dans le système de fichiers 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, j'ai utilisé une méthode très similaire à celle décrite par Aleksander (cette réponse inclut des détails supplémentaires pour récupérer l'espace disque dans en plus des commandes spécifiques à LVM).

Créer un nouveau système de fichiers / var avec LVM

Créez un volume logique pour le nouveau varsystème de fichiers, montez-le (à l'aide d'un répertoire temporaire) et copiez les fichiers du système actuel /varvers le nouveau système de fichiers:

# 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

Étant donné que les processus en cours d'exécution auront des fichiers /varmaintenus ouverts et en cours d'utilisation, l'arborescence de répertoires ne peut pas simplement être déplacée vers le nouveau système de fichiers. Récursivement ( -r) copiez les fichiers de la /varpartition actuelle vers le nouveau système de fichiers tout en préservant les attributs de fichier et les attributs étendus ( -a, --archiveoption). Un utilisateur prudent peut d'abord créer un instantané LVM du volume actuel avant de copier, mais c'est trop de détails hors sujet pour cette question.

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

Alternativement, les fichiers peuvent être copiés rsync, avec son -a, --archiveoption pour conserver les horodatages, la propriété, les modes, etc. et son -X, --xattrsoption pour préserver les attributs étendus tels que les étiquettes de sécurité utilisées par AppArmor et SELinux:

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.

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

Comme il n'est pas possible de passer en mode mono-utilisateur, redémarrez l'ordinateur pour utiliser ce nouveau volume en tant que /var.

Supprimer le point de montage temporaire

Après le redémarrage de la machine, le nouveau système de fichiers sera monté /varafin que le point de montage temporaire puisse être supprimé en toute sécurité:

sudo rmdir /var.new

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

Les anciens /varfichiers occuperont toujours de l'espace sur la partition racine mais ils ne sont pas facilement accessibles pendant qu'un autre système de fichiers est monté sur /var(ils sont «masqués» par le nouveau système de fichiers en utilisant le /varrépertoire comme point de montage). Utilisez un point de montage temporaire pour monter le système de fichiers racine afin que le contenu du /varrépertoire d' origine soit disponible par un autre chemin.

    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 Geoghegan
la source
Belle explication des options impliquées. Cependant, vous utilisez lvcreateet mkfs.ext4sans expliquer ce que sont ou pourquoi sont utilisés. Vous pouvez peut-être simplement dire que c'est pour faire la nouvelle partition car ils ne sont pas le sujet principal de la réponse.
PhoneixS
Merci pour les commentaires @PhoneixS J'ai édité la réponse pour la rendre plus claire et fournir des informations contextuelles supplémentaires.
Anthony Geoghegan