LVM в Linux – работа с логическими дисками

This topic describes sample FIO commands you can use to run performance tests for the Oracle Cloud Infrastructure Block Volume service on instances created from Linux-based images.

Что такое LVM

Суть его состоит в том, что физические диски ‘Physical Volume’ (возможно различного размера, на разных устройствах) объединяются в ‘Volume Groups’ – группы томов. Группы томов могут уже разделяться на логические тома ‘Logical Volumes’, которые в свою очередь содержат конечные файловые системы. Звучит немного запутанно, но на самом деле всё просто и очень круто. Сейчас объясню на картинке:

Допустим, имеем два жестких диска. Старенький Seagate Barracuda на 80 Гб. И более новый WD на 640 Гб. Мы можем объединить их в единую группу Volume Group 1, суммарный объем которой составит 720 Гб. Затем, эту группу мы “пилим” по своему усмотрению на логические тома. Допустим, два тома по 360 Гб каждый. А затем монтируем первый как /home, второй как /var.

Что такое LVM

Причем, в некоторых случаях мы можем изменять размер логического диска прямо “на лету”.

Что такое RAID?

Википедия дает исчерпывающее определение технологии RAID:

RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых (самостоятельных) дисков) — технология виртуализации данных для объединения нескольких физических дисковых устройств в логический модуль для повышения отказоустойчивости и производительности.

Конфигурация дисковых массивов и используемые при этом технологии зависят от выбранного уровня RAID (RAID level). Уровни RAID стандартизированы в спецификации Common RAID Disk Data Format. Она описывает множество уровней RAID, однако самыми распространенными принято считать RAID0, RAID1, RAID5 и RAID6.

RAID0, или Stripes, — это уровень RAID, который объединяет два или более физических диска в один логический. Объем логического диска при этом равен сумме объемов физических дисков, входящих в массив. На этом уровне RAID отсутствует избыточность, а выход из строя одного диска может привести к потере всех данных в виртуальном диске.

Уровень RAID1, или Mirror, создает идентичные копии данных на двух и более дисках. Объем виртуального диска при этом не превышает объема минимального из физических дисков. Данные на виртуальном диске RAID1 будут доступны, пока хотя бы один физический диск из массива работает. Использование RAID1 добавляет избыточности, но является достаточно дорогим решением, так как в массивах из двух и более дисков доступен объем только одного.

Уровень RAID5 решает проблему дороговизны. Для создания массива с уровнем RAID5 необходимо как минимум 3 диска, при этом массив устойчив к выходу из строя одного диска. Данные в RAID5 хранятся блоками с контрольными суммами. Нет строгого деления на диски с данными и диски с контрольными суммами. Контрольные суммы в RAID5 — это результат операции XOR, примененной к N-1 блокам, каждый из которых взят со своего диска.

Хотя RAID-массивы повышают избыточность и предоставляют резервирование, они не подходят для хранения резервных копий.

После краткого экскурса по видам RAID-массивов можно переходить к устройствам и программам, которые позволяют собирать и использовать дисковые массивы.

Бенчмарк в sysbench

sysbench — это утилита командной строки. Она создана для оценки производительности серверов с сильно нагруженными СУБД, но подходит и для проведения бенчмарков обычных систем.

Установка в Ubuntu, Linux Mint, Debian, Kali Linux:

sudo apt install sysbench

Встроенные в программу тесты:

  • fileio — Тестирование файлового ввода/вывода
  • cpu — Тестирование производительности CPU
  • memory — Тестирование скорости функций памяти
  • threads — Тестирование производительности подсистемы потоков
  • mutex — тест производительности Mutex

Для запуска теста производительности центрального процессора:

sysbench cpu run

Обратите внимание как запускается программа: в начале идёт название теста, затем опции (в первом примере их нет), а затем команда.

Бенчмарк в sysbench

Для программы установлено два придела выполнения:

  • 10000 операций с числами
  • 10 секунд выполнения

В зависимости от того, что наступит первым, программа завершит свою работу или после 10000 событий, либо после 10 секунд.

Современные процессоры очень производительные и если программа завершилась очень быстро, то данные могут быть искажены. Например, при оценки производительности процессора играет роль, к примеру, троттлинг (сброс частот). Троттлинг начинается из-за перегрева или превышения TDP. Эти эффекты наблюдаются только на длительных дистанциях работы процессора. Если, к примеру, тест завершился за секунду и вы получили n обработанных операций, это не означает, что процессор за 60 секунд выполнит 60 * n операций, поскольку он будет сбрасывать частоты из-за перегрева и выхода за пределы установленного в TDP рассеивания тепла.

Читайте также:  Выборочное подключение USB-накопителей в Windows

Для более длительного выполнения теста используются опции —cpu-max-prime и —time. Первая устанавливает максимальное количество выполненных операций, а вторая — максимальное время проведения бенчмарка. При одновременном использовании опций приоритет имеет —time.

Современные центральные процессоры являются многоядерными и многопотоковыми:

По умолчанию sysbench запускает в один поток. Поэтому если вы хотите задействовать все ядра вашего процессора, используйте опцию —threads. У меня 6 физических и 12 логических ядер центрального процессора, поэтому я буду использовать значение 12, чтобы работали все процессоры.

При использовании опции —cpu-max-prime, чем меньше время завершения программы, тем производительныее центральный процессор:

sysbench cpu —threads=12 —cpu-max-prime=100000 run

Программа завершила работу слишком быстро — за 10 секунд вряд ли процессор успел подвергнуться серьёзному троттлингу. Поэтому с такими значениями тест подходит для оценки пиковой производительности на короткой дистанции.

Получены результаты:

CPU speed: events per second: General statistics: total time: total number of events: 5393 Latency (ms): min: avg: max: 95th percentile: sum: Threads fairness: events (avg/stddev): execution time (avg/stddev):

CPU speed events per second означает количество выполненный в центральном процессоре операций за секунду — чем выше значение, тем производительнее система.

Бенчмарк в sysbench

General statistics total time означает общее время выполнения операций.

General statistics total number of events означает общее количество выполненный событий.

Если система завершает работу слишком быстро, можно увеличить значение, например, до двухсот тысяч событий:

sysbench cpu —cpu-max-prime=200000 run

Ещё один способ проверки троттлинга и оценки производительности процессора под длительной нагрузкой, это установка времени выполнении, в примере ниже установлено время в 300 секунд.

sysbench cpu —threads=12 —time=300 run

У меня при использовании опций —time и —cpu-max-prime CPU speed events per second различается в десятки раз — видимо или какой-то баг в программе, либо программа считает по каким-то другим правилам.

Программа GSmartControl

И напоследок хочу порекомендовать программу GSmartControl, которая является графической оболочкой (GUI) для консольной программы — smartctl. Найти ее можно в Центре приложений Убунту, либо установить через Терминал командой:

Программа GSmartControl

sudo apt-get install gsmartcontrol

Программа показывает полную информацию по данным S.M.A.R.T. Подробнее по каждому пункту можно узнать тут.

Программа GSmartControl

Ну вот вы и узнали как проверить жесткий диск в linux. Пусть эта информация послужит вам во благо! Удачи!

Читайте также:  6.1 Доступ к предыдущим версиям файлов с помощью shadow_copy

Большие СХД с большими наборами RAID

На протяжении нескольких лет СХД становились всё более мощными, их вычислительные возможности увеличивались на 40% ежегодно. В то же время производительность жёстких дисков в год растёт не так заметно, в среднем меньше чем на 10% (от 7,2K к 10K и к 15K, и это ничто по сравнению с SSD). Этот разрыв в росте вызвал необходимость создания СХД с очень большими количествами дисков. Именно в те времена получили распространение сети SAN, которые придумали специально для больших СХД.

Очень быстро стало понятно, что SAN не могут обеспечить ожидаемую производительность в IOPS, которую может суммарно выдать задействованное число дисков. Первая причина этого заключается в возможностях контроллера адаптера шины Fibre Channel (FC HBA), для которого глубина очереди по умолчанию составляла 32 (на адаптер, а не на порт СХД). Такое ограничение для значения очереди по умолчанию было введено из тех соображений, что доктриной SAN считается следующее: SAN – это поставщик совместно используемого дискового пространства. Ограничение призвано препятствовать тому, чтобы один узел создавал слишком большую нагрузку ввода-вывода. Для ограничения нагрузки, на HBA для глубины очереди устанавливали маленькое значение, в результате чего все узлы могли бы гарантировано получать свою долю от максимально возможного объёма ввода-вывода.

Если измерить зависимость IOPS от установки глубины очереди на HBA для внешнего LUN, состоявшего из большого числа дисков, станет видно, что производительность в IOPS увеличивается с увеличением глубины очереди от минимальных до максимальных значений. Это поведение похоже на то, о котором мы говорили выше, когда обсуждали зависимость производительности RAID массивов в IOPS от глубины очереди.

Если увеличивать глубину очереди с минимума до максимально возможных значений, можно достичь близкую к максимуму пропускную способность, но одновременно получить рост задержек.