# Infra avancée

## Cours 1

Redimensionner une partition sur Linux

```
# Pour EXT2/3/4
sudo resize2fs
# Pour XFS
sudo xfs_growfs
```

Traiter les disques sur MDADM
```
# Déclarer disque défectueux
sudo mdadm --fail /dev/
# Le retirer
sudo mdadm --remove /dev/
# Le rajouter
sudo mdadm --add /dev/mdx /dev/sdx # AJout comme Hot-Spare
```

Pour enlever les traces du raid :

```
sudo mdadm --zero-superblock /dev/sdx
```

## Exercice 1

Tuto parfait : https://ruan.dev/blog/2022/06/29/create-a-raid5-array-with-mdadm-on-linux

```
sudo apt install mdadm -y

lsblk
> sde, sdg, sdh

fdisk /dev/sdx
    n           # ajouter une -n-ouvelle partition
    p           # partition -p-rimaire
    1           # index de la partition
    [default]   # bloc de début
    [default]   # bloc de fin

    t           # modifier le -t-ype d'une partition
    L           # -l-iste tous les codes hexa
    fd          # RAID Linux auto
 
    w           # écrire (-w-rite) la table sur le disque et quitter

sudo mdadm --create /dev/md127 --level=5 --raid-devices=3 /dev/sde1 /dev/sdg1 /dev/sdh1

mkfs.ext4 /dev/md127

sudo mount /dev/md127 /mnt
```

Eteindre, ajouter un disque, étendre la partition
```
lsblk
> sdh

fdisk /dev/sdh
    n
    p
    1
    [default]
    [default]
    
    t
    fd
    
    w
    
sudo mdadm --add /dev/md127 /dev/sdh1

sudo mdadm --detail /dev/md127
>  Active Devices : 3
> Working Devices : 4
>   Spare Devices : 1

sudo mdadm --add /dev/md127 --raid-devices=4

sudo mdadm --detail /dev/md127
>  Active Devices : 4
> Working Devices : 4
>   Spare Devices : 0

sudo e2fsck -f /dev/md127

sudo resize2fs /dev/md127

sudo mount /dev/md127 /mnt/sauvegarde

df -h /mnt/sauvegarde
> Sys. de fichiers  Taille  Utilisé Dispo   Uti%    Monté sur
> /dev/md127        3,0G    28K     2,8G    1%      /mnt/sauvegarde
```

## Cours 2

### LVM

Créer volume LVM depuis disque physique

```
pvcreate /DEVICE1 /DEVICE2 /DEVICE3

# Intégrer ces volumes à un groupe de volume
vgcreate NOM_DU_VG /DEVICE1 /DEVICE2

# On découpe ces volumes
lvcreate -l TAILLE -n NOM_DU_LV NOM_DU_VG
```

VG et LV peuvent être accessibles par plusieurs chemins

`/dev/mapper/`

Identifier LV ou VG

```
# Identifier LV ou VG
sudo lvdisplay vgdisplay

sudo lvremove

sudo
```

Etendre VG

```
sudo vgdisplay

sudo vgextend NOM_DU_VG/PV_SUPPLEMENTAIRE

# Pour tester

```

Identifier le LV à étendre

```
sudo lvdisplay

sudo lvextend MON_VG/NOM_DU_LV /PV_SUPPLEMENTAIRE

# Option pour donner une taille délimitée
sudo lvextend -L +00M
```

Il faut redimensionner à chaud après l'extension avec `--resizefs` à chaud, toucher à un LV ne change pas la taille du système de fichiers.

Réduire un VG

```
sudo vgdisplay

sudo 
```

## Exercice 2

### Partie 1

A créer, avec chacun deux disques :
```
Nom MD      Taille  Type    FS      Nom                 VL1-nom     VL1-taille  VL1-mnt             VL2-nom     VL2-taille  VL2-mnt
-----------------------------------------------------------------------------------------------------------------------------------
/dev/md123  2GO     RAID1   btrfs   "Production"        "Current"   50%         /mnt/prod/Current   -           -           -
/dev/md124  2GO     RAID1   XFS     "Sauvegarde"        "Current"   100%        /mnt/sauv/current   -           -           -
/dev/md125  2GO     RAID1   EXT4    "Développement"     "x86_64"    60%         /mnt/dev/x86_64     "ARM"       40%         /mnt/dev/arm
/dev/md126  2GO     RAID1   EXT4    "Laboratoire"       "Current"   100%        /mnt/labo/current   -           -
```

Maintenant on colle les ressources.

Pour attribuer des % de taille aux LV :
```
sudo lvcreate -l 100%FREE  # Toute la place restante
sudo lvcreate -l 50%VG     # 50% de la taille totale du VG
sudo lvcreate -l 30%FREE   # 30% de la place restante ACTUELLE
```

-
```
sudo mdadm --create /dev/md12x --level=1/0 --raid-devices=2 /dev/sdx1 /dev/sdy1

sudo pvcreate /dev/md123
sudo vgcreate Production /dev/md123
sudo lvcreate -l 50%VG -n Current Production

sudo pvcreate /dev/md124
sudo vgcreate Sauvegarde /dev/md124
sudo lvcreate -l 100%VG -n Current Sauvegarde

sudo pvcreate /dev/md125
sudo vgcreate Developpement /dev/md125
sudo lvcreate -l 60%VG -n x86_64 Developpement
sudo lvcreate -l 100%FREE -n ARM Developpement

sudo pvcreate /dev/md126
sudo vgcreate Laboratoire /dev/md126
sudo lvcreate -l 100%VG -n Current Laboratoire

sudo lvs -o lv_name,vg_name,lv_size,attr

sudo mkfs.btrfs /dev/mapper/Production-Current
sudo mkfs.xfs /dev/mapper/Sauvegarde-Current
sudo mkfs.ext4 /dev/mapper/Developpement-x86_64
sudo mkfs.ext4 /dev/mapper/Developpement-ARM
sudo mkfs.ext4 /dev/mapper/Laboratoire-Current

sudo mount /dev/mapper/Production-Current /mnt/prod/current
sudo mount /dev/mapper/Sauvegarde-Current /mnt/sauv/current
sudo mount /dev/mapper/Developpement-x86_64 /mnt/dev/x86_64
sudo mount /dev/mapper/Developpement-ARM /mnt/dev/arm
sudo mount /dev/mapper/Laboratoire-Current /mnt/labo/current
```

### Partie 2

```
sudo mdadm --manage /dev/md123 --fail /dev/sdh

sudo mdadm --manage /dev/md123 --remove /dev/sdh

sudo sgdisk -Z /dev/sdi
sudo sgdisk -n1:0:0 -t1:fd00 /dev/sdi

sudo mdadm --manage /dev/md123 --add /dev/sdq
```

### Partie 3

```
sudo mdadm --add /dev/md126 /dev/sdi

sudo mdadm --grow /dev/md126 --raid-devices=3

sudo pvresize /dev/md126

sudo lvextend -l +100%FREE /dev/mapper/Laboratoire-Current

sudo resize2fs /dev/mapper/Laboratoire-Current
```

### Partie 4

```
sudo mdadm --add /dev/md123 /dev/sdj
```