Partitions pour un serveur/NAS

Bonsoir,
J’ai trouvé quelques sujets sur le choix de matériel pour un NAS, mais pas d’indications sur la manière partitionner les disques durs.
J’ai une carte mère itx avec un atom 525 et 2 disques durs caviar green de 1 To que je vais utiliser en raid 1.
Le but est de ne pas utiliser de troisième disque pour le système…
J’hésite entre deux possibilités :

  • Toutes les partitions système sur les disques en raid.
  • Les partitions /boot et racine / en lecture seule sur une compact flash (en IDE), les partitions inscriptibles /etc, /var sur les disques en raid.

Dans les 2 cas, tmpfs pour /tmp, /dev /proc …

Quelqu’un peut-il m’éclairer ? Merci d’avance

Jd

Pourquoi /etc sur le disque? Je la mettrais en flash également… Sinon, la solution carte flash en lecture seule est séduisante.

Bonjour et merci pour la réponse.
Je penche aussi pour la compact flash.
Je pensais que les fichiers de /etc seraient un peu plus souvent modifiés que la racine (Config vsftp, cherokee, webmin…)
Ce n’est gênant de remonter / en rw pour faire les mises à jours de temps en temps

Mais c’est vrai que j’hésite encore beaucoup sur les points de montages à faire sur CF, disque dur ou tmpfs :

  • CF : /boot , / , (/etc ?)
  • Disques en RAID 1 : (/etc ?), swap, /var , /home
  • Tmpsfs : /dev/, /proc , /var/run , /var/lock , /var/log (avec tache cron de sauvegarde)

/var/lib, /var/cache et /var/tmp prennent beaucoup de place et donc pas de tmpfs pour eux !

Voilà où j’en suis, des conseils ?? Merci !

On peut difficilement séparer /etc de la racine. C’est là que se trouvent les script d’init, les fichiers de configuration et notamment fstab. Ces fichiers ne sont quand même pas modifiés toutes les minutes. /proc n’est pas un tmpfs, c’est un pseudo-système de fichiers particulier permettant de communiquer avec le noyau (comme /sys) de type proc.

C’est même pas recommandé du tout…

Tu peux éventuellement superposer un système lecture écriture sur un système lecture seule avec unionfs, c’est ce que je fais sur ClefAgreg et c’est très efficace…

comme un ramdisk pour /etc ?
tu as une doc ?

Édit : je n’avais pas vu le dernier poste.

Merci beaucoup ! J’y vois déjà plus clair…

Pour résumer, je ne peux sortir que /boot /var et /home ( et /usr )de l’arborescence…
Alors est-ce que je peux quand même avoir la racine / en ro , si j’utilise tmpsfs pour /var ?

Donc j’en reviens à ma première interrogation, est-ce que ça vaut le coup de s’embêter avec une compact flash ??
Que feriez-vous à ma place ?

À mon avis oui, ça a trois mérites:

  1. Avoir un système de secours facile à faire: Tu fais un double de ta carte et tu la met à coté.
  2. Tu évites les corruptions de ta machine
  3. Ça simplifie la gestion du raid en t’évitant le boute dessus.

ok, merci !
Effectivement, un fichier corrompu en raid, est deux fois plus corrompu :angry:
Alors je garde la compact flash en ro et une branche rw avec unionfs/aufs.
Maintenant, deux possibilités :

1) union avec un tmpfs (avec une resynchronisation possible sur la CF)

sur le principe de ce sujet ( où tu réponds fran.b ) :
initrd-fstab-aufs-unionfs-problemes-de-comprehension-t20242.html

[code]Dans le fichier init de l’initrd :

  • Je créer /aufs /ro /rw
  • Je créer un tmpfs sur /rw
  • Je monte (–move) /root sur /ro
  • Je monte /aufs en union avec /ro et /rw
  • Je monte (–move) /ro sur /aufs/ro et /rw sur /aufs/rw (pour pouvoir y accéder après)
  • Je monte (–move) /root sur /aufs
  • Et l’init est lancé, j’imagine qu’il chroot ou pivot_root sur le /root
    [/code]

2) union avec une partition rw sur le raid

ce qui semble encore le plus simple

Par contre, je n’y connais rien à unionfs, il faut que je m’y mette sérieusement !
Encore une question…
On a une union entre une partition ro et une rw. Les fichiers qu’on modifie, enlève, ajoute le sont sur la branche rw, donc la branche rw ne contient QUE les modifs, pas toute la branche ro ?

Merci encore !

Voilà le script que j’ai fait pour la fabrication de la racine:

[code]echo "Initialisation du système"
mkdir /ROOT
cd /
mount -t unionfs unionsfs /ROOT -o dirs=/ramdisk=rw:/AGREG=ro

le pivot root ne marche pas ici scrogneugneu, usage de run-init

mkdir /ROOT/oldroot
cd /ROOT

montage des extension_NOM.sqh

recherche d’une extension

RAJOUT=""
INDICE=1
if [ -f /cdrom/ordre_extensions ] ; then
LISTE_EXT=cat /cdrom/ordre_extensions | sed -e 's|^|/cdrom/agreg/|'
else
LISTE_EXT=ls /cdrom/agreg/extension*.sqh
fi
for fichier in $LISTE_EXT ; do
#while [ -f /cdrom/agreg/extension$NUMERO.sqh ] ; do
if [ ! -b /dev/loop$INDICE ] ; then
cd /dev
mknod loop$INDICE b 7 $INDICE
cd /ROOT
fi
INDICE=expr $INDICE + 1
DIR=echo $fichier | sed -e 's/^.*\(extension.*\).sqh/\1/'
echo Installation de $DIR
mkdir -p /$DIR
mount $fichier /$DIR -t squashfs -o loop
RAJOUT=:/$DIR=ro$RAJOUT
done

umount /dev/pts
mv /dev /ramdisk
echo Assemblage des repertoires
mount -t unionfs unionsfs /ROOT -o dirs=/ramdisk=rw$RAJOUT:/AGREG=ro
if [ ! -d /ROOT/oldroot ] ; then
mkdir /ROOT/oldroot
fi
if [ ! -d /ROOT/proc ] ; then
mkdir /ROOT/proc
fi
if [ ! -d /ROOT/sys ] ; then
mkdir /ROOT/sys
fi
echo Fabrication de /home/agreg
[…LÀ JE T’ÉPARGNE CETTE PARTIE SANS INTÉRÊT…]
cd /
chroot /ROOT mount /proc
chroot /ROOT mount /sys
#J’aime bien tout voir, ça n’est pas nécessaire…
mkdir -p /ROOT/oldroot/ramdisk
mount -o bind /ramdisk /ROOT/oldroot/ramdisk
mkdir -p /ROOT/oldroot/cdrom
mount -o bind /cdrom /ROOT/oldroot/cdrom
for dir in ls -d /extension* ; do
if [ -d /$dir ] ; then
mkdir -p /ROOT/oldroot/$dir
mount -o bind /$dir /ROOT/oldroot/$dir
fi
done

Voilà, les echos sont terminés

umount /proc/bus/usb
umount /proc
umount /sys
echo RAMDISK fini, boot normal.
echo Running init
cd /
exec /bin/run-init /ROOT /sbin/init $* < /ROOT/dev/console > /ROOT/dev/console 2>&1
[/code]

mais je travaille avec unionfs, pas aufs

Super ! Merci, je vais faire quelques essais ce week-end, et regarder l’init de ta clefagreg de plus près…

Mais du coup, rw en tmpsfs ou sur les disques durs ?

Merci encore pour tes conseils…

Hors Sujet :
@fran.b : j’avais déjà téléchargé ta clefagreg voilà quelques années… Trop de maths pour moi, j’aurais éventuellement pu utiliser une clefagreg interne de sciences physiques :stuck_out_tongue:
Mais j’ai vu que tu as sorti des versions plus généralistes; au cas où tu veuilles ajouter
des logiciels développés par des collègues enseignants :
http://outilsphysiques.tuxfamily.org/

En tmpfs, les modifications sont perdues à l’arrêt/redémarrage. A toi de voir.

Merci de ta réponse,
c’est vrai mais je crois qu’on peut synchroniser les 2 branches pour rendre les modifs permanentes. L’avantage du tmpsfs c’est de réduire les écritures “système” sur le disque.
D’un autre coté, c’est plus souple avec une partition rw…
Pourquoi pas un mix des deux :

  • racine en ro avec union sur une partition rw des disques durs
  • /tmp ; /var/tmp,run,lock,log en tmpfs

Je teste ce week-end…

Bonjour,
Après quelques kernel panic en essayant modifier le fichier initrd/init à la main… j’ai trouvé cette méthode http://ubuntuforums.org/showthread.php?t=787316 qui fonctionne bien après 2 petites modifications. J’ai testé avec une debian squeeze sur un petit disque dur. Je détaille la méthode, ça peut toujours servir à quelqu’un:

1. Créer un fichier dans le répertoire /etc/initramfs-tools/scripts/init-bottom/
Je l’ai appelé aufsroot et j’ai remplacé la commande modprobe -Qb aufs qui n’était pas reconnue, par modprobe aufs

[code]#!/bin/sh -e

case $1 in
prereqs)
exit 0
;;
esac

for x in $(cat /proc/cmdline); do
case $x in
root=)
ROOTNAME=${x#root=}
;;
aufs=
)
UNION=${x#aufs=}
case $UNION in
LABEL=)
UNION="/dev/disk/by-label/${UNION#LABEL=}"
;;
UUID=
)
UNION="/dev/disk/by-uuid/${UNION#UUID=}"
;;
esac
;;
esac
done

if [ -z “$UNION” ]; then
exit 0
fi

modprobe aufs

make the mount points on the init root file system

mkdir /aufs /ro /rw

mount read-write file system

if [ “$UNION” = “tmpfs” ]; then
mount -t tmpfs rw /rw -o noatime,mode=0755
else
mount $UNION /rw -o noatime
fi

move real root out of the way

mount --move ${rootmnt} /ro

mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro

test for mount points on union file system

[ -d /aufs/ro ] || mkdir /aufs/ro
[ -d /aufs/rw ] || mkdir /aufs/rw

mount --move /ro /aufs/ro
mount --move /rw /aufs/rw

strip fstab off of root partition

grep -v $ROOTNAME /aufs/ro/etc/fstab > /aufs/etc/fstab

mount --move /aufs /root

exit 0[/code]

2. Ajouter le module aufs dans le fichier /etc/initramfs-tools/modules
(et pas dans /etc/initramfs-tools/scripts/modules)

[code]# List of modules that you want to include in your initramfs.

They will be loaded at boot time in the order below.

Syntax: module_name [args …]

You must run update-initramfs(8) to effect this change.

Examples:

raid1

sd_mod

aufs[/code]

3. Faire une copie de l’initrd et reconstruire l’image initramfs

cp /boot/initrd.img-2.6.32-5-686 /boot/initrd.img-2.6.32-5-686_orig update-initramfs -u

4. Modifier le fichier /boot/grub/grub.cfg
Pour ajouter une nouvelle entrée dans le grub pour l’initrd “original” (c’est juste une précaution) et ajouter un paramètre au noyau : aufs=tmpfs. on peut aussi indiquer une partition en lecture-écriture, mais je n’ai pas encore testé : aufs=<your_union_rw_partition>

menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-686 (ORIGINAL)' --class debian --class gnu-linux --class gnu --class os { insmod part_msdos insmod ext2 set root='(hd1,msdos1)' search --no-floppy --fs-uuid --set f0d0225b-7c63-4539-8ac9-e625d43fdae5 echo 'Chargement de Linux 2.6.32-5-686 ...' linux /boot/vmlinuz-2.6.32-5-686 root=UUID=f0d0225b-7c63-4539-8ac9-e625d43fdae5 ro quiet echo 'Chargement du disque mémoire initial ...' initrd /boot/initrd.img-2.6.32-5-686_orig } menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-686 (AVEC AUFS/TMPFS)' --class debian --class gnu-linux --class gnu --class os { insmod part_msdos insmod ext2 set root='(hd1,msdos1)' search --no-floppy --fs-uuid --set f0d0225b-7c63-4539-8ac9-e625d43fdae5 echo 'Chargement de Linux 2.6.32-5-686 ...' linux /boot/vmlinuz-2.6.32-5-686 root=UUID=f0d0225b-7c63-4539-8ac9-e625d43fdae5 ro quiet aufs=tmpfs echo 'Chargement du disque mémoire initial ...' initrd /boot/initrd.img-2.6.32-5-686 }

5. Vérification…
On reboote sur le noyau modifié. Les partitions sont correctement attachées :

rootfs / rootfs rw 0 0 none /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 none /proc proc rw,nosuid,nodev,noexec,relatime 0 0 none /dev devtmpfs rw,relatime,size=507496k,nr_inodes=126874,mode=755 0 0 none /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 /dev/disk/by-uuid/f0d0225b-7c63-4539-8ac9-e625d43fdae5 /ro ext3 ro,relatime,errors=continue,data=ordered 0 0 rw /rw tmpfs rw,noatime,mode=755 0 0 aufs / aufs rw,relatime,si=54694483 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0 /dev/sda4 /home ext4 rw,relatime,barrier=1,data=ordered 0 0 tmpfs /tmp tmpfs rw,noatime 0 0 tmpfs /var/tmp tmpfs rw,noatime 0 0 tmpfs /var/log tmpfs rw,noatime,mode=755 0 0 tmpfs /var/run tmpfs rw,noatime,mode=755 0 0 tmpfs /var/lock tmpfs rw,noatime,mode=755 0 0 nfsd /proc/fs/nfsd nfsd rw,relatime 0 0

On vérifie que les modifications se font bien sur le ramdisk /rw :

#du -s -h /rw
76K	/rw

#free
             total       used       free     shared    buffers     cached
Mem:       1024060      96340     927720          0       7032      43144
-/+ buffers/cache:      46164     977896
Swap:      3906552          0    3906552

et après copie d’un fichier d’environ 20 Mo :

#du -s -h /rw
20M	/rw

#free
            total       used       free     shared    buffers     cached
Mem:       1024060     116440     907620          0       7032      63300
-/+ buffers/cache:      46108     977952
Swap:      3906552          0    3906552

Parfait ! Les modifications se font bien en ram !
Maintenant, il reste à tester avec une partition en rw au lieu du tmpfs et faire un script pour synchroniser les 2 branches…

Jd

Intéressant, je ne connaissais pas l’option move de mount, ça va me simplifier la vie ça.

Pareil, je crois même que je vais m’abonner à ce fil :023

Bon, comme il fallait s’y attendre, il reste des problèmes…
Pour synchroniser les 2 branches ro et rw, on devrait forcer aufs à “flusher” mount -o remount,incgen /aufs et détacher/rattacher (remount,del= et remount,add= ) tour à tour les branches /ro et /rw pour copier et ensuite effacer les fichiers de /rw.

Mais, la partition union /aufs n’existe visiblement plus dans mtab ou/proc/mounts (après mount --move /aufs /root ???) donc méthode barbare : modifs sur les 2 branches encore dans l’union.

# remonter /ro en rw
mount -o remount,rw /ro

# copier les fichiers de /rw vers /ro
cp -au /rw/* /ro/

# remonter /ro en ro
mount -o remount,rw /ro

# effacer rw
rm -rf /rw/*

Pas très élégant mais ça passe…