Как измерить общий дисковый ввод-вывод в час

У меня есть облачный сервер, мы получили счет за использование дискового ввода-вывода. Вот пример из статистики:

04/Sep/2013 07:24:19 04/Sep/2013 08:24:19 0,5 GB / 1 vCPU (0,08 Kr. per hour): Charge for 44.7578125GB disk I/O 

Итак, в течение одного часа мы получаем счет за дисковый ввод-вывод емкостью около 45 ГБ.

Для меня это звучит как большой трафик, и я хотел бы сделать некоторый мониторинг, чтобы проверить его сам. Я знаю о таких инструментах, как dstat и sysstat т. Д., Но я не нашел примеров, показывающих итоги за один час (или другие временные рамки). Большинство примеров – это усреднение результатов, как эта команда:

 dstat -tdD total 60 

Здесь он показывает измерение ввода-вывода на диске в течение 60 секунд, но он усредняется. Поэтому, если я скопирую большой файл, я увижу увеличение числа при копировании, но как только оно будет закончено, число снова уменьшится. Другими словами, у меня нет конечной суммы за этот период.

Как я могу регистрировать общий объем дискового ввода-вывода в заданный таймфрейм?

Вы можете использовать инструмент iostat для сбора информации об использовании диска. Требуется несколько аргументов, включая переключатель, -d :

  -d Display the device utilization report. 

Он также принимает аргумент за считанные секунды, как часто повторяется его повторный запуск. Значение 3600 будет числом секунд в час.

пример

 $ iostat -d 3600 Linux 2.6.35.14-106.fc14.x86_64 (grinchy) 09/04/2013 _x86_64_ (4 CPU) Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 20.53 71.86 1259.61 20308334 356000380 dm-0 4.92 39.02 28.81 11027610 8143376 dm-1 0.54 0.93 3.38 261472 954912 dm-2 156.65 31.87 1227.42 9006394 346902056 

Вывод этой команды можно перенаправить в файл:

 $ iostat -d 3600 >> iostat_hrly.log 

Значение единиц

Если вы обратитесь к iostat странице для iostat нее есть довольно хорошие описания единиц.

выдержка

  Blk_read/s Indicate the amount of data read from the device expressed in a number of blocks per second. Blocks are equivalent to sectors with kernels 2.4 and later and therefore have a size of 512 bytes. With older kernels, a block is of indeterminate size. Blk_wrtn/s Indicate the amount of data written to the device expressed in a number of blocks per second. Blk_read The total number of blocks read. Blk_wrtn The total number of blocks written. 

Таким образом, блок составляет 512 байт, поэтому Blk_read / s в терминах MB для устройства sda будет, 71.86 * 512 байт = 36.79232 килобайт / сек.

Существуют дополнительные переключатели, которые автоматически изменят единицы измерения на выходе.

выдержка из iostat страницы iostat

 -h Make the NFS report displayed by option -n easier to read by a human. -k Display statistics in kilobytes per second instead of blocks per second. Data displayed are valid only with kernels 2.4 and later. -m Display statistics in megabytes per second instead of blocks or kilobytes per second. Data displayed are valid only with kernels 2.4 and later. 

Пример в KB / s

Таким образом, это может быть более полезным, показывая пропускную способность в KB / s:

 $ iostat -dk 3600 Linux 2.6.35.14-106.fc14.x86_64 (grinchy) 09/05/2013 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 20.85 47.25 663.81 15475096 217427086 dm-0 5.01 20.00 14.43 6549301 4725068 dm-1 0.54 0.58 1.60 189064 524872 dm-2 165.30 26.65 647.78 8730281 212177124