Files
test-repo/bordel-a-patrick.md

14 KiB

Réparation du bordel de deneb

installation de Emacs (!!)

br@deneb:~$ sudo apt-get install emacs-nox

Tu pourras le virer après.

État des lieux

br@deneb:~$ lsblk.sh
NAME   TYPE FSTYPE MOUNTPOINT    PARTLABEL LABEL   SIZE RO UUID                                 PARTUUID
sda    disk                                      465.8G  0
├─sda1 part ext4   /                              28.6G  0 33059c17-761e-4c5f-ab9d-035976e0bfc6 b827da31-01
├─sda2 part                                          1K  0                                      b827da31-02
├─sda5 part swap   [SWAP]                          1.9G  0 e6be26ca-411c-43e4-aa11-ae03af96720c b827da31-05
└─sda6 part ext4   /export                       435.2G  0 91e5624c-de87-49ac-97b9-2f0fa618609f b827da31-06
sdb    disk                                      149.1G  0
├─sdb1 part                                          1K  0                                      6facf23c-01
├─sdb5 part ext4   /systemXena                    18.6G  0 346332fb-c6a6-4772-ac7c-91e3adf5c790 6facf23c-05
├─sdb6 part swap   [SWAP]                          2.3G  0 67bbbe64-e52f-44ee-b9ea-d8881247ffb5 6facf23c-06
└─sdb7 part ext4   /backup-damia                 128.1G  0 6d2994d9-2209-4360-b27d-b73f06d86c87 6facf23c-07
sr0    rom                                        1024M  0

Nommage des disques (labels)

Ajout d'un label pour les partitions du premier disque, avec le suffixe "1" (root1, export1, swap1) :

br@deneb:~$ sudo e2label /dev/sda1 root1
br@deneb:~$ sudo swaplabel -L swap1 /dev/sda5
br@deneb:~$ sudo e2label /dev/sda6 export1

Ajout d'un label pour les partitions du second disque ("Xena"), avec le suffixe "2" :

br@deneb:~$ sudo e2label /dev/sdb7 export2
br@deneb:~$ sudo e2label /dev/sdb5 root2
br@deneb:~$ sudo swaplabel -L swap2 /dev/sdb6

Nouvelle situation :

br@deneb:~$ !lsb
lsblk.sh
NAME   TYPE FSTYPE MOUNTPOINT    PARTLABEL LABEL     SIZE RO UUID                                 PARTUUID
sda    disk                                        465.8G  0
├─sda1 part ext4   /                       root1    28.6G  0 33059c17-761e-4c5f-ab9d-035976e0bfc6 b827da31-01
├─sda2 part                                            1K  0                                      b827da31-02
├─sda5 part swap   [SWAP]                  swap1     1.9G  0 e6be26ca-411c-43e4-aa11-ae03af96720c b827da31-05
└─sda6 part ext4   /export                 export1 435.2G  0 91e5624c-de87-49ac-97b9-2f0fa618609f b827da31-06
sdb    disk                                        149.1G  0
├─sdb1 part                                            1K  0                                      6facf23c-01
├─sdb5 part ext4   /systemXena             root2    18.6G  0 346332fb-c6a6-4772-ac7c-91e3adf5c790 6facf23c-05
├─sdb6 part swap   [SWAP]                  swap2     2.3G  0 67bbbe64-e52f-44ee-b9ea-d8881247ffb5 6facf23c-06
└─sdb7 part ext4   /backup-damia           export2 128.1G  0 6d2994d9-2209-4360-b27d-b73f06d86c87 6facf23c-07
sr0    rom                                          1024M  0

Correction du fstab du second disque

On ne va pas monter ici les partitions du premier disque, on verra ca plus bas avec l'automounter (autofs).

br@deneb:~/.emacs.d$ sudo emacs /systemXena/etc/fstab

br@deneb:~/.emacs.d$ cat /systemXena/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
LABEL=root2        /               ext4    errors=remount-ro   0       1
LABEL=export2      /export         ext4    defaults            0       2

# swap was on /dev/sda2 during installation
LABEL=swap2        none            swap    nofail,sw,pri=0     0       0
LABEL=swap1        none            swap    nofail,sw,pri=0     0       0

Ajustement de /home sur le second disque (Xena)

On déplace /systemXena/home dans /backup-damia (le futur /export).

br@deneb:/backup-damia$ sudo mv /systemXena/home/ /backup-damia/

Et on fait pointer /systemXena/home vers ./export/home :

br@deneb:~$ cd /systemXena/
br@deneb:/systemXena$ ln -s ./export/home
br@deneb:/systemXena$ ls -l home
lrwxrwxrwx 1 root root 13 Jun 21 22:45 home -> ./export/home

Maintenant, on devrait pouvoir booter sur Xena.

autofs

Installation

$ sudo apt-get install autofs

Setup

Nous allons utiliser les labels pour monter automatiquement les partitions locales, si on essaie d'y accéder. Les partitions seront automatiquement démontées 1 minute après le dernier accès.

/etc/auto.master

Fichier /etc/auto.master. C'est le fichier principal. On vire tout ce qui existe, et on ajoute la ligne :

/mnt/hd     /etc/auto.hd        --timeout 60 --ghost

Ça veut dire que l'automounter sera actif sur /mnt/hd, contrôlé par la configuration décrite dans /etc/auto.hd. On précise aussi le timeout de démontage (60 secondes), et l'option --ghost qui permettra de voir les répertoires possibles dans /mnt/hd, même s'ils ne sont pas montés. L'option --ghost n'aura aucun effet ici,car nous utilisons un wildcard (*) dans /etc/auto.hd.

/etc/auto.hd

On y met :

*           -fstype=auto,defaults       :LABEL=&

On dit que pour tous les point de montage * (dans /mnt/hd), on effectue un montage avec les options par défaut, et que la source du montage est une partition de label indentique à *. Par exemple, si une partition a pour label root1, elle sera montée dans /mnt/hd/root1 dès lors qu'on accède à ce répertoire.

Puisque nous utilisons * pour cette map, l'option --ghost n'aura aucun effet.

Redémarrage de autofs

br@deneb:/mnt$ sudo systemctl restart autofs

Voilà. C'est fini.

Testons:

br@deneb:~$ cd /mnt

br@deneb:/mnt$ ls -l hd
total 0

br@deneb:/mnt$ ls hd/root2
bin/    export/      initrd.img.old@  mnt/   sbin/          tmp/
boot/   export1/     lib/             opt/   snap/          usr/
cdrom/  export2/     lib64/           proc/  srv/           var/
dev/    home@        lost+found/      root/  sys/           vmlinuz@
etc/    initrd.img@  media/           run/   system1Xenal/  vmlinuz.old@

br@deneb:/mnt$ ls -l hd
total 0
drwxr-xr-x 2 root root 0 Jun 22 10:26 root2/

br@deneb:/mnt$ df.sh
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1       29396988  19004928   8875724  69% /
/dev/sdb7      132076960    101520 125243256   1% /backup-damia
/dev/sdb5       19091584   5477272  12621444  31% /systemXena
/dev/sda6      448172912 316800084 108537220  75% /export
/dev/sdb5       19091584   5477272  12621444  31% /mnt/hd/root2

br@deneb:/mnt$ sleep 60

br@deneb:/mnt$ df.sh
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1       29396988  19004928   8875724  69% /
/dev/sdb7      132076960    101520 125243256   1% /backup-damia
/dev/sdb5       19091584   5477272  12621444  31% /systemXena
/dev/sda6      448172912 316800108 108537196  75% /export

Création de liens dans /mnt pour faciliter l'accès aux partitions

br@deneb:/mnt$ for i in {root,export}{1,2}; do
> sudo ln -s hd/$i
> done
br@deneb:/mnt$ ls -l
total 0
lrwxrwxrwx 1 root root 10 Jun 22 10:33 export1 -> hd/export1/
lrwxrwxrwx 1 root root 10 Jun 22 10:33 export2 -> hd/export2/
drwxr-xr-x 6 root root  0 Jun 22 10:33 hd/
lrwxrwxrwx 1 root root  8 Jun 22 10:33 root1 -> hd/root1/
lrwxrwxrwx 1 root root  8 Jun 22 10:33 root2 -> hd/root2/

Nettoyage du fstab, et préparation de la duplication de disque sda -> sdb

On vire les montages en dur, hormis /, /export, et les partitions de swap. On en profite pour remplacer UUID= par LABEL=.

Il faut que nous ayons un fstab prêt à l'emploi sur le disque source (sda), que nous activerons lors de la copie sur sdb

br@deneb:/mnt$ sudo emacs /etc/fstab
br@deneb:/mnt$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

############ Une seule de ces deux sections doit être active

########## boot sur le second disque
LABEL=root1    /               ext4    errors=remount-ro        0       1
LABEL=export1  /export         ext4    defaults                 0       2

########## boot sur le second disque
#LABEL=root2    /               ext4    errors=remount-ro        0       1
#LABEL=export2  /export         ext4    defaults                 0       2

# swap
LABEL=swap1    none            swap    nofail,sw,pri=0          0       0
LABEL=swap2    none            swap    nofail,sw,pri=0          0       0

Maintenant on prépare un fstab utilisable quand on boote sur sdb dans le /etc de sda.

br@deneb:/mnt$ cd /etc
br@deneb:/etc$ sudo ln fstab fstab.root1
br@deneb:/etc$ sudo cp fstab fstab.root2

br@deneb:/etc$ sudo emacs fstab.root2

br@deneb:/etc$ ls -l fst*
-rw-r--r-- 2 root root 916 Jun 22 10:50 fstab
-rw-r--r-- 2 root root 916 Jun 22 10:50 fstab.root1
-rw-r--r-- 1 root root 916 Jun 22 10:49 fstab.root2

br@deneb:/etc$ cat fstab.root2
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

############ Une seule de ces deux sections doit être active

########## boot sur le second disque
#LABEL=root1    /               ext4    errors=remount-ro        0       1
#LABEL=export1  /export         ext4    defaults                 0       2

########## boot sur le second disque
LABEL=root2    /               ext4    errors=remount-ro        0       1
LABEL=export2  /export         ext4    defaults                 0       2

# swap
LABEL=swap2    none            swap    nofail,sw,pri=0          0       0
LABEL=swap1    none            swap    nofail,sw,pri=0          0       0

br@deneb:/etc$ diff fstab.root{1,2}
12,13c12,13
< LABEL=root1    /               ext4    errors=remount-ro        0       1
< LABEL=export1  /export         ext4    defaults                 0       2
---
> #LABEL=root1    /               ext4    errors=remount-ro        0       1
> #LABEL=export1  /export         ext4    defaults                 0       2
16,17c16,17
< #LABEL=root2    /               ext4    errors=remount-ro        0       1
< #LABEL=export2  /export         ext4    defaults                 0       2
---
> LABEL=root2    /               ext4    errors=remount-ro        0       1
> LABEL=export2  /export         ext4    defaults                 0       2
20d19
< LABEL=swap1    none            swap    nofail,sw,pri=0          0       0
21a21
> LABEL=swap1    none            swap    nofail,sw,pri=0          0       0

Création de filtres pour le script de copie de disques

Note: Le script de duplication de disque est sur mon serveur gitea et sur github.

partition root

br@deneb:~$ cat /.rsync-disk-copy
- /dev/*
- /media/*
- /lost+found/*
- /proc/*
- /run/*
- /srv/*
- /sys/*
- /tmp/*

partition export

Le home de patrick est gros, il ne passera pas sur sdb. Il faudrait trouver ce qui prend de la place :

br@deneb:~$ cd ~patrick
br@deneb:/home/patrick$ sudo du -sm * | sort -n
[...]
1052	Documents
1535	Famille_llgal
2208	Divers
2238	Maildir
2591	Ancetres
4424	bm39
8194	Bureau
13876	ml.faivre
13979	Images_llgal
24505	Musique
223081	Vidéos

Pour exclure des répertoires de la copie, il faudrait créer un fichier .rsync-disk-copy dans ~patrick ( ça c'est le boulot de Patrick), avec les répertoires à exclure de la copie. Par exemple, en virant tout ce qui dépasse 10G :

- /ml.faivre/
- /Images_llgal/
- /Musique/
- /Vidéos/

Il faudrait être certain que la taille restante à copier ne dépasse pas les 80%-90% de la partition /export du disque cible. Avec ces 4 répertoires on "économise" 275Gb, donc on pourrait commencer comme ça et affiner par la suite pour copier plus de bordel sur le second disque ;-)

Reformatage de sdb

Il est à noter que la partition root de sdb est trop petite. Donc il faudrait reformater totalement sdb. Ça c'est aussi le boulot de Patrick :

root2:   30 Gb (ext4)
swap2:   3 ou 4 Gb (swap)
export2: le reste, c.a.d. 110-115 Gb (ext4)

Si tu veux, au lieu d'utiliser gparted, tu pourrais le faire en ligne de commande. Voici un script qui fera ça. Il crée un disque GPT avec une protective MBR, avec, dans l'ordre: 1 MiB pour grub, 30 GiB pour /, 4 GiB pour le swap, le reste pour /export. Les GUIDs sont aussi ré-initialisés, et des PARTLABEL/LABELS ajoutés. On pourrait virer la partie partlabel (lignes --change-name=), on ne s'en servira pas ici.

#!/usr/bin/env bash

set -e

declare -i PARTCODE=2
declare DEVICE=/dev/sdb

swapoff -L "swap$PARTCODE"

sgdisk                                      \
    --clear                                 \
    --new 1::+1M                            \
    --typecode=1:ef02                       \
    --change-name=1:"grub $PARTCODE"        \
    --new 2::+30G                           \
    --typecode=2:8300                       \
    --change-name=2:"ext4 root $PARTCODE"   \
    --new 3::+4G                            \
    --typecode=3:8200                       \
    --change-name=3:"swap $PARTCODE"        \
    --new 4::-0                             \
    --typecode=4:8300                       \
    --change-name=4:"ext4 export $PARTCODE" \
    --randomize-guids                       \
    --mbrtogpt                              \
    "$DEVICE"

wipefs    -a                   "${DEVICE}1"
mkfs.ext4 -L "root$PARTCODE"   "${DEVICE}2"
mkswap    -L "swap$PARTCODE"   "${DEVICE}3"
mkfs.ext4 -L "export$PARTCODE" "${DEVICE}4"