Tous les produits
Search
Centre de documentation

Elastic Compute Service:Test block storage performance

Dernière mise à jour :Aug 18, 2026

L'évaluation des performances de votre stockage par blocs vous permet de comprendre ses capacités et de l'optimiser pour obtenir les meilleures performances. Le test d'un disque brut fournit les métriques de performance les plus précises. Cette rubrique explique comment utiliser l'outil open source Fio sur un système Linux pour évaluer les principales métriques de performance d'un disque brut, notamment les IOPS, le débit et la latence.

Remarque

Fio (Flexible I/O Tester) est un puissant outil de test d'E/S open source, utilisé pour évaluer les périphériques de stockage avec diverses charges de travail, telles que les lectures et écritures aléatoires ou séquentielles.

Procédure

Important
  • Le test d'un disque brut fournit les résultats de performance du stockage par blocs les plus précis. Toutefois, l'exécution directe de Fio sur un périphérique de stockage par blocs contenant des partitions, un système de fichiers ou d'autres données entraînera des erreurs de système de fichiers et une perte de données. Avant de commencer, créez un snapshot pour sauvegarder vos données. Pour plus d'informations, consultez Créer manuellement un snapshot.

  • Nous vous recommandons vivement de ne pas tester le disque système ni un disque de données contenant des données afin d'éviter toute perte de données. Pour les tests, nous vous conseillons d'utiliser un disque de données nouvellement créé, non initialisé et vide.

  • Les résultats des tests de performance sont obtenus dans un environnement de test et sont fournis à titre indicatif uniquement. Dans un environnement de production, les performances d'un cloud disk peuvent varier en raison de facteurs tels que les conditions réseau et l'accès concurrent. Les performances réelles seront différentes.

  • Une fois le test terminé, gérez le nouveau cloud disk comme suit :

Cette rubrique utilise l'image publique Alibaba Cloud Linux 3.2104 LTS 64 bits comme exemple. Les étapes peuvent varier selon votre système d'exploitation.

  1. Connectez-vous à une instance ECS.

    Pour plus d'informations, consultez Se connecter à une instance Linux à l'aide de Workbench.

  2. Exécutez la commande suivante pour trouver les noms de périphérique de votre stockage par blocs.

    sudo fdisk -lu

    Dans la sortie de la commande, /dev/vda correspond au disque système, tandis que /dev/vdb et /dev/vdc sont des disques de données. /dev/vdc ne possède pas de partition.

    [ecs-a                          ]$ sudo fdisk -lu
    Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: F51132A7-67B1-4650-806D-FD0DE6E1210C
    Device      Start      End  Sectors  Size Type
    /dev/vda1    2048     6143     4096    2M BIOS boot
    /dev/vda2    6144   415743   409600  200M EFI System
    /dev/vda3  415744 83886046 83470303 39.8G Linux filesystem
    Disk /dev/vdb: 30 GiB, 32212254720 bytes, 62914560 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: C36DF120-8650-4188-8043-AEF9C85F31EF
    Device     Start      End  Sectors Size Type
    /dev/vdb1   2048 62912511 62910464  30G Linux filesystem
    Disk /dev/vdc: 40 GiB, 42949672960 bytes, 83886080 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Comme indiqué dans la sortie de la commande, l'instance dispose de trois périphériques de stockage par blocs : le disque système /dev/vda, ainsi que les disques de données /dev/vdb et /dev/vdc.

  3. Exécutez la commande suivante pour vérifier si les périphériques de stockage par blocs comportent des partitions ou un système de fichiers.

    sudo blkid
    [ecs-a                          ]$ sudo blkid
    /dev/vdb1: UUID="9c32c24f-d2b8-4aa8-8" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="4bd66635-f5f4-4dc0-9bdd-664fd5b8d2fb"
    /dev/vda2: SEC_TYPE="msdos" UUID="7E" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="82a50cd6-9899-41eb-91fe-7027bf257086"
    /dev/vda3: LABEL="root" UUID="beef9d8d-ba84-46d9-8" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="e0d4fa20-912d-4e86-943e-6b0368xxxxxx"
    /dev/vda1: PARTUUID="d083a7cd-a7ea-4898-89d5-8e1510bed584"

    La sortie indique que les périphériques /dev/vda et /dev/vdb possèdent des partitions et des systèmes de fichiers. Aucune information concernant /dev/vdc n'est renvoyée, ce qui signifie que /dev/vdc ne comporte ni partition ni système de fichiers.

    Avertissement

    Si un périphérique que vous souhaitez tester contient des partitions, un système de fichiers ou des données, l'exécution directe de Fio sur ce périphérique entraînera des erreurs de système de fichiers et une perte de données. Si votre disque de données contient des partitions et un système de fichiers, nous vous recommandons de créer un nouveau disque de données vide pour les tests.

    1. Vous pouvez créer un cloud disk en paiement à l'utilisation avec les mêmes configurations et le joindre à l'instance pour les tests. Pour plus d'informations, consultez Créer un disque de données.

    2. Une fois le test terminé, vous pouvez libérer l'instance selon vos besoins. Pour plus d'informations, consultez Libérer une instance.

  4. Avant d'évaluer les performances du stockage par blocs, sauvegardez les données du périphérique que vous prévoyez de tester afin d'éviter toute perte de données. Pour plus d'informations, consultez Créer manuellement un snapshot.

    Remarque

    L'utilisation des snapshots est facturée. Pour plus d'informations, consultez Facturation des snapshots.

  5. Exécutez la commande suivante pour installer la bibliothèque libaio et l'outil Fio. Choisissez la commande en fonction de votre système d'exploitation.

    Alibaba Cloud Linux 2/3, CentOS 6 et versions ultérieures

    Remarque

    CentOS 6 a atteint sa fin de vie (EOL). Conformément aux règles de la communauté Linux, tout le contenu a été supprimé de l'adresse du dépôt CentOS 6 suivante : http://mirror.centos.org/centos-6/. Si vous continuez à utiliser le dépôt CentOS 6 par défaut sur Alibaba Cloud, une erreur sera signalée. Pour utiliser des packages d'installation spécifiques de CentOS 6, modifiez l'adresse du dépôt CentOS 6. Pour plus d'informations, consultez Comment modifier les adresses des dépôts CentOS 6 ?

    sudo yum install libaio libaio-devel fio -y

    Debian 9 et versions ultérieures, Ubuntu 14 et versions ultérieures

    Important

    Debian 9 et Debian 10 ont atteint leur fin de vie (EOL). Si votre instance ECS exécute Debian 9 ou Debian 10, commencez par modifier l'adresse du dépôt. Pour plus d'informations, consultez Modifier les adresses des dépôts pour CentOS et Debian après la fin de vie.

    sudo apt-get update
    sudo apt-get install libaio* fio -y
  6. Accédez au répertoire /tmp.

    cd /tmp
  7. Exécutez une commande de test de performance. Pour les commandes spécifiques, reportez-vous aux sections suivantes.

  8. Consultez les résultats du test. Les valeurs peuvent varier selon le cloud disk. Les valeurs indiquées dans les blocs de code suivants sont fournies à titre indicatif uniquement.

  • Pour les résultats de test liés aux IOPS, reportez-vous au champ IOPS=***. L'exemple de sortie Fio suivant présente les résultats d'un test d'écriture aléatoire (Rand_Write). Dans la ligne write, IOPS=2301 constitue la métrique de performance clé pour les écritures aléatoires :

    Starting 1 process
    Jobs: 1 (f=0): [f(1)][100.0%][w=9061KiB/s][w=2265 IOPS][eta 00m:00s]
    Rand_Write Testing: (groupid=0, jobs=1): err= 0: pid=15900: Tue Nov 19 11:28:24 2024
      write: IOPS=2301, BW=9206KiB/s (9427kB/s)(1024MiB/113896msec); 0 zone resets
        slat (usec): min=2, max=1718, avg= 5.43, stdev= 7.98
        clat (usec): min=382, max=119809, avg=55606.05, stdev=7040.12
        lat (usec): min=394, max=119812, avg=55611.49, stdev=7039.41
        clat percentiles (msec):
         |  1.00th=[    9],  5.00th=[   51], 10.00th=[   51], 20.00th=[   51],
         | 30.00th=[   51], 40.00th=[   57], 50.00th=[   60], 60.00th=[   61],
         | 70.00th=[   61], 80.00th=[   61], 90.00th=[   61], 95.00th=[   61],
         | 99.00th=[   63], 99.50th=[   65], 99.90th=[   67], 99.95th=[   77],
         | 99.99th=[  101]
       bw (  KiB/s): min= 9000, max=28976, per=100.00%, avg=9213.14, stdev=1317.97, samples=227
       iops        : min= 2250, max= 7244, avg=2303.28, stdev=329.49, samples=227
      lat (usec)   : 500=0.01%, 750=0.01%, 1000=0.01%
      lat (msec)   : 2=0.03%, 4=0.45%, 10=0.52%, 20=0.04%, 50=0.82%
      lat (msec)   : 100=98.11%, 250=0.01%
  • Pour les résultats de test liés au débit, reportez-vous au champ BW=***, comme illustré dans la sortie suivante :

    Jobs: 1 (f=1): [W(1)][100.0%][w=85.0MiB/s][w=85 IOPS][eta 00m:00s]
    Write_PPS_Testing: (groupid=0, jobs=1): err= 0: pid=17934: Tue Nov 19 11:32:19 2024
      write: IOPS=124, BW=124MiB/s (130MB/s)(1024MiB/8229msec); 0 zone resets
        slat (usec): min=27, max=4026, avg=94.51, stdev=125.97
        clat (msec): min=4, max=1154, avg=513.48, stdev=208.14
         lat (msec): min=4, max=1154, avg=513.57, stdev=208.15
        clat percentiles (msec):
         |  1.00th=[   17],  5.00th=[   75], 10.00th=[   93], 20.00th=[  567],
         | 30.00th=[  584], 40.00th=[  584], 50.00th=[  584], 60.00th=[  584],
         | 70.00th=[  584], 80.00th=[  584], 90.00th=[  592], 95.00th=[  693],
         | 99.00th=[ 1062], 99.50th=[ 1099], 99.90th=[ 1133], 99.95th=[ 1150],
         | 99.99th=[ 1150]
       bw (  KiB/s): min=30720, max=356352, per=96.43%, avg=122881.25, stdev=65548.59, samples=16
       iops        : min=   30, max=  348, avg=120.00, stdev=64.01, samples=16
      lat (msec)   : 10=0.49%, 20=0.68%, 50=2.15%, 100=10.74%, 250=1.86%
      lat (msec)   : 500=3.22%, 750=76.46%, 1000=2.73%, 2000=1.66%
      cpu          : usr=0.89%, sys=0.45%, ctx=1025, majf=0, minf=10
      IO depths    : 1=0.1%, 2=0.2%, 4=0.4%, 8=0.8%, 16=1.6%, 32=3.1%, >=64=93.8%
         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=99.9%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
         issued rwts: total=0 1024 0 0 short=0 0 0 0 dropped=0 0 0 0
  • Pour les résultats de test liés à la latence, reportez-vous au champ lat (usec). Dans la ligne de statistiques de latence totale lat (usec): min=254, max=169188, avg=432.25, stdev=487.95, la latence moyenne est d'environ 432 microsecondes.

    Jobs: 1 (f=1): [w(1)][100.0%][w=9169KiB/s][w=2292 IOPS][eta 00m:00s]
    Rand_Write_Latency_Testing: (groupid=0, jobs=1): err= 0: pid=19530: Tue Nov 19 11:38:31 2024
      write: IOPS=2301, BW=9206KiB/s (9427kB/s)(1024MiB/113903msec); 0 zone resets
        slat (usec): min=2, max=19160, avg= 8.68, stdev=40.53
        clat (usec): min=3, max=169175, avg=423.57, stdev=486.23
         lat (usec): min=254, max=169188, avg=432.25, stdev=487.95
        clat percentiles (usec):
         |  1.00th=[  334],  5.00th=[  343], 10.00th=[  347], 20.00th=[  351],
         | 30.00th=[  355], 40.00th=[  359], 50.00th=[  367], 60.00th=[  371],
         | 70.00th=[  379], 80.00th=[  396], 90.00th=[  465], 95.00th=[  562],
         | 99.00th=[ 1614], 99.50th=[ 2671], 99.90th=[ 5735], 99.95th=[ 6194],
         | 99.99th=[ 7439]
       bw (  KiB/s): min= 5840, max=10416, per=100.00%, avg=9211.26, stdev=495.72, samples=227
       iops        : min= 1460, max= 2604, avg=2302.80, stdev=123.94, samples=227
      lat (usec)   : 4=0.01%, 10=0.01%, 50=0.01%, 100=0.01%, 250=0.01%
      lat (usec)   : 500=93.01%, 750=4.06%, 1000=0.97%
      lat (msec)   : 2=1.23%, 4=0.42%, 10=0.30%, 20=0.01%, 50=0.01%
      lat (msec)   : 250=0.01%
      cpu          : usr=0.84%, sys=3.00%, ctx=262469, majf=0, minf=10

Commandes de test de performance des cloud disks

Avertissement

Si un périphérique que vous souhaitez tester contient des partitions, un système de fichiers ou des données, l'exécution directe de Fio sur ce périphérique entraînera des erreurs de système de fichiers et une perte de données. Si votre disque de données contient des partitions et un système de fichiers, nous vous recommandons de créer un nouveau disque de données vide pour les tests.

  1. Vous pouvez créer un cloud disk en paiement à l'utilisation avec les mêmes configurations et le joindre à l'instance pour les tests. Pour plus d'informations, consultez Créer un disque de données.

  2. Une fois le test terminé :

Les valeurs des paramètres dans les commandes suivantes sont fournies à titre indicatif uniquement. Remplacez /dev/your_device par le nom du périphérique de stockage par blocs identifié à l'étape 2. Par exemple, si le nom du périphérique du cloud disk à tester est /dev/vdb, vous devez remplacer /dev/your_device par /dev/vdb dans les commandes. Pour plus d'informations sur les paramètres Fio, consultez Paramètres Fio.

  • Testez les IOPS d'écriture aléatoire d'un cloud disk :

    sudo fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Write_Testing
  • Testez les IOPS de lecture aléatoire d'un cloud disk :

    sudo fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Read_Testing
  • Testez le débit d'écriture séquentielle d'un cloud disk :

    sudo fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Write_PPS_Testing
  • Testez le débit de lecture séquentielle d'un cloud disk :

    sudo fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Read_PPS_Testing
  • Testez la latence d'écriture aléatoire d'un cloud disk :

    sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Write_Latency_Testing
  • Testez la latence de lecture aléatoire d'un cloud disk :

    sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Read_Latency_Testing

Pour des instructions détaillées sur la façon de tester des types spécifiques de cloud disks, consultez Évaluer les performances IOPS d'un ESSD.

Commandes de test de performance des disques locaux

Avertissement

Si un périphérique que vous souhaitez tester contient des partitions, un système de fichiers ou des données, l'exécution directe de Fio sur ce périphérique entraînera des erreurs de système de fichiers et une perte de données. Si votre disque de données contient des partitions et un système de fichiers, nous vous recommandons de créer une nouvelle instance avec des disques locaux pour les tests.

  1. Les disques locaux ne peuvent être créés que lors de la création d'une instance. Pour exécuter le test, créez une nouvelle instance avec les mêmes configurations. Pour plus d'informations, consultez Créer une instance à l'aide de l'assistant.

  2. Une fois le test terminé, libérez l'instance si vous n'en avez plus besoin.

Les commandes de test suivantes s'appliquent aux disques locaux NVMe SSD et SATA HDD. Les valeurs des paramètres dans les commandes suivantes sont fournies à titre indicatif uniquement. Remplacez /dev/your_device par le nom du périphérique de stockage par blocs identifié à l'étape 2. Par exemple, si le nom du périphérique du disque local à tester est /dev/vdb, vous devez remplacer /dev/your_device par /dev/vdb dans les commandes. Pour plus d'informations sur les paramètres Fio, consultez Paramètres Fio.

  • Testez les IOPS d'écriture aléatoire d'un disque local :

    sudo fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez les IOPS de lecture aléatoire d'un disque local :

    sudo fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez le débit d'écriture séquentielle d'un disque local :

    sudo fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez le débit de lecture séquentielle d'un disque local :

    sudo fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez la latence d'écriture aléatoire d'un disque local :

    sudo fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez la latence de lecture aléatoire d'un disque local :

    sudo fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez la latence d'écriture séquentielle d'un disque local :

    sudo fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • Testez la latence de lecture séquentielle d'un disque local :

    sudo fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test

Paramètres Fio

Le tableau suivant décrit les paramètres Fio utilisés dans les commandes de test.

Paramètre

Description

direct

Indique s'il faut utiliser les E/S directes. Valeur par défaut : 1.

  • 1 : utilise les E/S directes, ce qui signifie que le cache d'E/S est contourné et que les données sont écrites directement sur le périphérique de stockage.

  • 0 : n'utilise pas les E/S directes.

iodepth

La profondeur de la file d'attente d'E/S pour le test. Par exemple, -iodepth=128 indique que Fio peut avoir jusqu'à 128 requêtes d'E/S en cours.

rw

La politique de lecture/écriture pour le test. Les valeurs valides incluent :

  • randwrite : écriture aléatoire.

  • randread : lecture aléatoire.

  • read : lecture séquentielle.

  • write : écriture séquentielle.

  • randrw : lecture et écriture aléatoires mixtes.

ioengine

Le moteur d'E/S que Fio utilise pour le test. libaio est généralement utilisé car il ressemble étroitement aux modèles d'application quotidiens. Pour plus d'options, consultez la documentation officielle de Fio.

bs

La taille de bloc pour chaque unité d'E/S. Valeur par défaut : 4 Kio. Vous pouvez spécifier des valeurs distinctes pour les opérations de lecture et d'écriture au format read,write. L'une ou l'autre valeur peut être laissée vide pour utiliser la valeur par défaut.

size

La taille du fichier de test.

Fio lit ou écrit la quantité de données spécifiée, puis s'arrête, sauf si cela est limité par d'autres options telles que runtime. Si ce paramètre n'est pas spécifié, Fio utilise la taille totale du fichier ou du périphérique donné. Vous pouvez également spécifier la taille sous forme de pourcentage de 1 à 100. Par exemple, si vous spécifiez size=20 %, Fio utilise 20 % de la taille totale du fichier ou du périphérique.

numjobs

Le nombre de threads simultanés pour le test. Valeur par défaut : 1.

runtime

La durée du test en secondes.

Si ce paramètre n'est pas spécifié, FIO termine les opérations de lecture/écriture sur un fichier de la taille spécifiée par size en utilisant des blocs d'E/S de la taille spécifiée par bs.

group_reporting

Le mode d'affichage des résultats de test.

S'il est spécifié, agrège les résultats par groupe plutôt que par tâche.

filename

Le chemin vers la cible de test, qui peut être un nom de périphérique ou un chemin de fichier. Dans cette rubrique, tous les tests Fio ciblent un disque entier sans système de fichiers (un disque brut). Pour éviter de détruire accidentellement des données en testant le mauvais disque, l'espace réservé /dev/your_device est utilisé dans les exemples de commandes. N'oubliez pas de le remplacer par votre chemin de périphérique réel.

name

Un nom défini par l'utilisateur pour la tâche de test, tel que Rand_Write_Testing dans les exemples.

Pour plus d'informations sur les paramètres, consultez la page de manuel fio(1).