Todos os produtos
Search
Central de documentação

Elastic Compute Service:Testar desempenho de block storage com fio

Última atualização: Jul 03, 2026

Use o fio em uma instância ECS Linux para medir IOPS brutos do disco, throughput e latência para ajuste fino de desempenho de block storage.

Nota

O fio é uma ferramenta de benchmark de I/O de código aberto que testa métricas de desempenho de block storage, como operações de leitura e escrita aleatórias e sequenciais.

Procedimento

Importante
  • Se um dispositivo de block storage contiver partições, sistemas de arquivos ou dados, o fio poderá corromper os sistemas de arquivos e causar perda de dados. Crie snapshots antes de testar. Consulte Criar snapshot manualmente.

  • Não teste no disco do sistema nem em discos de dados com informações. Use um disco de dados novo, não inicializado e vazio.

  • Os resultados provêm de um ambiente de teste e servem apenas como referência. Em produção, o desempenho do disco em nuvem pode variar devido a condições de rede e acessos simultâneos.

  • Após testar o novo disco:

Os exemplos a seguir usam uma imagem pública Alibaba Cloud Linux 3.2104 LTS de 64 bits. As operações podem variar conforme a imagem da sua instância.

  1. Conecte-se a uma instância ECS.

    Para mais informações, consulte Fazer login em uma instância Linux usando o Workbench.

  2. Consulte os nomes dos dispositivos de block storage.

    sudo fdisk -lu

    截屏2024-12-05 09 A instância possui três dispositivos de block storage: o disco do sistema /dev/vda e dois discos de dados, /dev/vdb e /dev/vdc.

  3. Verifique se há partições e sistemas de arquivos nos dispositivos.

    sudo blkid

    截屏2024-12-05 09 Os dispositivos /dev/vda e /dev/vdb possuem partições e sistemas de arquivos. O dispositivo /dev/vdc não aparece na lista, indicando ausência de partições ou sistemas de arquivos.

    Aviso

    Se o alvo do teste contiver partições, sistemas de arquivos ou dados, o fio poderá corromper os sistemas de arquivos e provocar perda de dados. Caso seu disco de dados tenha partições e sistemas de arquivos, crie um disco de dados vazio para os testes.

  4. Faça backup dos dados nos dispositivos antes de testar. Consulte Criar snapshot manualmente.

    Nota

    Snapshots geram custos. Consulte Faturamento de snapshots.

  5. Instale a biblioteca libaio e o fio conforme seu sistema operacional.

    Alibaba Cloud Linux 2/3, or CentOS 6 or later

    Nota

    O CentOS 6 atingiu o fim de vida útil (EOL). Conforme as regras da comunidade Linux, todo o conteúdo foi removido do seguinte endereço de repositório do CentOS 6: http://mirror.centos.org/centos-6/. Se você continuar usando o repositório padrão do CentOS 6 no Alibaba Cloud, ocorrerá um erro. Para usar pacotes de instalação específicos do CentOS 6, altere o endereço do repositório. Para mais informações, consulte Como alterar os endereços de repositório do CentOS 6?

    sudo yum install libaio libaio-devel fio -y

    Debian 9 or later, or Ubuntu 14 or later

    Importante

    O Debian 9 e o Debian 10 atingiram o EOL. Se sua instância executa Debian 9 ou Debian 10, altere os endereços dos repositórios. Consulte Alterar endereços de repositório após o CentOS ou Debian atingir o EOL

    sudo apt-get update
    sudo apt-get install libaio* fio -y
  6. Acesse o diretório /tmp.

    cd /tmp
  7. Execute os comandos de teste.

  8. Visualize os resultados do teste. Os valores das métricas variam conforme a categoria do disco em nuvem. Os valores nas figuras a seguir servem apenas como referência.

  • O valor de IOPS indica o resultado do teste de IOPS. 截屏2024-11-19 11

  • O valor de BW representa o resultado do teste de throughput. 截屏2024-11-19 11

  • O valor de lat (usec) corresponde ao resultado do teste de latência. 截屏2024-11-19 11

Comandos de teste de disco em nuvem

Aviso

Executar o fio em um disco com partições, sistema de arquivos ou dados pode causar erros no sistema de arquivos e perda de dados. Se o seu disco de dados possuir partições e sistema de arquivos, crie um novo disco de dados vazio para os testes:

  1. Crie um disco de pagamento conforme o uso com a mesma configuração e anexe-o à instância. Consulte Criar um disco de dados.

  2. Após concluir o teste:

Os valores dos parâmetros nos comandos abaixo são apenas para referência. Substitua /dev/your_device pelo nome do seu dispositivo de block storage obtido na Etapa 2 da seção "Procedimento". Por exemplo, substitua /dev/your_device por /dev/vdb. Para detalhes sobre os parâmetros do fio, consulte a seção Parâmetros do fio.

  • Teste o IOPS de escrita aleatória.

    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
  • Teste o IOPS de leitura aleatória.

    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
  • Teste o throughput de escrita sequencial.

    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
  • Teste o throughput de leitura sequencial.

    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
  • Teste a latência de escrita aleatória.

    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
  • Teste a latência de leitura aleatória.

    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

Consulte Testar desempenho de IOPS do ESSD.

Comandos de teste de disco local

Aviso

Executar o fio em um disco com partições, sistemas de arquivos ou dados causará erros no sistema de arquivos e perda de dados. Se o seu disco de dados tiver partições e sistema de arquivos, crie uma nova instância com discos locais para os testes:

  1. Discos locais só podem ser criados junto com uma instância. Crie uma nova instância com a mesma configuração para testar. Consulte Iniciar instâncias ECS personalizadas.

  2. Após concluir o teste:

Os comandos a seguir aplicam-se a SSDs NVMe locais e HDDs SATA locais. Os valores dos parâmetros servem apenas como referência. Substitua /dev/your_device pelo nome do dispositivo de block storage obtido na Etapa 2 da seção "Procedimento". Por exemplo, substitua /dev/your_device por /dev/vdb. Para detalhes sobre os parâmetros do fio, consulte a seção Parâmetros do fio.

  • Teste o IOPS de escrita aleatória.

    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
  • Teste o IOPS de leitura aleatória.

    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
  • Teste o throughput de escrita sequencial.

    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
  • Teste o throughput de leitura sequencial.

    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
  • Teste a latência de escrita aleatória.

    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
  • Teste a latência de leitura aleatória.

    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
  • Teste a latência de escrita sequencial.

    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
  • Teste a latência de leitura sequencial.

    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

Parâmetros do fio

A tabela a seguir descreve os parâmetros do fio usados nos comandos anteriores.

Parâmetro

Descrição

direct

Define se o I/O direto será usado. Valor padrão: 1. Valores válidos:

  • 1: usa I/O direto, ignora o buffer de I/O e grava os dados diretamente.

  • 0: não usa I/O direto. Os dados passam pelo buffer de I/O.

iodepth

Profundidade da fila de I/O. Por exemplo, -iodepth 128 significa que até 128 operações de I/O podem ser executadas em paralelo por job do fio.

rw

Política de leitura/escrita. Valores válidos:

  • randwrite: escritas aleatórias

  • randread: leituras aleatórias

  • read: leituras sequenciais

  • write: escritas sequenciais

  • randrw: leituras e escritas aleatórias

ioengine

Motor de I/O. Na maioria dos casos, usa-se libaio. Para outros motores, consulte a documentação do fio.

bs

Tamanho do bloco das unidades de I/O. Valor padrão: 4k. É possível especificar valores separados para leitura e escrita no formato <leitura>,<escrita>.

size

Tamanho do arquivo de teste.

O fio encerra o teste após ler ou gravar o tamanho especificado, a menos que limitado pelo tempo de execução (runtime). Se não especificado, o fio usa o tamanho total dos arquivos ou dispositivos fornecidos. Também pode ser uma porcentagem (1-100). Por exemplo, size=20% usa 20% do tamanho total do arquivo ou dispositivo.

numjobs

Número de threads simultâneas. Valor padrão: 1.

runtime

Duração do teste em segundos.

Se não especificado, o teste executa até que os arquivos definidos por size sejam totalmente lidos ou gravados no tamanho de bloco definido por bs.

group_reporting

Modo de exibição dos resultados.

Quando especificado, os resultados são agregados por processo em vez de por tarefa.

filename

Caminho do alvo do teste — nome do dispositivo ou caminho do arquivo. Neste tópico, o alvo é um disco bruto sem sistema de arquivos. Substitua /dev/your_device pelo caminho real do dispositivo.

name

Nome do teste. Especifique conforme necessário. Nos exemplos anteriores, usou-se Rand_Write_Testing.

Consulte fio(1) - Linux man page para a referência completa de parâmetros.