---
title: 'Протестировать производительность файлового хранилища'
sidebar_label: 'Протестировать производительность файлового хранилища'
sidebar_position: 5
description: 'Как протестировать производительность файлового хранилища с помощью утилиты fio'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from 'docs-kit/components'
import {CustomTable} from 'docs-kit/components'

# Протестировать производительность файлового хранилища

:::info

Это инструкция с примером тестирования производительности файлового хранилища на облачном сервере.

:::

Для полноценного тестирования производительности файлового хранилища (значений пропускной способности и лимитов на чтение и запись в IOPS) используйте утилиту `fio`.

1. [Установите утилиту fio](#install-fio).

2. [Протестируйте производительность](#benchmark).

Результаты тестирования можно сравнить с ожидаемой производительностью, которая зависит от [типа файлового хранилища](/file-storage/about/about-file-storage.mdx#file-storage-types). Значения можно посмотреть в таблице [Лимиты и ограничения](/file-storage/about/about-file-storage.mdx#limits-and-restrictions).

## 1. Установить утилиту fio \{#install-fio}

1. [Подключитесь к облачному серверу](/cloud-servers/manage/connect-to-server.mdx).

2. Откройте CLI.

3. Установите утилиту `fio`:

   ```bash
   sudo apt update
   sudo apt install fio
   ```

## 2. Протестировать производительность \{#benchmark}

Можно использовать:

* [тестирование лимитов в IOPS](#test-limits-in-iops) — случайная запись или чтение блоками 4 КБ;
* [тестирования пропускной способности](#test-bandwidth) — случайная запись или чтение блоками 4 МБ.

### Протестировать лимиты в IOPS \{#test-limits-in-iops}

<Tabs queryString="test-limits-in-iops">
  <TabItem value="4-kb-write">
    <TabItemLabel>
      Запись
    </TabItemLabel>

    1. Откройте CLI.

    2. Запустите тест:

       ```bash
       fio \
       --name=test1 \
       --blocksize=4k \
       --rw=randwrite \
       --direct=1 \
       --buffered=0 \
       --ioengine=libaio \
       --iodepth=16 \
       --loops=1000 \
       --runtime=30 \
       --filename=/mnt/nfs/test \
       --size=99G
       ```

       Укажите:

       * `blocksize` — размер одного блока, с которым проводится операция чтения или записи;
       * `iodepth` — количество потоков;
       * `filename` — файл для записи или чтения. В примерах ниже приведены тесты c параметром `filename=/mnt/nfs/test` — для тестирования создастся отдельный файл в директории с примонтированным файловым хранилищем;
       * `size` — общий размер тестового файла. Для получения релевантных результатов мы рекомендуем выполнять тестирование на файловом хранилище размером больше 100 ГБ.

    3. В выводе теста посмотрите значение лимита на запись в IOPS (`IOPS`):

       ```bash
       write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets
       ```
  </TabItem>

  <TabItem value="4-kb-read">
    <TabItemLabel>
      Чтение
    </TabItemLabel>

    1. Откройте CLI.

    2. Запустите тест:

       ```bash
       fio \
       --name=test1 \
       --blocksize=4k \
       --rw=randread \
       --direct=1 \
       --buffered=0 \
       --ioengine=libaio \
       --iodepth=16 \
       --loops=1000 \
       --runtime=30 \
       --filename=/mnt/nfs/test \
       --size=99G
       ```

       Укажите:

       * `blocksize` — размер одного блока, с которым проводится операция чтения или записи;
       * `iodepth` — количество потоков;
       * `filename` — файл для записи или чтения. В примерах ниже приведены тесты c параметром `filename=/mnt/nfs/test` — для тестирования создастся отдельный файл в директории с примонтированным файловым хранилищем;
       * `size` — общий размер тестового файла. Для получения релевантных результатов мы рекомендуем выполнять тестирование на файловом хранилище размером больше 100 ГБ.

    3. В выводе теста посмотрите значение лимита на чтение в IOPS (`IOPS`):

       ```bash
       read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)
       ```
  </TabItem>
</Tabs>

### Протестировать пропускную способность \{#test-bandwidth}

<Tabs queryString="test-bandwidth">
  <TabItem value="4-mb-write">
    <TabItemLabel>
      Запись
    </TabItemLabel>

    1. Откройте CLI.

    2. Запустите тест:

       ```bash
       fio \
       --name=test1 \
       --blocksize=4M \
       --rw=write \
       --direct=1 \
       --buffered=0 \
       --ioengine=libaio \
       --iodepth=16 \
       --loops=1000 \
       --runtime=30 \
       --filename=/mnt/nfs/test \
       --size=99G
       ```

       Укажите:

       * `blocksize` — размер одного блока, с которым проводится операция чтения или записи;
       * `iodepth` — количество потоков;
       * `filename` — файл для записи или чтения. В примерах ниже приведены тесты c параметром `filename=/mnt/nfs/test` — для тестирования создастся отдельный файл в директории с примонтированным файловым хранилищем;
       * `size` — общий размер тестового файла. Для получения релевантных результатов мы рекомендуем выполнять тестирование на файловом хранилище размером больше 100 ГБ.

    3. В выводе теста посмотрите значение пропускной способности (`BW`):

       ```bash
       write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets
       ```
  </TabItem>

  <TabItem value="4-mb-read">
    <TabItemLabel>
      Чтение
    </TabItemLabel>

    1. Откройте CLI.

    2. Запустите тест:

       ```bash
       fio \
       --name=test1 \
       --blocksize=4M \
       --rw=read \
       --direct=1 \
       --buffered=0 \
       --ioengine=libaio \
       --iodepth=16 \
       --loops=1000 \
       --runtime=30 \
       --filename=/mnt/nfs/test \
       --size=99G
       ```

       Укажите:

       * `blocksize` — размер одного блока, с которым проводится операция чтения или записи;
       * `iodepth` — количество потоков;
       * `filename` — файл для записи или чтения. В примерах ниже приведены тесты c параметром `filename=/mnt/nfs/test` — для тестирования создастся отдельный файл в директории с примонтированным файловым хранилищем;
       * `size` — общий размер тестового файла. Для получения релевантных результатов мы рекомендуем выполнять тестирование на файловом хранилище размером больше 100 ГБ.

    3. В выводе теста посмотрите значение пропускной способности (`BW`):

       ```bash
       read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)
       ```
  </TabItem>
</Tabs>

<Formbricks />
