12 minute(s) de lecture

1. Création d’un stockage partagé à haute disponibilité (HA) d’un cluster basé sur DRBD à deux nœuds avec un réseau basé sur RDMA.

Proxmox, Debian, DRBD, RDMA, Live Migration, Shared Volume, HA.
Activez rdma pour drbd.
Migration en direct.

1.1. Début. En lien avec la baisse du prix des cartes réseau (j’en ai acheté une paire à deux ports avec une paire de câbles en cuivre pour 100$ avec livraison), il y avait une volonté de construire un cluster de deux nœuds avec deux points de panne, connecté directement par trois réseaux filaires et un WiFi, un disque NVME sur chaque nœud pour le stockage partagé. C’était censé être une option de cluster pour la maison ou pour une petite entreprise. Le choix s’est porté sur le stockage drbd avec rdma.

1.2. Réalisation.

1.2.1. Fer. Système. Configuration.

Deux nœuds avec Proxmox 8.3.2 installé :

root@pve1:~# pveversion 
pve-manager/8.3.2/3e76eec21c4a14a7 (running kernel: 6.8.12-5-pve)
[root@pve99 ~]$ pveversion
pve-manager/8.3.2/3e76eec21c4a14a7 (running kernel: 6.8.12-5-pve)

avec Mellanox Technologies ConnectX-3 Pro Cartes double port 40GbE MCX314A-BCCT debout connectées directement par des câbles en cuivre.

Nœud pve1 : 10.10.1.1 Une partie du résultat de la commande :

lspci -vvv  
01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]  
Subsystem: Mellanox Technologies Mellanox Technologies ConnectX-3 Pro Stand-up dual-port 40GbE MCX314A-BCCT
...
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core

Nœud pve99 : 10.10.1.2 Une partie du résultat de la commande :

lspci -vvv
01:00.0 Ethernet controller: Mellanox Technologies MT27520 Family [ConnectX-3 Pro]
Subsystem: Mellanox Technologies Mellanox Technologies ConnectX-3 Pro Stand-up dual-port 40GbE MCX314A-BCCT 
...
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core

1.2.2. Vérification de la fonctionnalité.

Installons le package avec “rping” sur les deux nœuds :

apt install rdmacm-utils

Sur le serveur :

Nœud 1 : pve1 (10.10.1.1) :

root@pve1:~# rping -s -v 

Sur le client :

Nœud 2 : pve99 (10.10.1.2) :

[root@pve99 ~]$ rping -c -a 10.10.1.1 -v

Voyons approximativement le résultat suivant :

ping data: rdma-ping-54436: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRST
ping data: rdma-ping-54437: bcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU
ping data: rdma-ping-54438: cdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV
ping data: rdma-ping-54439: defghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
ping data: rdma-ping-54440: efghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX
ping data: rdma-ping-54441: fghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY
ping data: rdma-ping-54442: ghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
ping data: rdma-ping-54443: hijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[
ping data: rdma-ping-54444: ijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[\
ping data: rdma-ping-54445: jklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
ping data: rdma-ping-54446: klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^
^C
[root@pve99 ~]$

Tout va bien.

4.2.3. Sur les deux nœuds, installez :

apt install drbd-utils
apt install build-essential flex bison libssl-dev libnl-3-dev libnl-genl-3-dev libxml2-dev xmlto xsltproc python3-pytest python3-sphinx python3-yaml python3-jinja2 dkms

Il faut arrêter le service!

systemctl list-units | grep drbd
drbdadm down all

Décharger les modules, définitivement !!!:

lsmod | grep drbd
systemctl stop drbd
rmmod drbd

Téléchargez la dernière version :

wget https://pkg.linbit.com//downloads/drbd/9/drbd-9.2.12.tar.gz

Décompressez :

tar xfz drbd-9.2.12.tar.gz

Allez dans le répertoire, compilez et installez :

cd drbd-9.2.12
make KVER=$(uname -r) all
make install

Installation du module

Copiez le module compilé dans le répertoire approprié du noyau :

cp  /lib/modules/$(uname -r)/updates/drbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/
cp  /lib/modules/$(uname -r)/updates/drbd_transport_rdma.ko /lib/modules/$(uname -r)/kernel/drivers/block/
cp  /lib/modules/$(uname -r)/updates/drbd_transport_tcp.ko /lib/modules/$(uname -r)/kernel/drivers/block/
cp  /lib/modules/$(uname -r)/updates/drbd_transport_lb-tcp.ko /lib/modules/$(uname -r)/kernel/drivers/block/

Mettez à jour la liste des modules disponibles :

depmod -a

Modules de chargement :

modprobe drbd
modprobe drbd_transport_rdma
modprobe drbd_transport_lb-tcp
modprobe drbd_transport_tcp
modinfo drbd

Premier nœud pve1 :

root@pve1:~# cat /proc/drbd
version: 9.2.12 (api:2/proto:118-122)
GIT-hash: 2da6f528dc4ab3fd25c511f7b03531100e54ab08 build by root@pve1, 2024-12-17 19:11:24
Transports (api:21): rdma (9.2.12) lb-tcp (9.2.12) tcp (9.2.12)

root@pve1:~#
root@pve1:~# modinfo drbd
filename:       /lib/modules/6.8.12-5-pve/updates/drbd.ko
softdep:        post: handshake
alias:          block-major-147-*
license:        GPL
version:        9.2.12
description:    drbd - Distributed Replicated Block Device v9.2.12
author:         Philipp Reisner <phil@linbit.com>, Lars Ellenberg <lars@linbit.com>
srcversion:     C0FA687B694B5082F797130
depends:        lru_cache,libcrc32c
retpoline:      Y
name:           drbd
vermagic:       6.8.12-5-pve SMP preempt mod_unload modversions 
parm:           enable_faults:int
parm:           fault_rate:int
parm:           fault_count:int
parm:           fault_devs:int
parm:           disable_sendpage:bool
parm:           allow_oos:DONT USE! (bool)
parm:           minor_count:Approximate number of drbd devices (1U-255U) (uint)
parm:           usermode_helper:string
parm:           protocol_version_min:
                Reject DRBD dialects older than this.
                Supported: DRBD 8 [86-101]; DRBD 9 [118-122].
                Default: 86 (drbd_protocol_version)
parm:           strict_names:restrict resource and connection names to ascii alnum and a subset of punct (drbd_strict_names)
root@pve1:~#

Deuxième nœud pve99 :

[root@pve99 ~]$ cat /proc/drbd
version: 9.2.12 (api:2/proto:118-122)
GIT-hash: 2da6f528dc4ab3fd25c511f7b03531100e54ab08 build by root@pve99, 2024-12-17 23:30:23
Transports (api:21): rdma (9.2.12) lb-tcp (9.2.12) tcp (9.2.12)
[root@pve99 ~]$

[root@pve99 ~]$ modinfo drbd
filename:       /lib/modules/6.8.12-5-pve/updates/drbd.ko
softdep:        post: handshake
alias:          block-major-147-*
license:        GPL
version:        9.2.12
description:    drbd - Distributed Replicated Block Device v9.2.12
author:         Philipp Reisner <phil@linbit.com>, Lars Ellenberg <lars@linbit.com>
srcversion:     45B06AA2C33AAFE56B535F5
depends:        lru_cache,libcrc32c
retpoline:      Y
name:           drbd
vermagic:       6.8.12-5-pve SMP preempt mod_unload modversions 
parm:           enable_faults:int
parm:           fault_rate:int
parm:           fault_count:int
parm:           fault_devs:int
parm:           disable_sendpage:bool
parm:           allow_oos:DONT USE! (bool)
parm:           minor_count:Approximate number of drbd devices (1U-255U) (uint)
parm:           usermode_helper:string
parm:           protocol_version_min:
                Reject DRBD dialects older than this.
                Supported: DRBD 8 [86-101]; DRBD 9 [118-122].
                Default: 86 (drbd_protocol_version)
parm:           strict_names:restrict resource and connection names to ascii alnum and a subset of punct (drbd_strict_names)
[root@pve99 ~]$

On attribue le chargement des modules à un fichier sur les deux nœuds :

nano /etc/modules

Exemple de fichier :

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

# Generated by sensors-detect on Sun Sep 29 22:12:00 2024
# Chip drivers
it87
vfio
vfio_iommu_type1
vfio_pci
#vfio_virqfd #not necessary if kernel 6.2

nvmet
nvmet-tcp
nvme-rdma
rdma_ucm
rdma_cm
ib_uverbs
mlx4_ib
drbd
drbd_transport_rdma
drbd_transport_lb-tcp
drbd_transport_tcp

1.3. Configuration des appareils DRBD.

Il y a deux nœuds. Chaque nœud possède un disque : nvme0n1, d’ailleurs, lors du chargement, l’ordre peut être modifié : nvme0n1, nvme1n1…, s’il y a plusieurs disques, considérez donc le cas par étiquette. Quand on couple des disques, il vaut mieux qu’ils soient identiques, marqués à l’identique.

1.3.1 Préparation des disques

Nous vérifions la taille du secteur du disque. Nous définissons la même chose, si nécessaire, changeons pour pour les performances maximales du nœud 1, pve1

root@pve1:~# nvme list
Node Generic SN Model Namespace Usage Format FW Rev
/dev/nvme1n1 /dev/ng1n1 S4EUNG0M328258D Samsung SSD 970 EVO Plus 250GB 1 214.99 GB / 250.06 GB 512 B + 0 B 1B2QEXM7
/dev/nvme0n1 /dev/ng0n1 50026B7282A726A4 KINGSTON SKC3000S512G 1 512.11 GB / 512.11 GB 4 KiB + 0 B EIFK31.6

Nous vérifions la taille du bloc

root@pve1:~# nvme id-ns /dev/nvme0 -n 1 -H | grep &quot;LBA Format&quot;
[6:5] : 0 Most significant 2 bits of Current LBA Format Selected
[3:0] : 0x1 Least significant 4 bits of Current LBA Format Selected
LBA Format 0 : Metadata Size: 0 bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good
LBA Format 1 : Metadata Size: 0 bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better (in use)
root@pve1:~#

Si nécessaire, nous le changeons en 4k

root@pve1:~# nvme id-ns /dev/format --lbaf=1 /dev/nvme0n1

De même, nœud 2, pve99

1.3.2. Avec l’aide de fdisk, nous marquerons le premier comme suit :

root@pve1:~# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 125026902 sectors
Disk model: KINGSTON SKC3000S512G                   
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: A1F37274-73E6-864F-B0B6-9BDD551BBD45

Device             Start       End  Sectors  Size Type
/dev/nvme0n1p1      4096    266239   262144    1G Linux swap
/dev/nvme0n1p2    266240  21237759 20971520   80G Linux filesystem
/dev/nvme0n1p3 105123840 121901055 16777216   64G Linux filesystem
/dev/nvme0n1p4 121901056 125026815  3125760 11.9G Linux swap
/dev/nvme0n1p5  21237760  63180799 41943040  160G Linux filesystem
/dev/nvme0n1p6  63180800 105123839 41943040  160G Linux filesystem

Partition table entries are not in disk order.
root@pve1:~#

Enregistrons le balisage du disque dans un fichier :

root@pve1:~# sfdisk -d /dev/nvme0n1 > nvmeKINGSTON512P6.dump

Cela ressemblera à ceci :

root@pve1:~# cat nvmeKINGSTON512P6.dump
label: gpt
label-id: A1F37274-73E6-864F-B0B6-9BDD551BBD45
device: /dev/nvme0n1
unit: sectors
first-lba: 256
last-lba: 125026896
sector-size: 4096  

/dev/nvme0n1p1 : start=        4096, size=      262144, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=B21C1B97-64EE-6948-AA0F-0BBA8797EB91
/dev/nvme0n1p2 : start=      266240, size=    20971520, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=8291281C-CA4C-0F4C-AD9E-C30C52FFBC04
/dev/nvme0n1p3 : start=   105123840, size=    16777216, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=47A78E4D-FC8E-F54B-8DAF-D52A7908590C
/dev/nvme0n1p4 : start=   121901056, size=     3125760, type=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F, uuid=7F23E207-9E1A-1B42-962F-98BED3C1F479
/dev/nvme0n1p5 : start=    21237760, size=    41943040, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=A00C2C46-01F3-1B48-9AB2-B458FDADC3D7
/dev/nvme0n1p6 : start=    63180800, size=    41943040, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=207CEE45-7593-6441-9FAF-99E294452177
root@pve1:~#

Désormais, sur un autre nœud, nous enregistrerons immédiatement le balisage sur le disque, et nous ferons de même lors du remplacement d’un disque endommagé :

sfdisk /dev/nvme0n1 < nvmeKINGSTON512P6.dump

En conséquence, nous avons :

[root@pve99 ~]$ fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 125026902 sectors
Disk model: KINGSTON SKC3000S512G                   
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: A1F37274-73E6-864F-B0B6-9BDD551BBD45

Device             Start       End  Sectors  Size Type
/dev/nvme0n1p1      4096    266239   262144    1G Linux swap
/dev/nvme0n1p2    266240  21237759 20971520   80G Linux filesystem
/dev/nvme0n1p3 105123840 121901055 16777216   64G Linux filesystem
/dev/nvme0n1p4 121901056 125026815  3125760 11.9G Linux swap
/dev/nvme0n1p5  21237760  63180799 41943040  160G Linux filesystem
/dev/nvme0n1p6  63180800 105123839 41943040  160G Linux filesystem

Partition table entries are not in disk order.
[root@pve99 ~]$

Nous voyons également des étiquettes de partition de disque identiques, que nous utiliserons plus tard :

[root@pve99 ~]$ blkid /dev/nvme0n1p5
/dev/nvme0n1p5: UUID="6b33cc5a02d7cc72" TYPE="drbd" PARTUUID="a00c2c46-01f3-1b48-9ab2-b458fdadc3d7"
[root@pve99 ~]$ blkid /dev/nvme0n1p6
/dev/nvme0n1p6: UUID="f0eb844c4d858ddc" TYPE="drbd" PARTUUID="207cee45-7593-6441-9faf-99e294452177"
[root@pve99 ~]$

1.3.3.Configuration des filtres LVM. Si vous utilisez LVM pour les appareils drbd. C’EST TRÈS IMPORTANT ! Pour que lvm fonctionne au-dessus du périphérique drbd et ne touche pas les périphériques physiques correspondants, vous devez configurer le fichier /etc/lvm/lvm.conf.

Modifiez sur les deux nœuds :

nano /etc/lvm/lvm.conf

La vue d’une partie du fichier, généralement sa fin :

devices {
     # added by pve-manager to avoid scanning ZFS zvols and Ceph rbds
     filter=["r|/dev/zd.*|","r|/dev/rbd.*|",
#"r|/dev/mapper/vg_drbd.*|",
#"r|/dev/.*vg_drbd.*|",
"r|.*a00c2c46-01f3-1b48-9ab2-b458fdadc3d7.*|",
"r|.*207cee45-7593-6441-9faf-99e294452177.*|",
"a|/dev/drbd.*|"]
     global_filter=["r|/dev/zd.*|","r|/dev/rbd.*|",
"r|.*a00c2c46-01f3-1b48-9ab2-b458fdadc3d7.*|",
"r|.*207cee45-7593-6441-9faf-99e294452177.*|",
"a|/dev/drbd.*|"]
}

**NÉCESSAIREMENT! Pour postuler, vous devez exécuter la commande sur les deux nœuds, puis un redémarrage est requis : update-initramfs -u

1.3.3. Nous créons des appareils drbd : drbd0à partir d’un appareil physique : nvme0n1p5 (PARTUUID=”a00c2c46-01f3-1b48-9ab2-b458fdadc3d7”), drbd1à partir d’un appareil physique : /dev/nvme0n1p6 (PARTUUID=”207cee45-7593-6441-9faf-99e294452177”). Nous faisons cela sur les deux nœuds (les fichiers sont créés sur un nœud et copiés sur un autre nœud).

nano /etc/drbd.d/r0.res

Type de fichier :

resource r0 {
    protocol  C;
    on pve1 {
            address 10.10.2.1:7788;
                volume 0 {
                    device    /dev/drbd0 minor 0;
                    disk /dev/disk/by-partuuid/a00c2c46-01f3-1b48-9ab2-b458fdadc3d7;
                    #disk /dev/nvme0n1p5;
                    meta-disk internal;
                }
    }
    on pve99 {
            address 10.10.2.2:7788;
                volume 0 {
                    device    /dev/drbd0 minor 0;
                    disk /dev/disk/by-partuuid/a00c2c46-01f3-1b48-9ab2-b458fdadc3d7;
                    #disk /dev/nvme0n1p5;
                    meta-disk internal;
                }
    }
    startup {
        degr-wfc-timeout 60;
        become-primary-on both;
    }
    disk {
        on-io-error   detach;
        c-plan-ahead  10;
        c-fill-target 100K;
        c-min-rate    500M;
        c-max-rate    1000M;

        no-disk-flushes;
        no-disk-barrier;
    }
    net {
        transport   rdma;
        max-buffers 36k;
        sndbuf-size 10M;
        rcvbuf-size 10M;
        allow-two-primaries;
    }
}

Fichier pour la deuxième ressource :

nano /etc/drbd.d/r1.res

Type de fichier :

resource r1 {
    protocol  C;
    on pve1 {
            address 10.10.2.1:7789;
        volume 1 {
            # device name
            device /dev/drbd1  minor 1;
            # specify disk to be used for devide above
            disk /dev/disk/by-partuuid/207cee45-7593-6441-9faf-99e294452177;
            #disk /dev/nvme0n1p6;
            meta-disk internal;
        }
    }
    on pve99 {
             address 10.10.2.2:7789;
        volume 1 {
            device /dev/drbd1  minor 1;
            disk /dev/disk/by-partuuid/207cee45-7593-6441-9faf-99e294452177;
            #disk /dev/nvme0n1p6;
            meta-disk internal;
        }
    }
    startup {
        degr-wfc-timeout 60;
        become-primary-on both;
    }
    disk {
        on-io-error   detach;
        c-plan-ahead  10;
        c-fill-target 100K;
        c-min-rate    500M;
        c-max-rate    1000M;

        no-disk-flushes;
        no-disk-barrier;
    }
    net {
        transport   rdma;
        max-buffers 36k;
        sndbuf-size 10M;
        rcvbuf-size 10M;
        allow-two-primaries;
    }
}

1.3.4. Nous démarrons le service et créons des ressources, nous faisons cela sur les deux nœuds :

 # systemctl enable --now drbd

# systemctl restart drbd
# drbdadm create-md r{0,1}
# drbdadm up r{0,1}

Ensuite, sur un seul nœud, nous initialisons les ressources et effectuons la synchronisation initiale :

root@pve1:~# drbdadm primary --force r{0,1}

En attente de synchronisation.

Nous le faisons également sur le deuxième nœud.

root@pve99:~# drbdadm primary --force r{0,1}

Nous vérifions :

[root@pve99 ~]$ drbdadm status

r0 role:Primary
  disk:UpToDate open:no
  pve1 role:Primary
    peer-disk:UpToDate

r1 role:Primary
  volume:1 disk:UpToDate open:no
  pve1 role:Primary
    volume:1 peer-disk:UpToDate

[root@pve99 ~]$

1.3.5. Ensuite, nous créons des périphériques LVM DRBD physiques sur les deux nœuds :

root@pve1:~# pvcreate /dev/drbd{0,1}
  Physical volume "/dev/drbd0" successfully created
  Physical volume "/dev/drbd1" successfully created
 
root@ve99:~# pvcreate /dev/drbd{0,1}
  Physical volume "/dev/drbd0" successfully created
  Physical volume "/dev/drbd1" successfully created

і створіть групи томів лише на одному з вузлів:
root@pve1:~# vgcreate vg_drbd0 /dev/drbd0
  Volume group "vg_drbd0" successfully created
 
root@pve1:~# vgcreate vg_drbd1 /dev/drbd1
  Volume group "vg_drbd1" successfully created

Les groupes peuvent désormais être vus sur les deux nœuds grâce à la réplication DRBD :

root@pve1:~# vgs
  VG       #PV #LV #SN Attr   VSize    VFree  
  os         1  17   0 wz--n- <465.76g  71.73g
  pve        1   8   0 wz--n-  231.88g  16.00g
  vg_drbd0   1   5   0 wz--n-  159.99g 106.99g
  vg_drbd1   1   2   0 wz--n-  159.99g 147.99g
root@pve1:~#

Deuxième :

[root@pve99 ~]$ root@pve1:~pvs
  PV         VG       Fmt  Attr PSize   PFree  
  /dev/drbd0 vg_drbd0 lvm2 a--  159.99g 106.99g
  /dev/drbd1 vg_drbd1 lvm2 a--  159.99g 147.99g
  /dev/sda3  pve      lvm2 a--  <36.76g   4.50g
[root@pve99 ~]$

1.3.6. Stockage partagé.

Nous allons à la console Web d’administration PVE et ajoutons le stockage LVM au centre de données, sélectionnons vg_drbd0 dans la liste déroulante et cochons les cases actif et partagé. Dans la liste déroulante Nœuds , nous sélectionnons les nœuds pve1 et pve99 et cliquons sur Ajouter . Répétez la même chose pour vg_drbd1.

1.3.7. Créons une machine virtuelle avec un disque sur un stockage partagé.

Faisons un test :

root@debvsan:/home/vov# fio --filename=/dev/sda1 --direct=1 --rw=read --bs=1m --size=20G --numjobs=200 --runtime=60 --group_reporting --name=file1 

file1: (g=0): rw=read, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=psync, iodepth=1
...
fio-3.33
Starting 200 processes
Jobs: 200 (f=200): [R(200)][100.0%][r=1368MiB/s][r=1368 IOPS][eta 00m:00s]
file1: (groupid=0, jobs=200): err= 0: pid=1092: Sun Dec 29 13:12:07 2024
  read: IOPS=1367, BW=1368MiB/s (1434MB/s)(80.3GiB/60130msec)
    clat (msec): min=2, max=1177, avg=145.78, stdev=97.77
     lat (msec): min=2, max=1177, avg=145.78, stdev=97.77
    clat percentiles (msec):
     |  1.00th=[   30],  5.00th=[   52], 10.00th=[   73], 20.00th=[   94],
     | 30.00th=[   97], 40.00th=[  103], 50.00th=[  113], 60.00th=[  131],
     | 70.00th=[  153], 80.00th=[  188], 90.00th=[  253], 95.00th=[  330],
     | 99.00th=[  514], 99.50th=[  592], 99.90th=[  936], 99.95th=[  995],
     | 99.99th=[ 1150]
   bw (  MiB/s): min=  399, max= 2673, per=100.00%, avg=1385.68, stdev= 2.71, samples=23547
   iops        : min=  202, max= 2648, avg=1308.01, stdev= 2.75, samples=23547
  lat (msec)   : 4=0.01%, 10=0.02%, 20=0.11%, 50=4.66%, 100=32.25%
  lat (msec)   : 250=52.77%, 500=9.10%, 750=0.77%, 1000=0.28%, 2000=0.05%
  cpu          : usr=0.00%, sys=0.04%, ctx=92967, majf=0, minf=53984
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=82238,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=1368MiB/s (1434MB/s), 1368MiB/s-1368MiB/s (1434MB/s-1434MB/s), io=80.3GiB (86.2GB), run=60130-60130msec

Disk stats (read/write):
  sda: ios=81909/617, merge=30/54, ticks=11925926/1508, in_queue=11927523, util=88.78%
root@debvsan:/home/vov#

Déplaçons le disque de la machine virtuelle d’un stockage à un autre.

root@pve1:~# qm move-disk 105 scsi0 vg_drbd0 

create full clone of drive scsi0 (vg_drbd1:vm-105-disk-0)
  Logical volume "vm-105-disk-2" created.
drive mirror is starting for drive-scsi0
drive-scsi0: transferred 6.0 MiB of 8.0 GiB (0.07%) in 0s
drive-scsi0: transferred 1013.0 MiB of 8.0 GiB (12.37%) in 1s
drive-scsi0: transferred 2.0 GiB of 8.0 GiB (24.40%) in 2s
drive-scsi0: transferred 2.9 GiB of 8.0 GiB (36.51%) in 3s
drive-scsi0: transferred 3.9 GiB of 8.0 GiB (48.63%) in 4s
drive-scsi0: transferred 4.9 GiB of 8.0 GiB (60.84%) in 5s
drive-scsi0: transferred 5.8 GiB of 8.0 GiB (72.97%) in 6s
drive-scsi0: transferred 6.8 GiB of 8.0 GiB (84.95%) in 7s
drive-scsi0: transferred 7.8 GiB of 8.0 GiB (97.08%) in 8s
drive-scsi0: transferred 8.0 GiB of 8.0 GiB (100.00%) in 9s, ready
all 'mirror' jobs are ready
drive-scsi0: Completing block job...
drive-scsi0: Completed successfully.
drive-scsi0: mirror-job finished
root@pve1:~#

Le prochain sera… —

Laisser un commentaire

Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués *

Chargement...