Déplacement de / var, / home vers une partition séparée

59

J'essaie de déplacer certains dossiers (tels que /varet /home) vers une partition séparée après avoir lu ce guide:

3.2.1 Choisir un schéma de partition intelligent

J'ai pu déplacer un dossier avec succès en suivant ce guide.

Cependant, cela ne semble pas fonctionner pour plusieurs dossiers et tous mes dossiers sont vidés dans la partition sans les dossiers appropriés.

Je voudrais monter /var, /homeet /tmpsur la partition séparée; quelqu'un peut-il me guider à ce sujet?

toffee.beanns
la source
Avez-vous créé une partition supplémentaire pour chacun des répertoires ou juste un?
Mreithub
@mreithub je voudrais qu'il soit idéalement tout stocké dans la même partition et ne varie que par dossier. de cette façon, c'est beaucoup plus simple pour moi, de ne pas avoir à me soucier de l'espace.
Toffee.beanns
1
Je ne recommande pas de mettre /varsur une partition séparée. Il n'y a aucun avantage à cela. Conservez le système d'exploitation complet sur une seule partition ( /). Utilisez des partitions séparées uniquement pour des éléments autres que le système d'exploitation - données utilisateur /home, spool de courrier (si vous en avez un) /var/mail, bases de données, par exemple /var/lib/mysqlou /srv
Gilles 'SO, arrête de faire le mal'
7
@ Gilles " Il n'y a aucun avantage " ?????? (J'ai peut-être besoin de plus de points d'interrogation). Bien sûr, il y a un avantage à cela. / est principalement statique. / var est presque entièrement dynamique. Si vous montez / var sur une partition distincte, vous pouvez monter la partition racine en lecture seule. Il y a une tonne de situations où c'est une bonne chose ™.
Auspex

Réponses:

73

1. Vous devez d’abord disposer d’un espace non alloué pour créer les partitions pour chaque point de montage (/ var, / home, / tmp). Utilisez Gparted pour cela.

2. Ensuite, vous devez créer les systèmes de fichiers pour ces partitions (vous pouvez aussi le faire avec Gparted) ou utiliser:

mkfs.ext4 /dev/sdaX

par exemple, pour créer un nouveau système de fichiers ext4 sur le périphérique / dev / sdaX (remplacez / dev / sdaX par votre propre périphérique)

3. Montez le nouveau système de fichiers sous / mnt

mkdir /mnt/var        
mount /dev/sdaX /mnt/var

4. Passez en mode mono-utilisateur afin qu’il n’y ait aucune activité rw sur le répertoire pendant le processus.

init 1

5. Entrez votre mot de passe root.

6. Sauvegarder les données dans var uniquement (pas le répertoire / var lui-même)

cd /var
cp -ax * /mnt/var

7. Renommez le répertoire / var une fois que vos données ont été transférées avec succès.

cd /
mv var var.old

8. Créez le nouveau répertoire var

mkdir var

9. Démontez la nouvelle partition.

umount /dev/sdaX

10. Remontez le en tant que / var

mount /dev/sdaX /var

11. Modifiez le fichier / etc / fstab pour inclure la nouvelle partition, avec / var en tant que point de montage, afin qu’elle soit automatiquement montée au démarrage.

/dev/sdaX       /var     ext4    defaults    0 0

12. Répétez les étapes 1 à 11 pour / home et / tmp.

13. Enfin, revenez en mode multitâche.

init 5
cioby23
la source
Oui, je pensais à utiliser gparted. Merci d'avoir répondu. Je prévois de réserver 30 Go d'espace disque pour ces quelques dossiers. ?
toffee.beanns
1
Je regardais sur l'utilisation de LVM, ce serait mieux par rapport à gparted?
toffee.beanns
LVM est un sujet complètement différent. LVM est utilisé en tant que couche pour créer des volumes logiques par-dessus des disques durs physiques. Gparted est uniquement l'outil pour créer les volumes physiques LVM.
cioby23
1
En fait, cp -ax * /mnt/varc'est une mauvaise idée , car cela ignorerait les fichiers / répertoires cachés. Préférez cp -ax . /mnt/var. (@ cioby23, je pense que vous devriez mettre à jour votre réponse)
berbt
6
S'il vous plaît ajouter une finale init 5à la réponse.
Robert Pollak
16

Si vous souhaitez les utiliser tous sur la même partition, vous pouvez utiliser LVMtrois montages de liaison simples.

Pour créer une solution de liaison, vous devez

  1. créer une partition avec un système de fichiers
  2. passer en mode de secours (un seul utilisateur a encore besoin de certains dossiers)
  3. montez comme /mnt/data
  4. Déplacez tous les dossiers que vous souhaitez déplacer. Utiliser cpet mv dir dir.oldpeut être plus sûr, mais comme je l'ai fait après l'installation, cela ne m'importait pas.

    mv /home /mnt/data/
    mv /var  /mnt/data/
    
  5. créer des entrées de montage appropriées dans fstab, par exemple, j'ai

    UUID=01234567-89abc-def0-1234-567890abcde /mnt/data         ext4          noatime,nodiratime,relatime                           0       0
    
    # Binds
    /mnt/data/opt                             /opt              none          bind                                                  0       0
    /mnt/data/home                            /home             none          bind                                                  0       0
    /mnt/data/usr                             /usr              none          bind                                                  0       0
    
  6. redémarrer

Fabien
la source
Dans la mount(8)page de manuel, nodiratimeil est écrit: If noatime option is set, this option is not needed.Existe - t-il un avantage en termes de redondance dans son inclusion?
Brannerchinese
5

Personnellement, je choisirais soit la solution bind-mount de @ Fabian, soit des liens symboliques:

  1. créez une /etc/fstabentrée pour la nouvelle partition (utilisez blkidpour obtenir le bon UUID pour votre nouvelle partition et n'oubliez pas de le faire mkdir /mnt/data):

    UUID=01234567-89abc-def0-1234-567890abcde  /mnt/data  ext4  defaults  0 0
    
  2. Utilisez mount -aou quelque chose de similaire pour monter la nouvelle partition

  3. déplacez les dossiers d'origine sur votre nouvelle partition:

    mv /var /mnt/data/
    mv /home /mnt/data/
    # ... (you get the point)
    
  4. Créer des liens symboliques

    ln -s /mnt/data/var /var
    ln -s /mnt/data/home /home
    # ...
    

Bien que la méthode bind-mount soit probablement la meilleure solution, je préfère celle-ci car vous ne vous retrouvez pas avec des listes de partitions dfet des mountfichiers inutilement longs .

mreithub
la source
1
Qu'advient-il des méthodes respectives si quelque chose veut / var avant qu'il soit monté? Je soupçonne plutôt que la méthode de reliure sera plus propre, mais je ne sais pas vraiment.
Auspex
@Auspex Il ne devrait pas y avoir de différence entre les deux méthodes à cet égard (étant donné que toutes les partitions locales /etc/fstabsont montées en même temps lors du démarrage). Avant d' /mnt/dataêtre monté, tous vos liens symboliques seraient «morts», ainsi toute tentative de lecture / écriture sur eux (et sur des sous-répertoires inexistants) échouerait (avec ENOENT si mes souvenirs sont exacts). Avec bind-mounts, vous obtenez à peu près le même résultat, mais les programmes peuvent en réalité écrire sur la partition racine (s'ils essaient d'être intelligents avec des répertoires
inexistants
1
Eh bien, ce n'est pas strictement vrai. La racine est d'abord montée, et j'ai spécifiquement posé la question car le conseil "racine en lecture seule" de Debian mentionne la possibilité que des processus souhaitent accéder à / var avant d'être montés. Mais dans mon cas, où j'ai un Raspberry Pi et que j'ai configuré un système de fichiers en lecture seule sur / (parce que la carte SD continue à être corrompue lorsque la machine est mise hors tension), vous m'encouragez à dire que l'une ou l'autre méthode fonctionnera . Rien ne va écrire sur le système de fichiers racine, car c'est RO, donc dans les deux cas, une erreur se produira.
Auspex le
0

En plus de la procédure donnée cioby23, je devais aussi faire:

  restorecon -R /var

pour que sshd commence.

froner
la source