Outils pour utilisateurs

Outils du site


blog

Notes sauvegardes

Notes

Il faut considérer deux types de sauvegarde :

  • En mode bloc
  • En mode ficher

Pour restaurer un serveur qui tombe on utilise en général le mode bloc. La sauvegarde en mode bloc peut se faire par disque ou par partition. Dans le second cas il est nécessaire de sauvegarder la table des partitions. Elle peut-être de deux types : MBR et GPT.

Concernant la sauvegarde en mode fichier, dont il semble être question ici :

Il faut sauvegarder toutes les partitions locales mais exclure le swap et les partitions pseudo-fs tel que dev, sys, proc, debugfs, tmpfs, configfs, etc… En gros les partition affichées avec lsblk -fm et qui sont montées.

Des optimisations et des choix peuvent être fait comme ignorer les fichiers cores dump et certains dossiers tel que /tmp, /var/tmp, /var/cache/, inclure ou non les partitions applicatives…

D’autres éléments doivent être considérés tel que :

  • Impacte performance / accessibilité pendant la sauvegarde
  • La nature de ce qui doit être sauvegardé (on ne sauvegarde pas une base de donnée en fonctionnement en copiant un à un des fichiers des tablesspaces)
  • Intégrité de la sauvegarde. Parce que entre le début et la fin de la sauvegarde l’état des fichiers sur disque peut avoir changé
  • snapshot LVM ou autres avant copie des fichiers ?
  • Préserver certaines méta données tel que les droits POSIX, ACL, contexte SELinux…
  • Choix de préserver ou nom les atime, mtime, ctime
2025/03/24 15:06

Notes sauvegardes backup avec Restic

Restic - L’excellent outil de sauvegarde de fichiers

Voir : https://restic.net/

Voir aussi :

  • Rclone
  • Les outils de sauvegrade en mode block tel que Bup
  • Kopia.io

Exemple avec rclone

rclone serve restic --addr localhost:8889 --user foo --pass s3kr1t remote:bucket/path
export RESTIC_REPOSITORY='rest:http://foo:s3kr1t@localhost:8889'
export RESTIC_PASSWORD=Password123
restic init
restic snapshots
restic stats
restic find --tag Plop '*'
restic backup /data/
find ~/bin/ -maxdepth 1 -type f -print0 | restic backup --tag plop --files-from-raw=/dev/stdin
restic ls -l latest
mkdir mnt
restic mount mnt/ &
ls -l ~/mnt/snapshots/latest/
$ ls mnt/
hosts  ids  snapshots  tags

Maintenance

restic check --read-data
restic prune
 
restic migrate 
restic migrate upgrade_repo_v2
restic migrate 

Remove snapshot

restic snapshots 
 
restic forget 5bb4af18
 
restic prune
Tailles des snapshots

A partir de la version 0.17

restic snapshots --json add5377d | jq

Sinon

# Affiche la taille restant après effacement
$ restic forget --dry-run --prune add5377d | grep remaining
remaining:         98347 blobs / 8.590 GiB
unused size after prune: 0 B (0.00% of remaining size)

$ restic stats add5377d | grep -i size
Stats in restore-size mode:
              Total Size:  31.640 GiB

$ restic stats --mode raw-data add5377d | grep -i size
 Total Uncompressed Size:  9.152 GiB
              Total Size:  8.235 GiB

$ rclone size e_nas:
Total objects: 589 (589)
Total size: 8.598 GiB (9232005166 Byte) 

$ rclone size NAS_FTP:home/Backup/
Total objects: 589 (589)
Total size: 8.600 GiB (9234283006 Byte)
$ restic forget --dry-run --prune $(restic snapshots --tag blob | awk '/DATA$/ {print $1}') | grep remaining
remaining:         87662 blobs / 417.746 MiB
unused size after prune: 0 B (0.00% of remaining size)

Diff entre deux snapshots

restic snapshots --latest 2 --tag blob | grep /Work$
restic diff -v f462cfae a230e52f

Différences de tailles entre deux snapshots

$ restic diff f462cfae a230e52f | egrep "Added|Removed"
  Added:   0 B
  Removed: 0 B

bin/backup.sh

#! /bin/bash
 
set -euo pipefail
 
# export RESTIC_REPOSITORY='rest:http://localhost:8889'
# export RESTIC_PASSWORD=P@ssw0rd
 
# shellcheck source=/home/management/.backup.env
source ~/.backup.env
 
do_rclone_listen() {
    rclone serve restic --addr localhost:8889 e_nas:/restic1
}
 
do_backup() {
    restic backup --tag code ~/code/
    restic backup --tag code ~/*.env
    restic backup --tag blob ~/Work/
    restic backup --tag tools ~/go/bin/
    restic backup --exclude='tmp/' --tag blob /mnt/c/DATA/
    find ~/bin/ -maxdepth 1 -type f -print0 | restic backup --tag script --files-from-raw=/dev/stdin
}
 
do_post_backup() {
    restic prune
}
 
main() {
    do_rclone_listen &
    sleep 1
    do_backup
    do_post_backup
    killall rclone
    echo OK
}
 
main
2025/03/24 15:06

Caractère d'échappement connexion console

Contexte : virsh console

Connected to domain ttest
Escape character is ^]

Sous Ouidoze [Ctrl] + 5
(touche 5 au dessus du clavier)

Contexte : telnet

Sous GNU/Linux :
[Ctrl] + [Alt Gr] + ]
ou
[Ctrl] + [Alt Gr] + }

Console Unix

Sur AIX pour faire F1, F2… Pour F1
[SHIFT] + [ESC] + [1]

2025/03/24 15:06

Notes Satellite RedHat Katello Foreman

Alternatives

Conposants

  • Foreman
  • Katello (Candlepin + Pulp)

Outils :

  • Hammer (commande pour gérer Satellite / Foreman)

Spacewalk (old)

Install

katello-agent
yum install katello-agent

Diag

https://theforeman.org/plugins/katello/developers.html

Autres

Old

Brouillon


Incident Satellite

  • 128 GB
  • 24 CPU
  • Tunning 6.8
  • Passage ⇒ 6.9
  • process Puma a 32 GB de RAM
  • Fuite mémoire
  • Config extra large

Memory leaks 6.9

Changement de 6.8 vers 6.9 Passage de Passenger à Puma

Puma - Memory leaks reported and fixed by setting min threads equal to max threads

ps -aux | sort -nk5 | grep puma

2025/03/24 15:06

Notes SAN iSCSI

Notes vocabulaire / Infos

Par défaut, c'est le port TCP 3260 qui est utilisé.

IQN : iSCSI Qualified Name
Identifiant unique de la carte

Les clients sont appelés initiateurs (ou Initiator en anglais)

Les périphériques de stockage SCSI sur des serveurs distants sont appelés Cible (ou targets en anglais)

Pensez à Configurer le Jumbo Frame sur les cartes réseaux

Multipath vs Bonding

Voir :

En général il faut privilégier le Multipath, le bonding peut être utilisé en active-passif.

Sur Targets (serveur) & Initiateurs (client)

/etc/sysctl.d/98-san.conf

net.ipv4.conf.enp0s9.rp_filter=0
net.ipv4.conf.enp0s9.arp_ignore=1
net.ipv4.conf.enp0s9.arp_announce=2
 
net.ipv4.conf.enp0s10.rp_filter=0
net.ipv4.conf.enp0s10.arp_ignore=1
net.ipv4.conf.enp0s10.arp_announce=2
sysctl -p /etc/sysctl.d/98-san.conf

A adapter !
Remplacer enp0s9, enp0s10 par vos cartes réseaux dédiées au SAN

Targets (serveur) sur Debian

Il existe :

  • iscsitarget
  • tgt
  • sg3_utils / sg_scan
Avec iscsitarget
apt-get install iscsitarget iscsitarget-dkms

Pour lister les LUN

cat /proc/net/iet/volume

/etc/default/iscsitarget

ISCSITARGET_ENABLE=true
 
# Comment binder sur plusieurs interfaces ?
# Finalement je vais jouer avec iptables
#ISCSITARGET_OPTIONS="--address 192.168.25.12"

/etc/iet/targets.allow

#ALL ALL
#ALL 192.168.25.12 # IP de la carte de ce serveur (Target)
ALL 192.168.25.12,192.168.26.12

Aucun service à redémarré

/etc/iet/initiators.allow

#ALL ALL

#nom-libre:fs.iscsi.disk 192.168.25.21
nom-libre:fs.iscsi.disk iqn.1994-05.com.redhat:b51429c7fc6

Aucun service à redémarré
La règle d'autorisation au LUN nom-libre:fs.iscsi.disk peut se faire avec l'adresse IP
nom-libre:fs.iscsi.disk 192.168.25.21
Ou bien avec l'IQN :
nom-libre:fs.iscsi.disk iqn.1994-05.com.redhat:b51429c7fc6

Faire la conf dans /etc/iet/ietd.conf

systemctl restart iscsitarget

Vérif

cat /proc/net/iet/volume
Avec tgt
apt-get install tgt
Avec targetcli-fb (Debian 9)
Par-feu iptables
# Interface LAN : eth0 eth1
# Intercace SAN : eth2 eth3
# VLAN SAN : 192.168.25.0/24 (eth2), 192.168.26.0/24 (eth3)
 
# ALL : Autoriser les pings
iptables -A INPUT -p icmp -j ACCEPT
 
# SAN : Permettre réponse
iptables -A OUTPUT -o eth2 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth3 -m state --state NEW,ESTABLISHED -j ACCEPT
 
# SAN : Ouverture port TCP 3260
iptables -A INPUT -i eth2 -p tcp -m tcp --dport 3260 -j ACCEPT
iptables -A INPUT -i eth3 -p tcp -m tcp --dport 3260 -j ACCEPT
 
# Hors SAN : Bloquer le port TCP 3260
iptables -A INPUT -p tcp -m tcp --dport 3260 -j REJECT
 
# SAN : utilisable que pour le SAN
iptables -A INPUT -i eth2 -j REJECT
iptables -A INPUT -i eth3 -j REJECT

Initiateurs (client)

Voir

  • /sys/class/iscsi_session/
  • lsscsi
RedHat
yum install iscsi-initiator-utils

Changer éventuellement le IQN

/etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.1994-05.com.redhat:b51429c7fc6

Générer un nouveau nom IQN

iscsi-iname

Pour prendre en compte le changement d'IQN initiatorname.iscsi

systemctl restart iscsid.service
Accès au LUN

Lister les LUNs disponibles

#iscsiadm -m discovery --type sendtargets --portal 192.168.25.12
iscsiadm -m discovery -t st -p 192.168.25.12

Connexion à tous les LUNs dispo et autorisé

iscsiadm -m discovery -t st -p 192.168.25.12 --login

Connexion à un LUN spécifique

iscsiadm -m discovery -t st -p 192.168.25.12
192.168.25.12:3260,1 nom-libre:fs.iscsi.disk
iscsiadm -m node -p 192.168.25.12 -T nom-libre:fs.iscsi.disk --login

Vérif

iscsiadm -m session
ls -l /dev/disk/by-path/*iscsi*

Déconnexion

#iscsiadm -m node -u -p $(iscsiadm -m session |awk '{print $3}')
#iscsiadm -m node -u -T $(iscsiadm -m session | cut -d ' ' -f 4)
iscsiadm -m node -p 192.168.25.12 -u

Connaître tous les disques /dev/sd[a-z] SAN

ls -l /dev/disk/by-path/*iscsi*
lrwxrwxrwx 1 root root  9  9 nov.  14:18 /dev/disk/by-path/ip-192.168.25.12:3260-iscsi-nom-libre:fs.iscsi.disk-lun-0 -> ../../sdc
lrwxrwxrwx 1 root root 10  9 nov.  14:18 /dev/disk/by-path/ip-192.168.25.12:3260-iscsi-nom-libre:fs.iscsi.disk-lun-0-part1 -> ../../sdc1
Reset

Info

tree /var/lib/iscsi/
iscsiadm -m node
iscsiadm -m session -P3

Effacement config

umount /dev/disk/by-path/*iscsi*[1-9]
iscsiadm -m node --portal 192.168.25.12 -u
systemctl stop iscsid.service
systemctl stop iscsid.socket
 
yum remove iscsi-initiator-utils-iscsiuio iscsi-initiator-utils
rm -rf /var/lib/iscsi/
rm -rf /etc/iscsi/
Supervision
iscsiadm -m session -P1 |grep State

OK

                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE

NKO

                iSCSI Connection State: TRANSPORT WAIT
                iSCSI Session State: FREE
                Internal iscsid Session State: REOPEN
Debian
apt-get install open-iscsi
Diag
dmesg |grep sd
[  241.189053] sd 4:0:0:0: [sdc] Attached SCSI disk
iscsiadm -m session
iscsiadm -m session -P 3
Autres
yum install -y targetcli

Notes

#iscsiadm -m discovery --type sendtargets --portal 192.168.25.12
#iscsiadm -m node --targetname nom-libre:fs.iscsi.disk --portal 192.168.25.12 --login
 
iscsiadm -m iface -I iface0 --op=new -n iface.hwaddress -v "08:00:27:85:d1:16"
 
iscsiadm -m discovery --type sendtargets --portal 192.168.25.12 -I iface0
iscsiadm -m node --targetname nom-libre:fs.iscsi.disk --portal 192.168.25.12:3260 -I iface0 --login
iscsiadm -m discoverydb
192.168.25.12:3260 via sendtargets
192.168.56.12:3260 via sendtargets
192.168.26.12:3260 via sendtargets
iscsiadm -m discoverydb -o delete -p 192.168.56.12:3260 -t st

Pb

Pb1
iscsiadm -m session
tcp: [1] 192.168.25.12:3260,1 nom-libre:fs.iscsi.disk (non-flash)
iscsiadm -m node -p 192.168.25.12 -T nom-libre:fs.iscsi.disk -u
Logging out of session [sid: 1, target: nom-libre:fs.iscsi.disk, portal: 192.168.25.12,3260]
iscsiadm: Could not logout of [sid: 1, target: nom-libre:fs.iscsi.disk, portal: 192.168.25.12,3260].
iscsiadm: initiator reported error (9 - internal error)
iscsiadm: Could not logout of all requested sessions
iscsiadm -m session --sid=1 --op=delete
iscsiadm: This command will remove the record [iface: default, target: nom-libre:fs.iscsi.disk, portal: 192.168.25.12,3260], but a session is using it. Logout session then rerun command to remove record.
iscsiadm: Could not execute operation on all records: session exists

A tester

systemctl stop iscsi
systemctl stop iscsid
 
systemctl start iscsid
systemctl start iscsi
Erreur detected conn error (1020) / 24 - iSCSI login failed due to authorization failure
# dmesg
detected conn error (1020)
# iscsiadm -m discovery -t st -p 192.168.6.130 -l
24 - iSCSI login failed due to authorization failure
Solution

/etc/iscsi/iscsid.conf

discovery.sendtargets.timeo.login_timeout = 15
discovery.sendtargets.reopen_max = 5
discovery.sendtargets.timeo.auth_timeout = 45
discovery.sendtargets.timeo.active_timeout = 30
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
iscsiadm -m discovery -t st -p 192.168.6.130 -l

Où alors autoriser les accès concurrentiels sur le SAN, si c'est souhaité.

Autres ISCSI

udevinfo -a -p $(udevinfo -q path -n /dev/sdb)

Autres SAN

Manually Changing Queue Settings Not required unless LUNs are already in use with wrong settings. These settings can be safely changed on a running system, by locating the Pure LUNs:

grep PURE /sys/block/sd*/device/vendor

And writing the desired values into sysfs files:

echo noop > /sys/block/sdx/queue/scheduler

An example for loop is shown here to quickly set all Pure luns to the desired 'noop' elevator:

for disk in $(lsscsi | grep PURE | awk '{print $6}'); do
    echo noop > /sys/block/${disk##/dev/}/queue/scheduler
done

All changes in this section take effect immediately, without rebooting for RHEL5 and higher. RHEL 4 releases will require a reboot. These changes will not persist unless they are added to the udev rule. Notice, noop has [noop] to designate it as the desired scheduler.

$ cat /sys/block/sdb/queue/scheduler
[noop] deadline cfq
2025/03/24 15:06
blog.txt · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki