Outils pour utilisateurs

Outils du site


all:bibles:linux:hdd

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
all:bibles:linux:hdd [2024/07/01 08:41] – [Disque saturé] omeylhocall:bibles:linux:hdd [2025/02/20 14:30] (Version actuelle) – [Avec process en cours] omeylhoc
Ligne 1: Ligne 1:
 +====== Partitions/File system ======
  
 +----
 +
 +<note warning>Attention lors des manipulations de toujours bien identifier le disque /dev/sdx et de ne surtout pas se tromper lors des commandes.</note>
 +
 +----
 +
 +===== Partitionnement disque =====
 +
 +==== Partitionnement MBR (Master Boot Record) ====
 +
 +=== Table de partition ===
 +
 +La table de partitions principale est contenue dans le tout premier secteur du support dit secteur d'amorçage. Chaque entrée d'une table de partitions contient l'adresse de début de la partition et sa taille. Il peut s'agir de partitions primaires, qui contiendront un système de fichiers, ou de paritions étendues, qui contiendront à leur tour une table de partitions ayant la même structure que la table principale.
 +
 +=== Partitions primaires ===
 +
 +Dans la table de partitions principale, on peut créer au plus quatre partitions, qui sont ou bien quatre partitions primaires, ou bien une à trois partitions primaires associée(s) à une partition étendue (généralement la dernière). Une partition étendue permet de s'affranchir de la limite historique de quatre partitions par support.
 +
 +<note>La partition d'amorçage d'un système Windows est forcement la première partition primaire.</note>
 +
 +=== Partition étendue, partitions secondaires ===
 +
 +Lorsque l'on a besoin de plus de quatre partitions, il faut donc créer une partition étendue. Cette dernière est simplement une partition primaire spéciale qui va contenir à son tour des partitions secondaires (souvent appelées partitions logiques). L'outil fdisk sous Linux gère jusqu'à 60 partitions : trois partitions principales et une partition étendue contenant 56 partition logiques.
 +
 +==== Partitionnement GPT (GUID Partition Table) ====
 +
 +Pas de limite à 4 partitions, limite à 128 partitions sous Windows 64 bits.
 +En mode GPT, les informations concernant la table de partitionnement sont stockées dans un entête GPT, mais pour garantir une compatibilité (avec les logiciels gérant MBR mais non GPT), GPT maintient une entrée MBR (dite protectrice car englobant la totalité du disque) suivie de l'entête d'une partition primaire, le véritable début de la table de partitionnement. 
 +
 +==== Identification disque ====
 +
 +Identification du disque et obtention de la référence UUID :
 +
 +<code bash>
 +sudo blkid
 +</code>
 +
 +==== fdisk (jusqu'à 2 To) ====
 +
 +<code bash>
 +sudo fdisk /dev/sdx
 +</code>
 +
 +Création d’une partition en tapant n puis p pour partition primaire\\
 +Numéro de partition 1\\
 +Cylindre de début : laisser par défaut\\
 +Cylindre de fin : laisser par défaut pour tout le disque ou bien nbre de cylindre ou taille en Mo (ex : +500M)\\
 +Enfin pour enregistrer les modifications et quitter taper w.
 +
 +<note tip>Taper m pour obtenir de l'aide sur les commandes disponibles.</note>
 +
 +=== Lister les partitions ===
 +
 +<code bash>
 +sudo fdisk -l
 +</code>
 +
 +==== parted (à partir de 2 To) ====
 +
 +<code bash>
 +sudo parted /dev/sdx
 +</code>
 +
 +  * affiche la table de partition
 +<code bash>
 +print
 +</code>
 +
 +  * création d’un nouveau label du type gpt, msdos, bsd, mac, pc98, sun ou loop (raw disk access)
 +
 +<code bash>
 +mklabel <type>
 +</code>
 +
 +  * création d’une partition primaire utilisant toute la taille du disque avec un filesystem ext4
 +
 +<code bash>
 +mkpart primary ext4 0GB 100%
 +</code>
 +
 +  * donne un nom à la partition 1
 +
 +<code bash>
 +name 1 <nom>
 +</code>
 +
 +  * rend la partition 1 bootable. Partitions 1 à 4 pour les primaires et à partir de 5 les partitions étendues.
 +
 +<code bash>
 +set 1 boot on
 +</code> 
 +
 +=== Lister les partitions ===
 +
 +<code bash>
 +sudo parted -ls
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Système de fichiers =====
 +
 +==== Différents file system====
 +
 +=== FAT16 ===
 +
 +  * Taille maximum partition : 2 Go (voir 4 Go)
 +  * Taille maximum fichier : 4 Go
 +  * Taille maximale nom de fichier : 8.3 étendu à 255 caractères avec VFAT
 +  * Nombre maximum de fichier au total : 65 518
 +
 +=== FAT32 ===
 +
 +  * Taille maximum partition : 2 To
 +  * Taille maximum fichier : 4 Go 
 +  * Taille maximale nom de fichier : 255 caractères (UTF-16)
 +  * Nombre maximum de fichier par répertoire : 65 534 (en incluant les entrée répertoire courant et répertoire parent)
 +  * Nombre maximum de fichier au total : 2 <sup>28</sup> (268 000 000)
 +
 +=== NTFS ===
 +
 +  * Taille maximum partition : 256 To
 +  * Taille maximum fichier : 16 To
 +  * Taille maximale nom de fichier : 255 caractères (UTF-16)
 +  * Nombre maximum de fichier au total : 2 <sup>32</sup> - 1 (4 294 967 295)
 +
 +=== ext4 ===
 +
 +  * Taille maximum partition : 16 To
 +  * Taille maximum fichier : 16 To
 +  * Taille maximale nom de fichier : 255 octets
 +  * Nombre maximum de fichier au total : 2 <sup>32</sup>
 +
 +=== Btrfs ===
 +
 +  * Taille maximum partition : 16 Eio
 +  * Taille maximum fichier : 16 Eio
 +  * Taille maximale nom de fichier : 255 octets
 +  * Nombre maximum de fichier au total : 2 <sup>64</sup>
 +
 +=== XFS ===
 +
 +  * Taille maximum partition : 16 Eio
 +  * Taille maximum fichier : 8 Eio
 +  * Taille maximale nom de fichier : 255 octets
 +
 +=== ZFS===
 +
 +  * Taille maximum partition : 16 Eio
 +  * Taille maximum fichier : 16 Eio
 +  * Taille maximale nom de fichier : 255 octets
 +  * Nombre maximum de fichier au total : 2 <sup>48</sup>
 +
 +==== Formatage ====
 +
 +<code bash>
 +sudo mkfs /dev/sdxn –t ext4 
 +</code> 
 +
 +Avec « x » lettre du disque et « n »  numéro de partition.
 +
 +Pour le format xfs installer le paquet xfsprogs :
 +
 +<code bash>
 +sudo apt-get install xfsprogs
 +sudo mkfs /dev/sdxn –t xfs
 +</code> 
 +
 +==== Label ====
 +
 +=== ext2/ext3 ===
 +
 +<code bash>
 +sudo apt install e2fsprogs
 +sudo e2label /dev/sdxy nouveau_nom
 +</code>
 +
 +=== FAT32 ===
 +
 +<code bash>
 +sudo apt install mtools
 +sudo mlabel -i /dev/sdxy ::nouveau_nom
 +</code>
 +
 +=== NTFS ===
 +
 +<code bash>
 +sudo apt install ntfsprogs
 +sudo ntfslabel /dev/sdxy nouveau_nom
 +</code>
 +
 +==== Vérification ====
 +
 +=== Manuel ===
 +
 +Vérification d'une partition non montée :
 +
 +<code bash>
 +sudo e2fsck /dev/sdxn
 +</code>
 +
 +=== Automatique ===
 +
 +Vérification tous les 90 jours ou tous les 500 montages :
 +
 +<code bash>
 +sudo tune2fs –i 90d –c 500 /dev/sdxn
 +</code>
 +
 +=== Interrogation paramètres ===
 +
 +Vérifier les paramètres « Maximum mount count » et « Check interval » suite à la commande :
 +
 +<code bash>
 +sudo dumpe2fs -h /dev/sdxn
 +</code>
 +
 +==== SWAP ====
 +
 +[[https://doc.ubuntu-fr.org/swap|Source]]
 +
 +Pour définir une partition ou un fichier comme espace d’échange : 
 +
 +<code bash>
 +sudo mkswap /dev/sda6
 +</code>
 +
 +Pour activer la partition d’échange : 
 +
 +<code bash>
 +sudo swapon /dev/sda6
 +</code>
 +
 +A ajouter dans le fichier /etc/fstab pour prise en compte permanente.
 +
 +==== Interrogation ====
 +
 +| file –s /dev/sda1  | Retourne le système de fichiers de la partition  |
 +| lsblk -f  | affiche les filesystems des devices block  |
 +| lsblk -m  | affiche les propriétaires et les droits associés des devices block  |
 +| lsblk -t  | affiche la topologie des devices block  |
 +| df -h  | affiche l’utilisation des différents systèmes de fichiers |
 +
 +==== Echange de fichiers avec MAC ====
 +
 +Installer les paquets suivants :
 +
 +<code bash>
 +sudo apt-get install hfsprogs hfsutils
 +</code>
 +
 +Utiliser le format HFS+ avec gparted ou autre.
 +
 +==== Arborescence filesystem linux ====
 +
 +| /bin  | commandes disponible en runlevel 1 |
 +| /sbin  | autres commandes indispensables au système |
 +| /usr  | binaires pour les utilisateurs |
 +| /opt  | binaires non système |
 +| /lib  | librairies |
 +| /sys  | ensemble du système tel que vu par le noyau Linux |
 +| /proc  | répertoire virtuel, représentation des process en cours |
 +| /dev  | devices |
 +| /var  | log, e-mail, spool d’impression,… |
 +| /tmp  | espace temporaire (effacé au reboot) |
 +| /home  | home dir des utilisateurs |
 +| /etc  | fichiers de configuration |
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Montage =====
 +
 +==== Montage temporaire ====
 +
 +Utilisation de la commande mount :
 +
 +<code bash>
 +sudo mount /dev/sdb1 /mnt
 +</code> 
 +
 +Pour défaire le montage on peut préciser le point de montage ou bien l'objet du montage :
 +
 +<code bash>
 +sudo umount /mnt
 +sudo umount /dev/sdb1
 +</code> 
 +
 +<note important>Après redémarrage le montage sera perdu.</note>
 +
 +==== Montage persistant ====
 +
 +<note warning>Attention des modifications erronées dans la fstab peuvent empêcher le système de redémarrer.
 +</note>
 +
 +Afin de rendre persistant un montage il faut utiliser le fichier <color #00a2e8>/etc/fstab</color>. Celui-ci contient les informations suivantes :
 +
 +<code>
 +<file system>  <mount point>   <type>  <options>         <dump>  <pass>
 +UUID=xxxxxxx   /                ext4   errors=remount-ro    0       1
 +UUID=yyyyyyy   none             swap   sw                         0
 +</code>
 +
 +=== File system ===
 +
 +Il est préférable d'indiquer l'UUID obtenu par la commande **blkid** plutôt qu'un chemin en dur du type <color #00a2e8>/dev/sda1</color>. En effet ce dernier peut changer lors de l'ajout d'un nouveau device.
 +
 +=== Mount point ===
 +
 +Point de montage dans l'arborescence.
 +
 +=== Type ===
 +
 +Indique le format de la partition.
 +
 +|  ext2,ext3,ext4,xfs  | Format linux                     |
 +|  swap                | Swap linux                       |
 +|  tmpfs               | Filesyste temporaire en mémoire  |
 +|  fat                 | Windows fat16                    |
 +|  vfat                | Windows fat32                    |
 +|  ntfs                | Windows ntfs                     |
 +|  hfsplus             | MAC                              |
 +|  iso9660             | Disques                          |
 +
 +=== Options ===
 +
 +Les options s'appliquent en fonction des systèmes de fichiers.
 +
 +^ option  ^ Description  ^ filesystem  ^
 +| defaults  | Correspond à rw,suid,dev,exec,auto,nouser,async  | tous  |
 +| **rw**/ro  | Montage en lecture/écriture (par défaut) ou lecture seule  | tous  |
 +| suid/nosuid  | Les bits suid et sgid sont pris en compte (ou non). Relatif aux droits donnés aux exécutables sur la partition  | tous  |
 +| **dev**/nodev  | Interprète ou non les fichiers spéciaux de périphériques présents sur le système (par défaut)  | tous  |
 +| **exec**/noexec  | Autorise l'exécution des programmes (par défaut)  | tous  |
 +| **auto**/noauto  | Montage automatique (ou non) lors d'un appel mount -a (par défaut)  | tous  |
 +| **nouser**  | Seul le compte root peut monter/démonter le système de fichier (par défaut)  | tous  |
 +| _netdev  | Le système de fichiers est sur une machine qui nécessite un accès réseau. Cela indique au système d'attendre que la configuration réseau soit active avant de procéder au montage  | ?  |
 +| **async**  | Montage asynchrone (par défaut)  | tous  |
 +| **atime**/noatime  | Inscrit (ou non) la date d'accès (préférer noatime pour les SSD)  | norme POSIX  |
 +| sw  | Montage des partitions swap  | swap  |
 +| discard  | active le TRIM sur les partitions SSD (à rajouter manuellement)  | ext4,brfs (SSD)  |
 +
 +=== Dump ===
 +
 +Utilisé pour les sauvegardes. Laisser 0.
 +
 +=== Pass ===
 +
 +Donne l'ordre de vérification au démarrage.
 +
 +|  0  | swap et partitions windows : pas de vérification |
 +|  1  | racine  |
 +|  2  | autres partitions linux  |
 +
 +=== Prise en compte des modifications ===
 +
 +Avant tout redémarrage toujours tester les modifications de la fstab via la commande :
 +
 +<code bash>
 +mount -a
 +</code> 
 +
 +==== Sécurité ====
 +
 +| /tmp   | peut être monté avec l'option noexec pour interdire l'exécution à partir de ce répertoire  |
 +| /usr  | monter en read-only pour sécuriser une fois l'installation des softs terminés  |
 +
 +==== Montages particuliers ====
 +
 +=== Monter un fichier ===
 +
 +Pour monter un fichier comme une image iso il faut utiliser l'option **loop**
 +
 +<code bash>
 +mount -o loop image.iso /mnt
 +</code>
 +
 +=== Monter un répertoire ===
 +
 +Pour remonter un répertoire ailleurs dans l'arborescence en read only :
 +
 +<code bash>
 +mount --bind olddir newdir
 +mount -o remount,ro,bind olddir newdir
 +</code>
 +
 +Ou pour un montage persistent via la fstab :
 +
 +<code>
 +olddir  newdir  none  bind,ro
 +</code>
 +
 +==== Interrogation ====
 +
 +| df -h  | Liste les systèmes de fichiers  |
 +| mount  | Liste les montages  |
 +| mount %%|%% column -t  | idem plus lisible  |
 +| findmnt  | Liste les montages de manière hiérarchique  |
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Fragmentation =====
 +
 +==== Interrogation ====
 +
 +Vérifier le type de système de fichiers à l'aide le commande :
 +
 +<code bash>
 +blkid
 +</code>
 +
 +=== Système de fichier ext4 ===
 +
 +<code bash>
 +sudo e4defrag -c /localisation
 +</code>
 +
 +A la fin on obtient un « Fragmentation score » :
 +
 +  * de  0 à 30 : le système de fichiers n'est pas fragmenté.
 +  * de 31 à 55 : le système de fichiers est un peu fragmenté.
 +  * à partir de 56 : le système de fichiers devrait être défragmenté.
 +
 +=== Système de fichier xfs ===
 +
 +<code bash>
 +xfs_db -r /dev/sdxn
 +xfs_db> frag -d     ==> répertoires
 +xfs_db> frag -f     ==> fichiers
 +</code>
 +
 +==== Défragmentation ====
 +
 +=== Système de fichier ext4 ===
 +
 +<code bash>
 +sudo e4defrag /localisation
 +</code>
 +
 +=== Système de fichier xfs ===
 +
 +<code bash>
 +xfs_fsr /dev/sdxn
 +xfs_fsr               ==> défragmentation de tous les systèmes xf montés
 +</code>
 +
 +==== Sources ====
 +
 +  * [[https://www.rootusers.com/how-to-defragment-an-xfs-file-system/|xfs]]
 +  * [[https://www.hecticgeek.com/defragment-ext4-file-systems-using-e4defrag-ubuntu/|ext4]]
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Espace disque =====
 +
 +==== Interrogation ====
 +
 +=== En volume ===
 +
 +| df -h  | Affiche le taux d’occupation des partitions en terme de taille  |
 +| du -sh *  | Affiche la taille des répertoires/fichiers  |
 +
 +=== En nombre d'inodes ===
 +
 +| df –i                         | Affiche le taux d’occupation des partitions en terme d’inodes  |                                                                                  |
 +| du --inodes -d 3 /  %%|%% sort –n  | Affiche la liste triée des répertoires/fichiers avec le nombre d’inodes utilisé  |
 +
 +==== Disque saturé ====
 +
 +Pour résoudre le problème d'un disque saturé on utilisera les commandes suivantes :
 +
 +<code bash>
 +df -h     # pour vérifier l'espace libre sur les partitions
 +du -sh *  # pour vérifier l'espace pris par les différents fichiers
 +ls -alhS  # lister les fichiers par ordre de taille 
 +ncdu      # idem mais graphique
 +lsof +L1  # pour lister les fichiers supprimés qui sont encore ouvert par des process
 +</code>
 +==== Augmenter la taille de la partition / ====
 +
 +  * Augmenter la taille du disque virtuel
 +  * Identifier le disque et la partition à agrandir
 +  * Redimensionner la partition (exemple pour la partition 1)
 +
 +<code bash>
 +sudo parted /dev/<disque>
 +resizepart 1 100%
 +</code>
 +
 +  * Etendre le système de fichier
 +
 +<code bash>
 +sudo resize2fs /dev/root
 +</code>
 +
 +==== Diminuer la taille d'une partition ====
 +
 +=== Démonter la partition ===
 +
 +<code bash>
 +sudo umount /dev/sdxn
 +</code>
 +
 +=== Vérification du système de fichier ===
 +
 +<code bash>
 +sudo e2fsck -f /dev/sdxn
 +</code>
 +
 +=== Redimensionnement du système de fichiers ===
 +
 +<code bash>
 +sudo resize2fs /dev/sdxn <nouvelle taille>
 +</code>
 +
 +=== Redimensionnement partition ===
 +
 +Utiliser gparted.
 +
 +==== Copier un système linux sur un disque plus petit ====
 +
 +[[http://horyax.fr/copier-une-installation-linux.html|source]]
 +
 +Démarrer un live CD avec les 2 disques accessibles.
 +
 +=== Préparation disque ===
 +
 +Créer la (ou les) partition de destination, la formater et la rendre bootable en positionnant le drapeau **boot**. 
 +
 +=== Copier le système de fichiers ===
 +
 +Monter les 2 disques sous /mnt/src et /mnt/dst puis copier le système de fichiers :
 +
 +<code bash>
 +cd /mnt/src
 +cp -dpRx * /mnt/dst
 +</code>
 +
 +=== Adaptation fstab ===
 +
 +Lister les uuid :
 +
 +<code bash>
 +sudo blkid
 +</code>
 +
 +Adapter le fichier <color #00a2e8>/mnt/dst/etc/fstab</color> avec les nouveaux UUID.
 +
 +=== GRUB ===
 +
 +Reconstruire un grub adapté :
 +
 +<code bash>
 +sudo mount --bind /dev /mnt/dst/dev
 +sudo mount --bind /proc /mnt/dst/proc
 +sudo chroot /mnt/dst
 +sudo grub-mkconfig -o /boot/grub/grub.cfg
 +grub-install /dev/sdx
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== LVM =====
 +
 +<note tip>PV : Physical Volume \\ VG : Volume Group \\ LV : Logical Volume</note>
 +
 +==== Création ====
 +
 +<code bash>
 +pvcreate /dev/sdxn
 +pvdisplay
 +vgcreate vgname /dev/sdxn
 +vgdisplay
 +lvcreate –n lvname –L 50g vgname
 +lvdisplay
 +mkfs –t ext4 /dev/vgname/lvname
 +</code>
 +
 +==== Extension ====
 +
 +=== Démonter le volume ===
 +
 +<code bash>
 +umount /dev/mapper/vgname
 +</code>
 +
 +=== Vérifier le système de fichiers ===
 +
 +<code bash>
 +e2fsck -f /dev/mapper/vgname
 +</code>
 +
 +=== Etendre le volume ===
 +
 +Ici on utilise tout l'espcae libre restant du volume group
 +
 +<code bash>
 +lvextend -l +100%FREE /dev/mapper/vgname
 +</code>
 +
 +=== Etendre le système de fichier ===
 +
 +<code bash>
 +resize2fs /dev/mapper/vgname
 +</code>
 +
 +Pour un système de fichier xfs on utilisera la commande xfs_growfs qui fonctionne avec le système de fichier monté. Ainsi pour étendre le filesystem root avec tout l'espace disponible :
 +
 +<code bash>
 +xfs_growfs /dev/centos/root
 +</code>
 +
 +=== Remonter le système de fichier ===
 +
 +Si déjà dans la fstab on se contente de :
 +
 +<code bash>
 +mount -a
 +</code>
 +
 +==== Augmenter taille partition ====
 +
 +Après augmentation de la taille sur une vm par exemple.
 +
 +=== Forcer le système à relire les informations liées aux disques ===
 +
 +<code bash>
 +partprobe
 +</code>
 +
 +=== Créer une partition à la suite des autres ===
 +
 +<code bash>
 +cfdisk
 +</code>
 +
 +=== Vérifier le type des partitions ===
 +
 +<code bash>
 +df -hT
 +</code>
 +
 +=== Formater la partition avec le type désiré ===
 +
 +<code bash>
 +mkfs.ext4 /dev/sdxn
 +</code>
 +
 +=== Ajouter la partition dans le VG ===
 +
 +Le Physical Volume est créé automatiquement.
 +
 +<code bash>
 +vgextend <vgname> /dev/sdxn
 +vgdisplay
 +</code>
 +
 +=== Extension du LV ===
 +
 +<code bash>
 +lvextend –l +100%FREE <lvname>
 +lvdisplay
 +</code>
 +
 +=== Redimensionnement du système de fichiers ===
 +
 +<code bash>
 +resize2fs <lvname>
 +</code>
 +
 +=== Vérification du résultat ===
 +
 +<code bash>
 +df -hT
 +</code>
 +
 +==== Snapshot ====
 +
 +<code bash>
 +lvcreate --size 1g --snapshot -n <nomdusnapshot> /dev/vg1/data
 +lvcreate –L 1g –s –n <nomdusnapshot> /dev/vg1/data
 +mount -o ro,auto /dev/vg1/lv-snap3 /local/snapshot/3
 +</code>
 +
 +----
 +
 +===== Récupération fichier =====
 +
 +==== Avec process en cours ====
 +
 +Il est possible de retrouver le contenu d'un fichier qui a été ouvert par un process qui est toujours en cours d'exécution en allant voir son contexte en mémoire. Exemple un script UPLOAD.sh lance un process java. Après suppression du fichier :
 +
 +  * Lister les fichiers effacés
 +
 +<code bash>
 +lsof | grep deleted
 +bash      363415                  ec2-user  254r      REG              202,4       103   25488824 /home/ec2-user/UPLOAD.sh (deleted)
 +</code>
 +
 +  * Récupérer le numéro de processus et aller chercher le file descriptor dans le contexte en mémoire 
 +
 +<code bash>
 +cd /proc/<PID>/fd
 +</code>
 +
 +  * Copier le contenu du fichier pour le sauvegarder
 +
 +<code bash>
 +cat <fd>
 +# soit pour l'exemple ci-dessus :
 +cat /proc/363415/fd/254
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Investigation HDD défectueux =====
 +
 +==== Affichage données SMART ====
 +
 +<code>
 +smartctl –a /dev/sda  : liste toutes les données SMART
 +smartctl –x /dev/sda  : liste  toutes les données SMART et non SMART du device
 +</code>
 +
 +==== Vérification d'un disque ====
 +
 +<code bash>
 +sudo badblocks -s -v -c 10240 /dev/sdx
 +</code>
 +
 +^ option  ^ fonction  ^
 +| -s  | Affiche l'état d'avancement  |
 +| -v  | Affiche toutes les erreurs  |
 +| -c  | Permet de déterminer la taille des blocs à tester  |
 +
 +Une fois le test terminé, le nombre de secteurs défectueux est affiché.
 +
 +==== Récupération table de partition ====
 +
 +[[https://doc.ubuntu-fr.org/gpart|Source]]
 +
 +=== Installation package gpart ===
 +
 +<code bash>
 +sudo apt-get install gpart 
 +sudo gpart /dev/sdx
 +</code>
 +
 +=== Lecture table de partition ===
 +
 +<code bash>
 +sudo gpart /dev/sdx
 +</code>
 +
 +=== Recréation de la table ===
 +
 +Si le résultat de la lecture de la table semble cohérent on peut tenter de recréer la table :
 +
 +<code bash>
 +sudo gpart -W /dev/sdx /dev/sdx
 +</code>
 +
 +<note important>Cette étape peut être très longue.</note>
 +
 +==== Récupération descripteur d'un système de fichier ====
 +
 +=== Message d'erreur ===
 +
 +Message d'erreur vu avec la commande dmesg : <color #ed1c24>EXT4-fs: group descriptors corrupted!</color>
 +
 +=== Recherche des sauvegardes du descripteur ===
 +
 +<code bash>
 +sudo mke2fs -n /dev/sdxn
 +    Superblock backups stored on blocks:
 +    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
 +</code>
 +
 +=== Restauration du superblock à partir d'une des sauvegardes ===
 +
 +<code bash>
 +sudo e2fsck -b<block number> /dev/sdxn
 +</code>
 +
 +==== Récupération données sur HDD défectueux ====
 +
 +[[https://doc.ubuntu-fr.org/testdisk|Source]]
 +
 +=== Installer le package testdisk ===
 +
 +<code bash>
 +sudo apt-get install testdisk
 +</code>
 +
 +=== Lancer testdisk ===
 +
 +<code bash>
 +sudo testdisk
 +</code>
 +
 +  * Création fichier de log ... ou pas
 +
 +[create]
 +
 +  * Sélectionner le périphérique
 +
 +[Proceed]
 +
 +  * Sélectionner le type de partition
 +
 +[Intel]
 +
 +  * Lancer l'analyse
 +
 +[Analyse]\\
 +[Quick Search]
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Test performances =====
 +
 +<code bash>
 +sudo hdparm -t --direct /dev/sdx
 +dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync  # test les performances sur la création d'un fichier d'1 Go
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]
 +
 +===== Commande dd =====
 +
 +[[https://doc.ubuntu-fr.org/dd|Source]]
 +
 +<note tip>Possibilité d'installer la version améliorée : dcfldd</note>
 +
 +==== Syntaxe ====
 +
 +<code bash>
 +sudo dd if=<input> of=<output> bs=<block size> skip= seek= conv=param1,param2,...
 +</code>
 +
 +  * if : périphérique source
 +  * of : périphérique destination
 +  * bs : taille des block. Puissance de 2 supérieure à 512. Sur du matériel moderne bs=4096 est une bonne valeur (équivalent à bs=4k).
 +  * skip : saute des blocs d'entrée au début du média.
 +  * seek : saute autant de blocs sur le média de sortie avant d'écrire . 
 +  * conv=notrunc : ne pas tronquer le fichier en sortie
 +  * conv=noerror : continuer en cas d'erreur de lecture (source défectueuse).
 +
 +==== Copier une partition sur une autre ====
 +
 +<code bash>
 +sudo dd if=/dev/sdxn of=/dev/sdym bs=64k conv=notrunc status=progress
 +</code>
 +
 +==== Cloner un disque dur entier ====
 +
 +<code bash>
 +sudo dd if=/dev/sdx of=/dev/sdy conv=notrunc status=progress
 +</code>
 +
 +==== Copier un disque sur un disque plus petit ====
 +
 +=== Clonezilla ===
 +
 +  * Faire une copie de disque vers disque.
 +  * Cocher l'option -icds « Ne pas vérifier le disque cible avant de créer la table de partition »
 +
 +{{ :all:bibles:linux:clonezilla1.jpg?600 |}}
 +
 +  * Dans un des panels suivants choisir l'option -k1 « Créer la table de partition proportionnellement »
 +
 +{{ :all:bibles:linux:clonezilla2.jpg?600 |}}
 +
 +=== Manuellement ===
 +
 +Copie d'un disque avec une seule partition, on saute la table de partition lors de la copie. En agissant ainsi, on laisse intacts les 4 premiers Ko sur chaque disque (on ne veut pas dire à un lecteur qu'il est plus gros qu'il n'est en réalité en écrivant une table de partition depuis un lecteur plus gros vers un lecteur plus petit).
 + 
 +<code bash>
 +dd if=/dev/sdx skip=1 of=/dev/sdy seek=1 bs=4k status=progress
 +</code>
 +
 +==== Copier un disque sur un disque plus grand ====
 +
 +Si vous copiez une partition plus petite vers une plus grande, la plus grande partition affichera sa taille correcte avec :
 +
 +<code bash>
 +fdisk -l
 +</code>
 +
 +Mais pas avec :
 +
 +<code bash>
 +df -h
 +</code>
 +
 +Cela parce que fdisk lit la table de partitions et df lit l'info de format. Pour palier ce problème après avoir copier le disque :
 +
 +<code bash>
 +e2fsck -f /dev/sdxn
 +resize2fs /dev/sdxn
 +</code>
 +
 +==== Sauvegarde d'une partition dans un fichier ====
 +
 +<code bash>
 +sudo dd if=/dev/sdxn of=fichier.img bs=64k
 +</code>
 +
 +==== Créer une image iso à partir d'un CD/DVD ====
 +
 +<code bash>
 +dd if=/dev/dvd of=image.iso bs=2048
 +</code>
 +
 +==== Effacer un disque dur ====
 +
 +=== Effacement simple ===
 +
 +<code bash>
 +dd if=/dev/zero of=/dev/sdx conv=notrunc
 +</code>
 +
 +=== Effacement sécurisé ===
 +
 +<code bash>
 +for n in `seq 7`; do dd if=/dev/urandom of=/dev/sdx bs=8b conv=notrunc; done
 +</code>
 +
 +On réalise 7 passes d'inscriptions aléatoires de caractères sur tout le disque. 
 +
 +==== Créer un fichier d'une taille donnée ====
 +
 +=== Fichier de zéro ===
 +
 +Création d'un fichier de 100 Mo de 0 (100 000 blocs de 1 Ko) :
 +
 +<code bash>
 +dd if=/dev/zero of=fichier bs=1k count=100000
 +</code>
 +
 +=== Fichier au contenu aléatoire ===
 +
 +Création d'un fichier de 100 octets aléatoires :
 +
 +<code bash>
 +dd if=/dev/urandom of=fichier bs=1 count=100
 +</code>
 +
 +Création d'un fichier de 10 Go aléatoires :
 +
 +<code bash>
 +dd if=/dev/urandom of=fichier bs=1024 count=10485760
 +</code>
 +
 +=== Fichier vide ===
 +
 +Il s'agit d'un fichier dont la taille apparait bien avec la commande <color #00a2e8>//ls//</color> mais dont la taille réelle sur le disque est nulle avec la commande <color #00a2e8>//du -sh//</color>
 +Fichier vide de 10 Mo :
 +
 +<code bash>
 +dd if=/dev/zero of=10M.bin bs=1024 count=0 seek=$[1024*10]
 +</code>
 +
 +Fichier vide de 100 Mo :
 +
 +<code bash>
 +dd if=/dev/zero of=100M.bin bs=1024 count=0 seek=$[1024*100]
 +</code>
 +
 +Fichier vide de 1 Go :
 +
 +<code bash>
 +dd if=/dev/zero of=1G.bin bs=1024 count=0 seek=$[1024*1024]
 +</code>
 +
 +==== Convertir un fichier en minuscule ====
 +
 +<code bash>
 +dd if=Fichier_Source of=Fichier_Cible conv=ucase
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:hdd|Haut de page]]