Dans ma quête de stabilité, il faut que j'arrive à mettre en place des snapshots bien avec rétention cyclique et être capable de booter sur un vieux snapshot (ça, c'est prévu dans le wiki).
Pour les snapshots, grosse marrade : c'est pas facile si on veut le faire à la mode systemd.
Il y a dans ce post des informations qui touchent à BTRFS qui ne sont pas nécessaires à la résolution de mon problème.
Je suppose que les sous-volumes sont répartis ainsi (compréhension non nécessaire à la résolution de mon problème) :
Code : Tout sélectionner
Subvolid 5
* dossier home/
** sous-volume __active/
** sous-volume __snapshot.0/
** sous-volume <etc...>
* dossier var/
** sous-volume __active/
** idem
* <etc...>
Je veux une unit simple, propre qui permette de gérer finement les snapshots de mes sous-volumes. (si vous avez une solution entièrement différente je suis preneur !!)
Ma solution :
Voilà mon unit actuelle et j'aiemrais l'améliorer puisqu'elle initialise mal (ça plante) :
Code : Tout sélectionner
snap@.service
[Unit]
Description=Snapshot management of the %f subvolume
[Service]
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
Environment=BTRFS_ROOT=/mnt/btrfs
Environment=ACTIVE="__active"
Environment=MAX_NUM=5
Type=oneshot
ExecStart=/usr/bin/bash -c 'btrfs subvolume delete ${BTRFS_ROOT}/%f.${MAX_NUM}; for (( NUM=$((${MAX_NUM}-1)); NUM >= 0; NUM-- )); do mv ${BTRFS_ROOT}/%f.$NUM ${BTRFS_ROOT}/%f.$(($NUM+1)); done; btrfs subvolume snapshot ${BTRFS_ROOT}/%f.1/../${ACTIVE} ${BTRFS_ROOT}/%f.0'
custom
:Code : Tout sélectionner
# systemctl start snap@home-__custom.service
- Dégager le sous-volume home/__custom.5 s'il existe
btrfs subvolume delete ${BTRFS_ROOT}/%f.${MAX_NUM};
- déplacer tous les snapshots pour incrémenter leur numéro (__custom.0 -> __custom.1)
for (( NUM=$((${MAX_NUM}-1)); NUM >= 0; NUM-- )); do mv ${BTRFS_ROOT}/%f.$NUM ${BTRFS_ROOT}/%f.$(($NUM+1)); done
- Snapshot-ter home/__active vers home/__custom.0
btrfs subvolume snapshot ${BTRFS_ROOT}/%f.1/../${ACTIVE} ${BTRFS_ROOT}/%f.0
home/__active
, je passe par home/__custom.1
(dans le code : ${BTRFS_ROOT}/%f.1/../${ACTIVE}
= /mnt/btrfs/home/__custom.1/../__active
= /mnt/btrfs/home/__active
).Y aurait-il donc moyen de changer ce comportement ? (à l'aide de systemd ou d'une commande à insérer dans ma ligne de bash)