# 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). # # 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). # # ############ 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). # # ############ 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](https://git.bodiccea.tk/bruno/Tools/src/branch/master/bash/dup-live-disk.sh) et sur [github](https://github.com/braoult/Tools/blob/master/bash/dup-live-disk.sh). #### 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. ``` bash #!/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" ```