Le contenu risque d’être assez long, et sera donc découpé en 4 parties.
L’objectif est d’installer Debian 8 avec LVM sur un VPS OVH. Par défaut, une seule partition est présente, et c’est assez chaotique à gérer avec des volumes (Et oui, si le VPS est commandé depuis l’interface Cloud, on peut lui ajouter de l’espace disque).
Petit sommaire.
- Destruction et création des partitions
- Installation de Debian
- Ajouter un volume OVH à notre configuration
- Bonus: changer la taille du volume OVH
Destruction et création des partitions
Une fois le VPS commandé, redémarrez le en mode Rescue (en précisant bien Debian!) et connectez-vous en SSH. Petit sudo -i
si vous n’êtes pas root, et on peut commencer.
On commence par formater notre disque principal (qui se trouve dans /dev/vdb en mode rescue) : une partition /boot de 250Mo et le reste du disque en partition LVM.
root@vps:~# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
// On supprime la partition déjà présente
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x200b422e.
// On créé une nouvelle partition pour /boot
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):(entrée)
First sector (2048-20971519, default 2048):(entrée)
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +250M
Created a new partition 1 of type 'Linux' and of size 250 MiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):(entrée)
Using default response p.
Partition number (2-4, default 2):(entrée)
First sector (514048-20971519, default 514048):(entrée)
Last sector, +sectors or +size{K,M,G,T,P} (514048-20971519, default 20971519):(entrée)
// On appuie sur entrée, ce qui remplit le disque avec l'espace restant
Created a new partition 2 of type 'Linux' and of size 9.8 GiB.
// On change le type de partition
Command (m for help): t
Partition number (1,2, default 2):(entrée)
Hex code (type L to list all codes): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
// On valide
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Bon, ça c’est fait. On a bien nos deux partitions. On formate notre futur /boot:
root@vps:~# mkfs.ext4 -L boot /dev/vdb1
Et on configure LVM.
root@vps:~# pvcreate /dev/vdb2
Physical volume "/dev/vdb2" successfully created
root@vps:~# vgcreate vg0 /dev/vdb2
Volume group "vg0" successfully created
Par habitude, j’aime bien créer beaucoup de volumes logiques. Les tailles allouées dépendent de vos goûts. Avec mon VPS et ses 10G de disque, j’alloue 7G … et je peux le modifier à tout moment (c’est tout l’intérêt de LVM !).
root@vps:~# lvcreate -L 500m -n root vg0
Logical volume "root" created
root@vps:~# lvcreate -L 1.5g -n usr vg0
Logical volume "usr" created
root@vps:~# lvcreate -L 3g -n var vg0
Logical volume "var" created
root@vps:~# lvcreate -L 1g -n home vg0
Logical volume "home" created
root@vps:~# lvcreate -L 1g -n srv vg0
Logical volume "srv" created
root@vps:~# lvcreate -L 500m -n swap vg0
Logical volume "swap" created
root@vps:~# lvcreate -L 100m -n tmp vg0
Logical volume "tmp" created
root@vps:~# for i in home root srv tmp usr var; do
> mkfs.ext4 -L $i /dev/mapper/vg0-$i;
> done
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 786432 4k blocks and 196608 inodes
Filesystem UUID: f38cda3f-5e31-4618-884b-5f30fb50ea69
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
# On en profite pour configurer le swap
root@vps:~# mkswap -L swap /dev/mapper/vg0-swap
Setting up swapspace version 1, size = 511996 KiB
LABEL=swap, UUID=d955f898-121d-438b-935b-cdbab6ba017d
On monte notre volume dans /mnt/
:
root@vps:~# mkdir /mnt
root@vps:~# mount /dev/mapper/vg0-root /mnt
root@vps:~# mkdir /mnt/{boot,home,srv,tmp,usr,var}
root@vps:~# mount /dev/vdb1 /mnt/boot
root@vps:~# for i in home srv tmp usr var; do mount /dev/mapper/vg0-$i /mnt/$i; done
root@vps:~# swapon /dev/mapper/vg0-swap
root@vps:~# chmod 1777 /mnt/tmp
Et c’est tout pour cette partie.
Installation de Debian 8 (à la main, s’il vous plaît!)
Afin d’installer Debian sur le disque, et pour nous simplifier la vie, nous allons utiliser debootstrap. Il est utilisé par l’installateur Live, et fonctionne parfaitement dans notre cas (sauf qu’il faut l’installer manuellement ;D)
root@vps:~# apt install debootstrap
The following NEW packages will be installed:
debootstrap
Get:1 http://debian.mirrors.ovh.net/debian/ jessie/main debootstrap all 1.0.67 [62.7 kB]
Setting up debootstrap (1.0.67) ...
On note qu’il utilise le repository http://debian.mirrors.ovh.net/debian/, hébergé par OVH… et on le réutilise dans la commande d’après, la fameuse commande debootstrap. On lui précise l’architecture désirée (amd64, n’oubliez pas, sinon Grub ne va pas apprécier), la version voulue (jessie), le dossier d’installation (/mnt) et l’endroit où aller chercher les packages.
root@vps:~# debootstrap --arch amd64 jessie /mnt http://debian.mirrors.ovh.net/debian
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id ED6D65271AACF0FF15D123036FB2A1C265FFB764)
...
I: Configuring tasksel-data...
I: Base system installed successfully.
root@vps:~#
Après quelques 627 lignes de log, l’installation est terminée et on a un Debian fonctionnel dans /mnt.
On configure /dev, /proc et /sys, puis on s’y introduit par surprise pour installer quelques paquets (ssh, au hasard) et modifier le mot de passe root.
root@vps:~# mount -o bind /dev /mnt/dev
root@vps:~# mount -t proc proc /mnt/proc
root@vps:~# mount -t sysfs sys /mnt/sys
root@vps:~# chroot /mnt /bin/bash
On commence par modifier /etc/fstab
, et on y inscrit une configuration qui va bien. Dans mon cas, ceci fera l’affaire:
root@cloudtruc:~# cat /etc/fstab
# file system mount point type options dump pass
LABEL=boot /boot ext4 rw,nosuid,nodev 0 2
LABEL=root / ext4 errors=remount-ro 0 1
LABEL=tmp /tmp ext4 rw,nosuid,nodev 0 2
LABEL=var /var ext4 rw 0 2
LABEL=usr /usr ext4 rw,nodev 0 2
LABEL=home /home ext4 rw,nosuid,nodev 0 2
LABEL=srv /srv ext4 rw,nosuid,nodev 0 2
LABEL=swap none swap sw 0 0
On restaure le fichier /etc/network/interfaces
à la valeur utilisée sur notre machine OVH avant formatage. Vous l’avez sauvegardé bien sûr ?! Non ? Tant pis, le voici:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
auto eth0
iface eth0 inet dhcp
On installe lvm et ssh. On en profite pour demander un petit kernel et Grub2 (vous pouvez essayer sans, si ça vous amuse).
root@vps:/# apt-get update
root@vps:/# apt-get install lvm2 ssh linux-image-amd64 grub2
Si tout se passe bien, grub devrait vous demander quelle configuration utiliser pour grub-pc, dans une jolie boîte de dialogue:
On se déplace avec les flèches, on sélectionne /dev/vdb en appuyant sur espace et on valide avec entrée. Un jeu d’enfant.
Les quelques dernières lignes de cet apt-get sont
update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64
df: Warning: cannot read table of mounted file systems: No such file or directory
Pas grave, on ferme les yeux pour cette fois. :-)
On définit un mot de passe avec passwd
, on pense bien à vérifier dans /etc/ssh/sshd_config qu’on autorise la connexion par mot de passe … (*PermitRootLogin yes* et non without-password).
Et c’est tout. On peut sortir du mode rescue. Enfin. \o/
À la prochaine connexion, la clé SSH aura changée (j’espère, sinon vous avez formaté la mauvaise machine :oops:) et vous pourrez jouer avec un Debian tout propre.
Ajouter un volume OVH à LVM
L’offre Cloud d’OVH, en plus de nous proposer des VPS de qualités (cher staff OVH, on négocie les réductions via Twitter ? ;D), permet de lier des Volumes à nos VPS. Pour cela, il faut créer le volume, spécifier ses performances et sa taille [Activez l’option disque amorçable, on ne sait jamais], et l’associer à notre machine. (C’est assez simple, et l’interface risque de changer, donc pas d’imprim’ écran.)
On se connecte en SSH à notre machine, petit sudo -i
si vous n’êtes pas déjà root, et on cherche notre volume (avec fdisk -l, par exemple). Par défaut, c’est /dev/vdb.
Cette fois-ci, il suffit de partitioner (en LVM) le disque entier.
Mais vous savez faire, n’est ce pas ?
fdisk /dev/vdb
, o, n, entrée 4 fois, t, 8e, w.
Ensuite, on ajoute notre disque à vg0. Par exemple, pour attribuer 4Go supplémentaires à /srv :
root@vps:~# pvcreate /dev/vdb1
Writing physical volume data to disk "/dev/vdb1"
Physical volume "/dev/vdb1" successfully created
root@vps:~# vgextend vg0 /dev/vdb1
Volume group "vg0" successfully extended
root@vps:~# lvextend -l +3G /dev/vg0/srv
Extending logical volume srv to 4.00 GiB
Logical volume root successfully resized
root@vps:~# resize2fs /dev/vg0/srv
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/vg0/srv is mounted on /srv; on-line resizing required
...
BONUS: Changer la taille du volume OVH
Oui, avoir un volume supplémentaire c’est bien et peu couteux, mais étant donné qu’ils sont de taille variable, il faut en profiter !
Attention Cette opération est risquée et je ne recommande pas de l’executer sur un système en production (il est préférable de créer un second volume et de transférer les données, je pense). En effet, changer la taille du volume OVH a pour conséquence … de démonter le volume et de le remonter sous un autre nom.
En le faisant, vous aurez des erreurs à chaque fois que vous manipulez un disque. Par ex.:
root@vps:/etc/lvm# vgdisplay
/dev/root: read failed after 0 of 1024 at 13597868032: Input/output error
/dev/root: read failed after 0 of 1024 at 13597925376: Input/output error
--- Volume group ---
VG Name vg0
...
La solution: nettoyer le cache LVM en executant cette commande: vgmknodes --refresh vg0
.
Cette fois-ci, il faut supprimer la partition LVM et la re-créer.
fdisk /dev/vdc
, puis d (delete), n, entrée 4 fois, t, 8e, w.
Ensuite, on resize: pvresize /dev/vdc1
.
Et voilà, on peut utiliser les commandes LVM usuelles à présent.
C’est tout pour le moment ! :-)