Formation Evolix

installation Linux

Méthode d'installation

  • CD/ROM ou clé USB (machine physique ou virtuelle)
  • Réseau, via boot PXE+DHCP+TFTP
  • Image préinstallée par un hébergeur
  • Conteneur minimal (LXC/Docker)

Compatibilité du matériel

  • Enjeu principal : carte réseau et controleur disque/RAID
  • Si possible, test avec Live-CD
  • lspci -n sur http://kmuto.jp/debian/hcl/ plus à jour :(
  • Recherche Google avec "site:lists.debian.org/debian-boot"

Choix pour un serveur

  • Carte réseau : 1G ou 10G ?
  • CPU Intel Xeon : fréquence ? nombre de cores ? https://www.cpubenchmark.net/
  • Quantité de mémoire
  • Importance du stockage :
    • Local ou distant (NFS, iSCSI)
    • Type : SATA, SAS, SSD ?
    • Performance lecture/écriture : Mo/s, IOPS
    • Gestion du cache

Focus sur le stockage

RAID

  • RAID0
  • RAID1
  • RAID5
  • RAID6
  • RAID10
  • RAID hardware ou logiciel ?

Partitionnement

  • Partitionnement msdos limité à 2To
  • Partitionnement GPT
  • Outils : fdisk, cfdisk, sfdisk, parted
  • /boot / /var /usr /tmp 2xswap /srv /home
  • systèmes de fichiers : ext3/ext4, reiserfs, xfs, btrfs

RAID logiciel

                    
# apt install mdadm
$ /sbin/mdadm -V
$ /sbin/modinfo md_mod
# mdadm --detail --scan
# cat /proc/mdstat
                    
                
# mdadm --create /dev/md42 --chunk=64 --metadata=default --level=raid1 --raid-devices=2 /dev/sdy1 /dev/sdz1
# mdadm --detail /dev/md42
                    
                

RAID logiciel (suite)

Manipulation en cas de disque HS
                    
# sfdisk -d /dev/sda > /tmp/part.out
# sfdisk -f /dev/sdz < /tmp/part.out
# partprobe /dev/sdz

# apt install gdisk
# sgdisk -R=/dev/sdz /dev/sda
# sgdisk -G /dev/sdz
                    
                

RAID logiciel (suite)

Manipulation en cas de disque HS (suite)
                    
# mdadm /dev/md1 --add /dev/sdz1
mdadm: added /dev/sdz1
# mdadm /dev/md2 --add /dev/sdz2
mdadm: added /dev/sdz2

# cat /proc/mdstat
Personalities : [raid1] 
md2: active raid1 sda1[1] sdz1[0]
      1893933820 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  4.0% (75859776/1893933820) finish=493.5min speed=61391K/sec
                    
                

LVM

                    
# apt install lvm2
# pvcreate /dev/sdz8
# pvdisplay / pvs
# vgcreate group1 /devdz8
# vgdisplay / vgs
# lvcreate -L5G -nfirstlvmvol group1
# ls /dev/mapper/
            

Réseau

  • Fichiers standards : /etc/resolv.conf, /etc/hosts
  • Configuration statique ou dynamique (DHCP) ?
  • Configuration réseau : pas de standard sous Linux...
  • Outils réseaux de base : ifconfig, ping, route, ip, netstat, traceroute

Installation de logiciels

  • Méthode classique de compilation des sources
  • Utilisation du système de packages

Les packages sont des binaires précompilés qui sont prêts à être installés de façon simple et rapide.
Les dépendances sont gérées, ainsi que la mise à jour et la suppression des packages déjà installés (varie selon les distributions).

TP

Installation Debian GNU/Linux

Versions actuelles

  • Debian GNU/Linux « Sid » = unstable
  • Debian GNU/Linux 10 (« Buster ») = testing
  • Debian GNU/Linux 9 (« Stretch ») = stable
  • Debian GNU/Linux 8 (« Jessie ») = oldstable
  • Debian GNU/Linux 7 (« Wheezy ») = oldoldstable

Versions (suite)

  • Debian GNU/Linux 6 (« Squeeze »)
  • Debian GNU/Linux 5 (« Lenny »)
  • Debian GNU/Linux 4 (« Etch »)
  • Debian GNU/Linux 3.1 (« Sarge »)
  • Debian GNU/Linux 3.0 (« Woody »)
  • Debian GNU/Linux 2.2 (« Potato »)
  • Debian GNU/Linux 2.1 (« Slink »)
  • Debian GNU/Linux 2.0 (« Hamm »)
  • Debian GNU/Linux 1.1 (« Buzz »)

  • Boot sur CD/DVD ou USB
  • Choix de la langue : anglais (en_US.UTF8)
  • Réglage du clavier
  • Réseau
  • Partitionnement
  • Choix des miroirs
  • Mot de passe
  • Choix de packages
  • Installation GRUB

console de debug à l'installation

                    
# lspci | grep Eth
# ip addr show
# dmesg | grep sd
# cat /proc/cpuinfo
                    
                

Focus sur Vim

                            
    # apt install vim
    # select-editor
    # update-alternatives --config editor
    # vi /etc/vim/vimrc
    let g:skip_defaults_vim = 1
    # vi ~/.vimrc
                            
                        

Incontournables

                            
    syntax on
    set background=dark
    set nocompatible
                            
        

Pour les devs

                            
    set expandtab
    set shiftwidth=4
    set softtabstop=4
    set tabstop=4
                            
                        

Vim basics

Mode "commandes" <-> Mode "insertion"
         [Échap] <-> i

Vim basics

Mode "commandes"
----------------

:w     enregistrer
:wq    enregistrer et quitter
:q!    quitter sans enregistrer
gg     aller tout en haut
G      aller tout en bas
$      aller en fin de ligne
/foo   chercher "foo"
dd     supprimer (ou couper) la ligne actuelle
yy     copie la ligne actuelle
x      supprimer (ou couper) le caractère courant
p      coller après le curseur
P      coller avant le curseur
v      mode visuel pour couper ou copier facilement
rX     remplace le caractère courant par X
u      annule la dernière commande
Ctrl+r restaure la dernière commande
                

Vim basics

Passer en mode insertion
------------------------

i    passer en mode insert avant le curseur
a    passer en mode insert après le curseur
I    passer en mode insert au début de la ligne
A    passer en mode insert à la fin de la ligne
o    sauter une ligne et passer en mode insert
                    
# apt install locales
$ LANG=fr_FR.UTF8 /usr/bin/vimtutor
                    
                

Gestion des paquets dans Debian

dpkg et APT

dpkg

gestion bas-niveau (manipulation directe des paquets)

                    
$ dpkg -l
# dpkg --unpack
# dpkg --configure
# dpkg -i
# dpkg -r
# dpkg -P
$ dpkg -L
$ dpkg -S
$ dpkg -s
# dpkg-reconfigure
                    
                

APT

gestion avancée (dépendances, mises à jour, conflits…)

Sources de paquets :  /etc/apt/sources.list
                    
# netselect / apt-cdrom
                    
Interface pour APT : apt, apt-cache, apt-get, aptitude
                    
# apt update
# apt upgrade
# apt install paquet
# apt remove paquet
# apt purge paquet
$ apt-cache show / search / -n search / depends / rdepends / policy
                    
                
Autres commandes :
                    
# apt -s install
$ apt-file
$ apt-show-versions
# apt-listchanges
# apt clean/autoclean
# apt upgrade/full-upgrade
$ apt changelog
$ rmadison
# apt-get check
$ apt source
# apt build-dep
$ debuild -us -uc
                    
                
                    
# vim /etc/apt/sources.list
                    
deb http://mirror.evolix.org/debian/ stretch main
deb http://security.debian.org/ stretch/updates main
deb http://mirror.evolix.org/debian/ stretch-updates main
deb http://mirror.evolix.org/debian/ stretch main
                
                    
# dpkg-reconfigure -plow debconf
# apt remove aptitude
# vim /etc/apt/apt.conf.d/99custom
                    
APT::Install-Recommends "false";
APT::Install-Suggests "false";
Dpkg::Pre-Invoke { "mount -oremount,exec /tmp && mount -oremount,rw /usr || true"; };"
Dpkg::Post-Invoke { "mount -oremount /tmp && mount -oremount /usr || true"; };"
                
                    
# vim /etc/fstab
                    
/dev/sda2  /        ext4  defaults,errors=remount-ro   0 1
/dev/sda1  /boot    ext4  defaults                     0 2
/dev/sda3  /var     ext4  defaults                     0 2
/dev/sda5  /usr     ext4  defaults,ro                  0 2
/dev/sda6  /tmp     ext4  defaults,noexec,nosuid,nodev 0 2
/dev/sda7  none     swap  sw                           0 0
/dev/sda8  none     swap  sw                           0 0
/dev/sda9  /home    ext4  defaults,noexec,nosuid,nodev 0 2
tmpfs      /var/tmp tmpfs defaults,noexec,nosuid,nodev 0 2
                
On installe Postfix :
                    
# apt install postfix
                    
On renvoie tous les alias vers root :
                    
# getent passwd | cut -d":" -f1 | sed "s/$/: root/" > /etc/aliases
# vim /etc/aliases
# newaliases
                    
Installons les outils de base :
                    
# apt install ssh less mailx sudo munin htop iotop iftop
                    
                
Mesure des performances disque :
                    
# time dd if=/dev/zero of=/home/32gb bs=1024k count=32768
# time dd if=/home/32gb of=/dev/null bs=1024k count=32768
# time rm /home/32gb

# apt install postgresql-contrib
# /usr/lib/postgresql/9.6/bin/pg_test_fsync
                    
                
Mesure des performances réseau :
                    
# apt install iperf mtr-tiny

$ ping -4 google.fr
$ mtr -4 google.fr
$ iperf -c debit.k-net.fr
                    
                

Comment choisir sa version de Linux ?

  • Versions logiciels fixes : Apache / PHP / MySQL / etc.
  • Version nue ou panel (cpanel, plesk) ?
  • apt-get ou yum ?

Récapitulatif

  • Choix matériel
  • Choix version de Linux
  • Premières optimisations
  • Validation des performances