Outils pour utilisateurs

Outils du site


systemedefichiers

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

systemedefichiers [2016/03/25 20:29] (Version actuelle)
Ligne 1: Ligne 1:
 +{{tag>rh stockage sysadmin}}
 +
 +===== Systèmes de fichiers =====
 +
 +Biblio: ​
 +
 +[[https://​access.redhat.com/​documentation/​en-US/​Red_Hat_Enterprise_Linux/​7/​html/​Storage_Administration_Guide/​index.html|RHEL7 Storage admin guide]]
 +
 +==== Considérations générales ====
 +
 +=== Partitionnement ===
 +
 +RH recommande le schéma de partitionnement suivant:
 +  * /home
 +  * /opt
 +  * /usr/local
 +
 +==== LVM ====
 +
 +Permet de //grouper// des //Volumes Physiques// et d'​utiliser l'​espace ainsi disponible en //Volumes Logiques// auxquels on associera point de montage et système de fichier.
 +
 +On pourra ensuite facilement gérer (notamment //​étendre//​) cet espace de stockage.
 +
 +LVM se gère via l'​interface //​system-config-lvm//​.
 +
 +**Attention** : un système dont le FS racine est sur LVM doit disposer d'une partition **standard** pour /boot.
 +
 +Extents : unité d'​allocation de base. 4 mo. 
 +
 +=== Type de LV ===
 +
 +  * linear - lv classique
 +  * striped - idem, en définissant explicitemment l'​emplacement physique des données. Permet de répartir et donc de paralléliser les opérations d'I/O, ce qui peut apporter des perf intéressantes
 +  * thin provisionned volume : permet d'​allouer plus de ressources que l'on en a réellement.
 +  * snapshot nothing to do with backup
 +   * cas d'​utilisation:​ faire un fsck sur un snapshot pour déterminer si le besoin est réel sur l'​original.
 +   * faire un test sur un snapshot des données en prod
 +
 +
 +=== gestion ===
 +  * pvcreate /dev/sda
 +  * vgcreate vgnom /dev/sda
 +  * lvcreate --extents 1000 --name vg_home vgnom
 +
 +=== lvs ===
 +
 +attributs:
 +
 +  * Type de volume
 +    * **C**ache
 +    * **m**irrored
 +    * **M**irrored w/o initial sync
 +    * **o**rigin
 +    *  **O**rigin with merging snapshot
 +    * **r**aid
 +    * Raid w/o initial sync
 +    * **s**napshot
 +    * merging **S**napshot
 +    * **p**vmove
 +    * **v**irtual
 +    * mirror or raid **i**mage
 +    * **I**mage out of sync
 +    * mirror **l**og device
 +    * under **c**onversion
 +    * thin **V**olume
 +    * **t**hin pool
 +    * **T**hin pool data
 +    * raid or pool m**e**tadata or pool metadata spare
 +  * permissions
 +  * politique d'​allocation
 +  * fixed minor
 +  * État
 +    * **a**ctive
 +    * **s**uspended
 +    * **I**nvalid snapshot
 +    * invalid **S**uspended snapshot
 +    * snapshot **m**erge failed
 +    * suspended snapshot **M**erge failed
 +  * device open / unknow
 +  * target type (cache, mirror, raid, snapshot, ...)
 +  * ?
 +  * État de santé
 +  * skip activation
 +
 +=== Déplacement d'​extents ===
 +
 +Opération à réaliser lors du retrait d'un disque d'un groupe de volume.
 +
 +=== Snapshots ===
 +
 +lvcreate --snapshot --name foo --size XX /​dev/​VGNAME/​LVNAME
 +
 +lvconvert --merge /​DEV/​VGNAME/​LVNAME # ne fonctionnera pas si le LV d'​origine est actif
 +
 +Attention un snapshot plein, c'est un snapshot en carafe !
 +
 +Attention, faire un snapshot de /root, c'est prendre le risque de rendre le système non bootable
 +
 +Corrigé en regénérant le initramfs en incluant le driver dm-snapshot ( ligne add_drivers+= dans /​etc/​dracut.conf )
 +==== Partitions ====
 +
 +À manipuler avec //parted// : 
 +  * print
 +  * mkpart
 +  * resize
 +
 +puis mkfs.
 +
 +Rajouter une nouvelle partition:
 +  * création partition
 +  * création FS
 +  * (e2label)
 +  * édition /etc/fstab
 +
 +=== Structure système de fichier ===
 +
 +fichiers partageables ou non
 +
 +fichier statiques (binaires) ou modifiés (documents)
 +
 +droits d'​accès
 +
 +== FHS ==
 +
 +/sys est un FS virtuel utilisé principalement pour la gestion des périphérique "​hotpluggable"​. Propose les même informations que /proc, de manière hiérarchisée.
 +
 +/sbin/ contient les binaires indispensable au démarrage et à la réparation du système, pouvant fonctionner en l'​absence de /usr.
 +
 +/usr/local reprend l'​arborescence de /usr et propose un stockage des applications exclus des mises à jour.
 +
 +/proc ne stocke pas de données mais offre une interface "​fichier"​ aux différents composants du systèmes et aux processus en cours de fonctionnement.
 +
 +Certains éléments de /proc peuvent être modifiés.
 +
 +== montage ==
 +
 +À l'aide de la commande //mount// Voir également la commande //blkid// permettant de récupérer identifiant (UUID) et label d'un système de fichier.
 +/usr pourra avoir sa propre partition et être monté en lecture-seul. On pourra également le partager entre plusieurs machines.
 +
 +l'​option //--bind// permet de monter un FS déjà monter sur un autre répertoire.
 +
 +L'​option //--move// permet de déplacer un point de montage.
 +
 +Le démontage se fait via la commande //umount//. les commandes //lsof// et //fuser -m// permettent de déterminer les processus occupant un FS et empéchant son démontage.
 +
 +
 +==== ext3 ====
 +
 +Version améliorée d'​ext2,​ apportant le principe de la journalisation. Cela permet une reprise sur incident rapide contrairement à ext2 où il est nécessaire de parcourir l'​ensemble du fs pour détecter et corriger les erreurs.
 +
 +Le journalisation apporte également un gain de performance par l'​optimisation du nombre de //seeks//.
 +
 +==== ext4 ====
 +
 +FS par défaut sur RH6. étend les possibités de mise à l'​échelle de ext3. limite en terme de taille de FS et de fichiers plus importante. Utilisation des extents plutôt que des blocs : meilleure gestion des gros fichiers.
 +
 +support des acl, journalisation des quotas (diminue le temps de vérification après un crash).
 +
 +écriture sur disque uniquement sur //fsync// => optimisation de la mise en cache.
 +
 +=== stripe geometry ===
 +
 +Normalement,​ la création d'un FS de type ext4 par-dessus un système de stockage //Stripé// (lvm, raid) se fait de manière optimale. Il est possible de s'​assurer de la chose avec l'​option -E de //​mkfs.ext4//:​
 +<​code>​
 +mkfs.ext4 -E stride=16,​stripe-width=64 /dev/device
 +</​code>​
 +avec //stride// = RAID Chunk size et //​stripe-width//​ = nb de disques de données composant le raid.
 +
 +=== write barriers ===
 +
 +Permet de garantir l'​intégrité des données en cas de perte de courant sur un périphérique avec cache d'​écriture actif. À désactiver en l'​absence de cache ou lorsque le cache est protégé par batterie.
 +
 +=== Autres commandes ===
 +
 +== e2fsck ==
 +
 +
 +
 +== tune2fs ==
 +
 +== e2label ==
 +
 +== quota ==
 +
 +== resize2fs ==
 +
 + ==== nfs ====
 +
 +Protocole permettant de monter des systèmes de fichier résidant sur d'​autres machines, et d'y accéder localement.
 +
 +3 versions.
 +
 +TCP préferable,​ même si UDP est possible pour les versions 2 et 3.
 +
 +La version 4 de nfs utilise exclusivement le port 2049 et rend l'​utilisation de certains services inutiles.
 +
 +=== Les services ===
 +
 +  * rpcbind - remplace portmap. associe service et n° de port. inutile en v4.
 +  * nfslock - permet aux [[:​clients|clients]] de verrouiller des fichiers (nfs v2 et 3)
 +  * lockd - processus [[:​noyau|noyau]] de gestion des verrous
 +  * rpc.mountd - gère les demandes de montage des [[:​clients|clients]] nfs v2 et 3
 +  * rpc.nfsd - service principal
 +  * rpc.statd - inutilisé par v4
 +  * rpc.quotad - gestionnaire de quota
 +  * rpc.idmpad - mise en correspondance des utilisateurs nfsv4 avec uid/gid local.
 +
 +=== option de montage nfs ===
 +  * intr
 +  * nfsvers
 +  * lookupcache
 +  * noexec
 +  * nosuid
 +  * rsize
 +  * wsize
 +
 +=== configuration serveur ===
 +
 +via /​etc/​exports ou la commande //​exportfs//​
 +<​code>​
 +chemin ​ client(options)
 +</​code>​
 +avec options:
 +  * ro
 +  * (a)sync
 +  * wdelay
 +  * root_squash,​ all_squash, anonuid, anongid
 +  * acl
 +
 +=== pare-feu ===
 +
 +dans /​etc/​sysconfig,​ il est possible de spécifier les ports sur lesquels les différents services devront écouter.
 +
 +=== Sécurité ===
 +
 +L'​accès aux partages nfs est contrôlé via:
 +  * les directives d'​hôtes du fichier /​etc/​exports. (sensible aux attaques dns)
 +  * les permissions sur les fichiers. (mapping uid/gid ou squashing)
 +
 +On peut également améliorer ceci en utilisant kerberos
 +
 +=== Divers ===
 +
 +La commande //showmount -e serveur// donne la liste des éléments exportés par //​serveur//​.
 +
 +Voir également [[main.automount|autofs]]
 +
 +La commande //rpcinfo// permet de lister les services connus de //rpcbind//
 +
 +=== FS-Cache ===
 +
 +Utilisation d'un disque local pour mettre en cache persistent des données disponibles sur le réseau. Peut apporter des gains de performance coté client et réduire la charge serveur et réseau.
 +
 +
 +==== xfs ====
 +
 +FS par défaut sur RH7
 +
 +scalable, high performance,​ quick crash recovery
 +
 +
 +Allocation delayée
 +
 +
 +Permet les quota, l'​agrandissement à chaud, les quotas utilisateur,​ groupe et projet.
 +
 +
 +freeze / unfreeze (équivalent des snapshots lvm)
 +
 +sauvegarde complète et incrémentale du FS
 +
 +
 +==== Write Barriers ====
 +
 +Mécanisme de protection de l'​intégrité des données lors de l'​utilisation d'un cache en écriture non protégé par batterie, donc sensibles aux coupures de courant (pouvant entrainer des corruptions de données).
 +
 +Garantie l'​écriture //dans l'​ordre//​ et //sur disque// des métadonnées du journal. Les applications faisant beaucoup d'​appels //fsync// ou qui écrivent / suppriment de nombreux fichiers ne vont pas apprécier.
 +
 +Ce mécanisme est donc //inutile// si le système de stockage utilise un système de cache protégé.
 +
 +Ce mécanisme est également //inutile// si on désactive le cache en écriture ( [[:​old:​hdparm|hdparm]] -WO )
 +
 +=== benchmark ===
 +^write cache ^barrier^resultat^
 +
 +==== swap ====
 +
 +if m< 2 then S = 2m else S= M+2
 +
 +ne pas modifier la swap en production, mais plutôt en mode //rescue//.
 +
 +# vim: set filetype=dokuwiki:​
  
systemedefichiers.txt · Dernière modification: 2016/03/25 20:29 (modification externe)