Outils pour utilisateurs

Outils du site


partitionnement_simple

Un partitionnement simple séparant nettement système et données

(testé sur opensuse 10.1 et 10.2 ainsi que sur debian etch)

Problématique:

Quand on cherche dans les sites et dans les forums quel est le meilleur partitionnement pour installer un linux, on trouve de nombreuses solutions.

  • La plus simple étant de créer une seule partition “système + données” (+swap),
  • Une solution intermédiaire étant de créer 2 partitions: 1 “/” pour le système et 1 pour “/home” (+swap),
  • La plus complexe étant de créer plein de partitions: 1 pour “/”, 1 pour “/boot”, 1 pour “/home”, 1 pour /usr, 1 pour “/opt”, 1 pour /srv, etc…(+swap)

La première n'est pas très bonne et ne peut être recommandée que quand on n'a pas beaucoup de place disque (disons < 10Go), car si on a un problème de “système”, on perd aussi les données (tout au moins celles qui ne sont pas sauvegardées ailleurs).

La troisième consomme beaucoup de place non utilisée, et malgré cela, si on vise mal, on peut être amené à remettre en cause l'ensemble du partitionnement. Imaginez que la partition /usr devienne trop petite à force d'ajouter des programmes: vous faites quoi ? Il faut cependant reconnaître qu'il peut y avoir des raisons de créer des partitions particulières, par exemple pour empêcher certains denis de service (limitation de la taille de /var) ou pour utiliser le cryptage de partitions.

La solution intermédiaire est meilleure, mais les données qu'on veut conserver en dehors de la partition système peuvent être ailleurs que dans “/home”. Par exemple:

  • vous avez les cd ou dvd d'installation recopiés sur le disque dur et désignés comme dépots dans yast,
  • vous avez ajouté des rpm “isolés” (non suse): webmin, multimedia, …,
  • vous avez un site web dans /srv/www/htdocs,
  • etc…

Ce qui serait bien, ce serait d'avoir deux partitions qui séparent nettement le système et les données, la partition “données” contenant toutes les données de travail qu'on souhaite pouvoir conserver et réutiliser facilement en cas de réinstallation du système. On peut même imaginer que dans ce cas, certaines données puissent être utilisées par plusieurs linux présents sur le pc.

Mais, il y a un os: en effet:

  • Le montage courant par “mount” ou “fstab” nécessite une partition /dev/hd?? et refuse les répertoires de cette partition.
  • Le lien symbolique n'est pas couramment accepté par les accès chrootés (site web et accès ftp sécurisé). Heureusement pour la sécurité: imaginez qu'il suffise d'uploader un lien symbolique (qui est un fichier) pour sortir de la cage et accèder ainsi à tout le système!.
  • Les liens en dur ne marchent pas pour les répertoires, a fortiori entre 2 partitions différentes.

Alors, comment on fait?

Principe de solution

On utilise un paramètre de montage peu connu mais très puissant: “–bind” pour mount, et “bind” pour fstab.

Ce paramètre permet le montage d'un répertoire (y compris sur une autre partition) sur un répertoire de l'arborescence.

Mode opératoire

Partitionnement

Vous avez besoin de 3 partitions:

  • une partition système: de 10 à 30 Go. Pour l'exemple ci-dessous, on l'appellera hda5
  • une partition swap: de 0,5Go à 2Go.
  • une partition de données: aussi grande que vous souhaitez. Pour l'exemple ci-dessous, on l'appellera hda6

Installation

Vous installez la suse entièrement sur la partition système (hda5).

Vous pouvez demander le formatage de la partition de données (hda6) pendant l'installation, mais sans point de montage.

Formatez la partition de données (hda6) avec un format linux (ext3, reiserfs, …).

Post-installation

Vous montez classiquement la partition de données sur un répertoire spécifique de l'arborescence, par exemple, /datas (en console, sous root).

mkdir /datas  

Vous ajoutez dans fstab la ligne de montage suivante (vous corrigez avec votre config!) avec un éditeur de texte sous root:

/dev/hda6    /datas    ext3    acl,user_xattr    1 1  

Et vous demandez la prise en compte du nouveau fstab:

mount -a  

A partir de ce moment, tout ce qui sera placé dans /datas se trouvera physiquement dans la partition de données hda6!

Et grâce au paramètre de montage “bind”, vous allez pouvoir placer n'importe quel répertoire contenant des données sur cette partition de données.

Par exemple, vous voulez placer /home/votrelogin/Documents dans la partition de données:

il faut créer le répertoire /docsvotrelogin dans /datas:

mkdir /datas/docsvotrelogin  

Et assurer le “branchement” (=le montage) de /home/votrelogin/Documents sur /datas/docsvotrelogin par une ligne de montage supplémentaire dans fstab:

/datas/docsvotrelogin    /home/votrelogin/Documents    none    bind    0 0  

Et c'est tout: désormais, tout ce que vous mettrez dans votre /home/votrelogin/Documents sera en fait physiquement dans la partition de données hda6.

A noter qu'on peut le faire aussi ponctuellement dans une console sous root au lieu de fstab. Mais il vous faudra recommencer à chaque reboot. Par exemple pour monter:

mount    --bind    /datas/docsvotrelogin    /home/votrelogin/Documents  

Et pour démonter:

umount    /home/votrelogin/Documents  

Exemples suivants pour d'autres répertoires de données:

Montage sur la partition de données des sites web de /srv et /home/votrelogin/public_html:

Création des répertoires dans la partition de données:

mkdir /datas/serveurweb

mkdir /datas/webvotrelogin  

et création des nouvelles lignes de fstab

/datas/serveurweb    /srv    none    bind    0 0

/datas/webvotrelogin    /home/votrelogin/public_html    none    bind    0 0  

Et on fait prendre en compte les nouvelles ligne par:

mount -a  

A partir de ce moment, tout ce qui sera dans /srv et dans /home/votrelogin/public_html sera physiquement dans la partition de données hda6.

Vous pouvez aussi déplacer n'importe quel autre répertoires de données sur la partition de données. Par exemple, j'ai pris l'habitude de créer un répertoire /ressources qui contient:

  • /ressources/cdiso =les images iso des 6 cd d'install, que j'utilise directement comme sources dans yast
  • /ressources/manuels = les manuels suse qui sont ainsi à disposition de tous les utilisateurs
  • /ressources/rpmsup = les packages “isolés” (webmin par exemple)
  • /ressources/sauvegardes = la sauvegarde des principaux fichiers de config sur lesquels j'ai transpiré…
  • /ressources/wallpapers = quelques fonds d'écran supplémentaires

On fait de la même manière:

mkdir /datas/ressources  

Et on ajoute la ligne dans fstab:

/datas/ressources   /ressources    none   bind   0 0  

Et on fait prendre en compte la nouvelle ligne par:

mount -a  

A partir de ce moment, tout ce qui sera dans /ressources sera physiquement dans la partition de données hda6.

Schéma de l'arborescence système (“/”):

...
/datas                     ---(montage "normal")-->  partition de données (dev/hda6)  
...
/home
      /votrelogin
             /Documents    ---(montage "bind")--->  /datas/docsvotrelogin
             /public_html  ---(montage "bind")--->  /datas/webvotrelogin
...
/ressources                ---(montage "bind")--->  /datas/ressources
...
/srv                       ---(montage "bind")--->  /datas/serveurweb
...  

Toutes ces données peuvent aussi être appelés sous le répertoire /datas: ainsi, en sauvegardant “/datas/*” sur un autre disque, vous sauvegardez toutes les données d'un seul coup.

A noter que si les répertoires de l'arborescence avait du contenu avant le montage, par exemple /home/votrelogin/Documents, ce contenu n'est pas supprimé par le montage, mais seulement masqué. Si vous supprimez le montage, vous retrouvez le contenu initial.

Maintenant, non seulement tout marche parfaitement, mais si dans un moment d'inattention vous reformatez la partition système “/” (ne riez pas, ça arrive à des gens très bien…), vos données sont sauvées. Il suffit de réinstaller un linux “propre” et d'assurer de nouveau les “branchements” avec les données, et c'est reparti!. Et quand on dit “un linux propre”, on parle aussi des nombreux fichiers de config cachés des répertoires utilisateur (tels que “/home/votrelogin”) qu'il vaut mieux laisser du côté “système” parce qu'ils peuvent contenir des anomalies qui plantent le serveur X. C'est pour ça qu'il vaut mieux protéger les “/home/votrelogin/Documents” seulement, plutôt que le “/home/votrelogin” en entier.

Pour la partie strictement “données”: courriers, fichiers musicaux, etc…, rien ne vous empêche d'assurer le branchement sur le même répertoire de données avec plusieurs systèmes d'exploitations linux. Il serait sage de vous assurer alors que les propriétaires et groupes de ces linux ont le même uid et gid pour que les droits soient respectées.

Et que cela ne vous empêche pas de faire des sauvegardes!!!

Sauvegardes

Sauvegarde des fichiers de config

Quand on a transpiré sur certains fichiers de config (fstab, fichiers de apache, de bind, de vsftp,…) ou de données enregistrées (bookmarks de firefox…), on aimerait bien pouvoir les retrouver facilement en cas de réinstallation, et à jour. Mais le faire avec copier-coller sous konqueror est une erreur, car cette copie ne conserve pas les droits d'accès. Or, ce sont des fichiers systèmes. Pour résoudre cela, on peut créer un petit script shell, appelé par exemple “sauveconfig.sh”, qui déclenchera sur demande la recopie des fichiers de config et de données enregistrées dans l'un des répertoires de la partition de données (/ressources/sauvegardes par exemple):

Exemple:

#! /bin/bash
# Programme de sauvegarde de certains fichiers de configuration
# Tyrtamos - mai 2006 (modif en septembre 2006)
#
echo "Sauvegarde de certains fichiers de configuration dans /ressources/sauvegardes"
echo
#
echo "mbr"
rm -fR /ressources/sauvegardes/mbr/*
echo "sauvegarde du mbr de hda (mbr windows pour multiboot windows xp)"
dd if=/dev/hda of=/ressources/sauvegardes/mbr/mbr_hda.bin count=1 bs=512
echo "sauvegarde mbr de hda6 (partition racine linux)"
dd if=/dev/hda6 of=/ressources/sauvegardes/mbr/mbr_hda6.bin count=1 bs=512
#
echo "grub"
rm -fR /ressources/sauvegardes/grub/*
cp -af --parents /boot/grub/device.map  /ressources/sauvegardes/grub
cp -af --parents /boot/grub/menu.lst  /ressources/sauvegardes/grub
cp -af --parents /etc/grub.conf  /ressources/sauvegardes/grub
#
echo "firefox"
rm -fR /ressources/sauvegardes/firefox/*
cp -af --parents /home/tyrtamos/.mozilla/firefox/*   /ressources/sauvegardes/firefox
#
echo "fstab"
rm -fR /ressources/sauvegardes/fstab/*
cp -af --parents /etc/fstab  /ressources/sauvegardes/fstab
cp -af --parents /etc/cryptotab /ressources/sauvegardes/fstab
#
echo "vsftp"
rm -fR /ressources/sauvegardes/vsftp/*
cp -af --parents /etc/vsftpd.conf  /ressources/sauvegardes/vsftp
#
echo "apache2"
rm -fR /ressources/sauvegardes/apache2/*
cp -af --parents /etc/apache2/*  /ressources/sauvegardes/apache2
#
echo "samba"
rm -fR /ressources/sauvegardes/samba/*
cp -af --parents /etc/samba/*  /ressources/sauvegardes/samba
#
echo "bind"
rm -fR /ressources/sauvegardes/bind/*
cp -af --parents /etc/named.*   /ressources/sauvegardes/bind
cp -af --parents /var/lib/named/master/*   /ressources/sauvegardes/bind
#
echo "mon bureau kde"
rm -fR /ressources/sauvegardes/bureau_kde/*
cp -af --parents /home/tyrtamos/Desktop/*   /ressources/sauvegardes/bureau_kde
#
echo "sauvegarde finie!"

Bien sûr, vous adaptez: si vous n'avez pas “bind”, il n'y a rien à sauvegarder!!!

N'oubliez pas les guillemets dans le paramètre de la commande echo (sinon, il y aura tentative d'exécution du texte).

Notez le paramètre “-a” (=“archive”) de cp qui signifie:

  • (-p) conserver le propriétaire, le groupe les droits d'accès et l'horodatage des fichiers et des répertoires copiés
  • (-R) copier l'arborescence complète
  • (-d) copier les liens symboliques en tant que liens symboliques

Le paramètre “–parents” quant à lui permet de copier le fichier avec son chemin complet, et pas seulement le fichier. Par exemple:

cp   --parents   /machin/toto/fichier.txt   /destination  

⇒ crée: /destination/machin/toto/fichier.txt en créant au passage les répertoires machin et toto qui n'existaient pas. Avantage: se rappeller facilement à quel endroit se trouvait ce fichu fichier de configuration!!! Par exemple, les fichiers zônes du serveur dns Bind9 se trouvent dans /var/lib/named/master: vous en rappeliez-vous?

Sauvegarde de la partition de données

Il suffit de copier /datas sur un autre support pour sauvegarder toutes vos données d'un seul coup: Mais, de même que précédemment, pour conserver les droits des fichiers, vous ne pouvez pas utiliser le copier/coller de konqueror! Il faut recourrir encore à un petit script shell appelé, par exemple, “sauvedatas.sh”. Je fais la sauvegarde sur un disque séparé appelé partage, et monté sur /media. Il est encore mieux de faire cette sauvegarde sur un disque usb (formaté linux!), débranché ou éteint en dehors des opérations de sauvegarde.

#! /bin/bash
# Programme de sauvegarde du repertoire /datas
# Tyrtamos - juin 2006 (modif en octobre 2006)
#
echo "sauvegarde du repertoire /datas sur /media/partage/suse101_nesti"
cp -af /donnees  /media/partage/suse101_nesti/donnees_sav-`date +%Y%m%d%H%M%S`  
#
echo "sauvegarde des donnees finie"  

N'oubliez pas les guillemets dans le paramètre de la commande echo.

La partie “`date +%Y%m%d%H%M%S`” va insérer la date inversée et l'heure dans le nom de fichier de votre sauvegarde, comme par exemple: “donnees_sav-20060825110357”. Grâce à la date, chaque nouvelle sauvegarde va créer un nouveau répertoire. Grâce à la date inversée, vos répertoires de sauvegarde, listés par ordre alphabétique, apparaitront aussi par ordre chronologique. Attention: il y a une apostrophe inversée avant “date” et après “%S”. C'est nécessaire pour déclencher l'exécution de la commande shell: date“.

Attention aussi au volume des données sauvegardées qui pourrait dépasser à la longue vos capacités de stockage: il faut faire le ménage de temps en temps! Vous pouvez peut-être améliorer le script en faisant en sorte que seules les 5 dernières sauvegardes soient conservées, les autres étant effacées.

Tant pour la sauvegarde des fichiers de config que pour toutes les données de la partition de données, on peut créer un raccourci sur le bureau pour déclencher la sauvegarde sur demande (sous root nécessairement pour conserver les droits). On peut aussi déclencher la sauvegarde à une périodicité donnée (tâche cron) à condition, bien sûr, que le disque recevant les données soit en ligne à ce moment là.

Amusez-vous bien!

partitionnement_simple.txt · Dernière modification: 2007/12/15 08:46 par tyrtamos

Outils de la page