Téléchargez l’image .iso de la dernière version LTS d’Ubuntu Server.
Installer l'iso sur une machine ou machine virtuelle (options par défaut).
Récupérer l'adresse réseau par la commande ip a
.
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:f0:b7:c9 brd ff:ff:ff:ff:ff:ff inet6 fe80::a00:27ff:fef0:b7c9/64 scope link valid_lft forever preferred_lft forever
Pour attribuer une IP statique à cette interface, créez le fichier /etc/netplan/60-lan_statique.yaml
:
# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: enp0s8: dhcp4: no dhcp6: no addresses: [192.168.0.1/24] gateway4: 0.0.0.0 nameservers: addresses: [127.0.0.1]
Appliquer la configuration par la commande :
sudo netplan apply
Ajouter l'adresse et le nom du client dans le fichier /erc/hosts
(par ex):
192.168.0.2 vm-client
ping serveur -> client et client -> seveur.
sudo apt-get update && sudo apt-get dist-upgrade
Éteignez la machine vm-serveur et dans VirtualBox, allez dans “configuration”.
Dans la section “Stockage”, cliquez sur “Ajouter un disque dur” au niveau de votre Contrôleur SATA puis sur “Créer un nouveau disque”. Laissez le type de fichier par défaut, choisissez un fichier de taille fixe, donnez-lui un nom et allouez-lui une taille de 1Go (oui d’accord, on ne stockera pas beaucoup de fichiers avec un disque dur pareil).
Maintenant que votre nouveau disque dur est “physiquement” créé, vous pouvez redémarrer le serveur vm-serveur .
Pour pouvoir utiliser votre nouveau disque, il vous reste à :
$ ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 avril 19 09:54 /dev/sda brw-rw---- 1 root disk 8, 1 avril 19 09:54 /dev/sda1 brw-rw---- 1 root disk 8, 2 avril 19 09:54 /dev/sda2 brw-rw---- 1 root disk 8, 16 avril 19 09:54 /dev/sdb
On ne trouve pas encore de /dev/sdb1 car nous n’avons pas encore créé de partition sur ce disque.
$ sudo gdisk -l /dev/sda #pour les informations sur le disque système de 10Go GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/sda: 20971520 sectors, 10.0 GiB Model: VBOX HARDDISK Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): E8F36744-0ECF-4822-90D4-362BA0BBE912 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 20971486 Partitions will be aligned on 2048-sector boundaries Total free space is 4029 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 4095 1024.0 KiB EF02 2 4096 20969471 10.0 GiB 8300 $ sudo gdisk -l /dev/sdb #pour les informations sur le disque additionnel de 1Go GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Disk /dev/sdb: 2097152 sectors, 1024.0 MiB Model: VBOX HARDDISK Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): F93AF0D3-EC3A-4A36-9A21-56CCCB2AD17A Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 2097118 Partitions will be aligned on 2048-sector boundaries Total free space is 2097085 sectors (1024.0 MiB) Number Start (sector) End (sector) Size Code Nam
Maintenant que vous êtes sûr que le disque additionnel dédié aux données est bien /dev/sdb :
$ sudo gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help): ? b back up GPT data to a file c change a partition's name d delete a partition i show detailed information on a partition l list known partition types n add a new partition o create a new empty GUID partition table (GPT) p print the partition table q quit without saving changes r recovery and transformation options (experts only) s sort partitions t change a partition's type code v verify disk w write table to disk and exit x extra functionality (experts only) ? print this men
Command (? for help): n Partition number (1-128, default 1): First sector (34-2097118, default = 2048) or {+-}size{KMGTP}: Last sector (2048-2097118, default = 2097118) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): Changed type of partition to 'Linux filesystem'
sudo mkfs -t ext4 /dev/sdb1
Exemple :
sudo su - #On devient root “à plein temps” mkdir -p /var/data1/non_monte #Création d’un premier répertoire de montage mkdir -p /mnt/mes_donnees/ #Création d’un deuxième répertoire de montage mount -t ext4 /dev/sdb1 /mnt/mes_donnees mkdir -p /mnt/mes_donnees/repertoire1
Ajouter la ligne suivante dans le fichier /etc/fstab
:
/dev/sdb1 /var/data1 ext4 defaults 0 0
sudo e2fsck -y /dev/sdb1
$ sudo tune2fs -l /dev/sdb1
Filesystem volume name: <none> Filesystem UUID: 623fac67-a7af-4ae5-9b1d-0fa958e6290 .......... Filesystem state: clean .......... Inode count: 65536 Block count: 261883 Reserved block count: 13094 Block size: 409
Sur des partitions très petites avec un grand nombre de fichiers, vous pouvez être à cours d’inodes avant d’être à court de blocs. Si vous avez des erreurs indiquant un “disque plein” alors que vous voyez qu’il vous reste de l’espace libre, pensez à vérifier vos inodes. Vous pouvez vérifier l’espace libre sur vos disques par la commande df -h
et le nombre d’inodes disponibles par la la commande df -hi
.
On peut utiliser tune2fs pour modifier tous ces attributs :
$ df -h /dev/sdb1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 991M 2.6M 922M 1% /var/data1 $ sudo tune2fs -m 0 -L shared_data /dev/sdb1 tune2fs 1.44.1 (24-Mar-2018) Setting reserved blocks percentage 0% (0 blocks) $ df -h /dev/sdb1 Filesystem Size Used Avail Use% Mounted on /dev/sdb1 991M 2.6M 973M 1% /var/data
Pour réduire une partition ext4, il est nécessaire qu’elle soit démontée :
$ sudo umount LABEL=shared_data #Équivalent à umount /dev/sdb1
$ sudo e2fsck -f /dev/sdb1 e2fsck 1.44.1 (24-Mar-2018) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information shared_data: 12/65536 files (0.0% non-contiguous), 8860/261883 block
$ sudo resize2fs /dev/sdb1 700M resize2fs 1.44.1 (24-Mar-2018) Resizing the filesystem on /dev/sdb1 to 179200 (4k) blocks. The filesystem on /dev/sdb1 is now 179200 (4k) blocks long
Suppression de la table de partition (cette opération ne touche pas aux données mais seulement à la table de partition):
$ sudo gdisk /dev/sdb GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Command (? for help): d ......
Créer la nouvelle partition :
Command (? for help): n Partition number (2-128, default 2): First sector (34-2097118, default = 1640448) or {+-}size{KMGTP}: Last sector (1640448-2097118, default = 2097118) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): 8200 Changed type of partition to 'Linux swap
Vérifiez que la table de partition est correcte :
Command (? for help): p Disk /dev/sdb: 2097152 sectors, 1024.0 MiB Model: VBOX HARDDISK Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 52A98F48-8F15-4DC8-8483-A65140F9AF00 Partition table holds up to 128 entries Main partition table begins at sector 2 and ends at sector 33 First usable sector is 34, last usable sector is 2097118 Partitions will be aligned on 2048-sector boundaries Total free space is 4061 sectors (2.0 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 1638400 799.0 MiB 8300 Linux filesystem 2 1640448 2097118 223.0 MiB 8200 Linux swap
Enregistrer les changements :
Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdb. The operation has completed successfully
Réajuster la taille du système de fichiers ext4 à la taille de la partition :
$ sudo resize2fs /dev/sdb1 e2fsck 1.44.1 (24-Mar-2018) Resizing the filesystem on /dev/sdb1 to 204544 (4k) blocks. The filesystem on /dev/sdb1 is now 204544 (4k) blocks long
Formatage de la partition de swap :
$ sudo mkswap /dev/sdb2 Setting up swapspace version 1, size = 223 MiB (233807872 bytes) no label, UUID=fe6fce3a-bc50-4121-95b7-f7112254d25a $ sudo swapon /dev/sdb2
Pour activer cette partition de swap au démarrage, ajoutez la ligne suivante à votre fichier /etc/fstab
:
/dev/sdb2 none swap sw 0 0
Ex : mise en place d'une solution RAID 1 avec trois disques :
/dev/sdb
dans le fichier /etc/fstab
puis relancer le serveur.
Créez le volume raid par la commande :
sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb /dev/sdc --spare-devices=1 /dev/sdd(RAID1, 2 disques en RAID, 1 disque en spare) Pour fixer les paramètres du RAID et éviter que le périphérique ne change de nom au prochain démarrage, rajouter la ligne suivante dans le fichier
/etc/mdadm/mdadm.conf
après le commentaire # definitions of existing MD arrays :
ARRAY /dev/md0 level=raid1 num-devices=2 spares=1 UUID=0e529b88:199915ed:e6e104c5:38db1f03 devices=/dev/sdb,/dev/sdc,/dev/sddInfos sur le RAID :
sudo mdadm --query --detail /dev/md0Pour que les modifications sur ce fichier soient prises en compte au prochain démarrage, lancer la commande :
$ sudo update-initramfs -uFormater le volume RAID comme n’importe quelle partition :
$ sudo mkfs -t ext4 /dev/md0 #Formatage $ sudo mount -t ext4 /dev/md0 /var/data1 #Montage $ sudo touch /var/data1/mon_premier_fichier_sur_raid #Création d’un fichier vid
Pour essayer, vous pouvez simuler la perte du disque /dev/sdb et vérifier que le disque /dev/sdd prend bien le relai automatiquement :
$ sudo mdadm --manage /dev/md0 --fail /dev/sdb $ sudo mdadm --query --detail /dev/md
Une fois que vous avez partitionné votre disque, il est laborieux et risqué de redimensionner les partitions et d’en ajouter de nouvelles. De plus, quand on manque de place dans une partition, on pourrait être tenté d’en ajouter une nouvelle mais on ne pourra pas répartir automatiquement les données sur les deux partitions. Il faudra créer un point de montage pour chaque partition et répartir manuellement nos données entre ces différents points de montage. Ça peut vite devenir compliqué à gérer...
LVM (logical Volume Management
)répond à ces problématiques et va vous permettre de gérer beaucoup plus facilement vos espaces de stockage.
Un volume physique peut être un disque entier, une partition ou un volume RAID. On doit “marquer” un volume physique pour pouvoir l’utiliser avec LVM.
ex : LVM avec un disque RAID
$ sudo umount /dev/md0 #Le volume doit être démonté $ sudo pvcreate /dev/md0 WARNING: ext4 signature detected on /dev/md0 at offset 1080. Wipe it? [y/n]: y Winping ext4 signature on /dev/md0 Physical volume “/dev/md0” successfully created
Informations sur les volumes physiques avec les commandes sudo pvs
ou sudo pvdisplay
.
Ensuite, vous regrouperez ces volumes physiques dans des groupes de volumes. Pour l’instant, vous allez créer un groupe de volumes appelé “raid-volume” qui ne contient que votre RAID. Vous pourrez plus tard ajouter dynamiquement n’importe quel volume physique à ce groupe.
$ sudo vgcreate raid-volume /dev/md0
Informations sur less groupes de volumes avec les commandes sudo vgs
ou sudo vgdisplay
.
Découper ces groupes de volumes en volumes logiques qui sont l’équivalent LVM des partitions.
Ex : Pour l’instant, vous allez créer un volume logique “data1” de 800Mo et un volume “data2” de 200Mo sur votre groupe de volume.
$ sudo lvcreate --name data1 --size 800M raid-volume $ sudo lvcreate --name data2 --size 200M raid-volume
Informations sur vos volumes logiques avec les commandes sudo lvs
ou sudo lvdisplay
.
toutes les commandes qui concernent :
pv*
vg*
lv*
Les volumes logiques fonctionnent comme des partitions. Pour chaque volume logique, LVM crée un fichier périphérique dans /dev sous la forme /dev/{groupe_de_volume}/{volume_logique}
. Pour les utiliser, il vous faut donc les formater et les monter.
$ sudo mkfs -t ext4 /dev/raid-volume/data1 $ sudo mount -t ext4 /dev/raid-volume/data1 /var/data1 $ sudo mkfs -t ext4 /dev/raid-volume/data2 $ sudo mkdir /var/data2 $ sudo mount -t ext4 /dev/raid-volume/data2 /var/data
Pour pouvoir réduire par exemple /var/data1 de 800Mo à 600Mo, il vous faut d’abord réduire le système de fichiers et ensuite réduire le volume logique. LVM vous permet de faire tout ça en une seule commande !
$ sudo lvreduce --size 600M --resizefs /dev/raid-volume/data1 Do you want to unmount “/var/data1” ? [Y|n] y fsck from util-linux 2.31.1 /dev/mapper/raid--volume-data1: 11/51296 files (0.0% non-contiguous), 7726/204800 blocks resize2fs 1.44.1 (24-Mar-2018) Resizing the filesystème on /dev/mapper/raid--volume-data1 to 153600 (4k) blocks. The filesystème on /dev/mapper/raid--volume-data1 is now 153600 (4k) blocks long. Size of logical volume raid-volume/data1 changed from 800.00 MiB (200 extents) to 600.00 MiB (150 extents). Logical volume raid-volume/data1 successfully resized
Éteignez votre serveur, ajoutez un nouveau disque de 1Go et rallumez-le.
Commencez par sortir le disque de spare /dev/sdb de votre RAID : il faudra simplement être plus réactif pour changer un disque qui tomberait en défaut ;)
$ sudo mdadm --manage /dev/md0 --fail /dev/sdb --remove /dev/sdb
Vous allez alors pouvoir utiliser ce disque /dev/sdb
“libéré” pour créer un RAID 1 avec le nouveau disque /dev/sde
$ sudo mdadm --create /dev/md1 --level=raid1 --raid-devices=2 /dev/sdb /dev/sde
Enfin, pensez à mettre votre fichier /etc/mdadm/mdadm.conf
à jour :
$ sudo pvcreate /dev/md1Ajoutez ce volume physique à votre groupe de volumes raid-volume par la commande :
$ sudo vgextend raid-volume /dev/md1Il ne vous reste plus qu’à étendre votre volume logique à la taille souhaitée sans vous soucier de savoir où sont placées les données :
$ sudo lvextend --size +1200M --resizefs /dev/raid-volume/data2
Un “snapshot” ou “instantané” en français est une image de l’état de votre volume logique à un instant t. Un snapshot est stocké sur le volume groupe donc il vous faut un peu d’espace non utilisé sur votre volume groupe.
$ sudo lvreduce --size -300M --resizefs /dev/raid-volume/data2 $ sudo dd if=/dev/zero of=/var/data2/fichier_5M bs=1k count=5000 $ sudo dd if=/dev/zero of=/var/data2/fichier_10M bs=1k count=1000
Ici, vous avez réduit le volume logique /dev/raid-volume/data2
de 300Mo et vous avez créé deux fichiers dans /var/data2
: un de 5Mo et un de 10Mo. Pour ça, vous avez utilisé la commande dd qui copie des données bit par bit.
Créez maintenant un snapshot appelé backup_ddmmyyyy
du volume logique /dev/raid-volume/data2
et allouez lui une taille de 100Mo par la commande :
$ sudo lvcreate --snapshot --name backup_ddmmyyyy --size 100M /dev/raid-volume/data2
Vous pouvez voir votre snapshot par les commandes sudo lvs
ou sudo lvdisplay
.
À sa création, un snapshot a une taille de 0. Il n’y a pas eu de copie des données, on a juste marqué le moment à partir duquel on va enregistrer les changements. Un snapshot est donc quasi-instantané même sur de très gros volumes de données. Ensuite, quand vous continuez à travailler, à ajouter, supprimer et modifier des fichiers sur votre volume logique, tous vos changements vont être enregistrés dans votre snapshot et ce dernier va grossir :
$ sudo rm /var/data2/fichier_10M && sudo lvs $ sudo rm /var/data2/fichier_5M && sudo lv
Vous pouvez ensuite utiliser votre snapshot comme n’importe quel volume logique. Pour récupérer des fichiers effacés par erreur, vous pouvez par exemple monter ce volume et retrouver vos fichiers dans l’état où ils étaient au moment où vous avez fait le snapshot :
$ sudo mkdir /var/snapshot $ sudo mount -t ext4 /dev/raid-volume/backup_ddmmyyyy /var/snapshot $ sudo cp /var/snapshot/fichier_* /var/data2
Une fois que vous n’avez plus besoin de votre snapshot, vous pouvez le supprimer :
$ sudo umount /var/snapshot $ sudo lvremove /dev/raid-volume/backup_ddmmyyy
Ce sont les sauvegardes qui se font en temps réel comme dans le cas du RAID 1. À chaque instant, vous avez un double des données sur un autre support.
L’inconvénient, c’est qu’en cas de bug ou de mauvaise manipulation, vous pouvez perdre vos données partout en même temps. Par exemple, si vous effacez par erreur un fichier sur un système en RAID 1, il est effacé des deux disques en même temps. Et là, c’est le drame…
Ce sont des sauvegardes à faire à intervalle régulier. En cas de problème, ça permet de revenir dans le passé mais vous pouvez perdre toutes les mises à jour depuis la dernière sauvegarde. La durée de l’intervalle est donc une affaire de compromis.
NFS est un protocole historique de partage de fichiers entre machines UNIX (famille de systèmes d’exploitation dont Linux et Mac OS X font partie).
En présence de pare-feu, le port par défaut alloué à NFSv4 et qu’il faudrait ouvrir serait le port TCP 2049
entrant.
Ex : Vous allez partager par NFS les deux partitions de données sous LVM+RAID :