Как я могу печатать текущие чтения и записи в файловую систему по требованию?

Я заинтересован в получении статистики о чтении и записи файловой системы, в частности, к монтированию NFS.

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

Я не могу использовать что-либо, что потребует от меня ходить файловой системы или явно упоминать имена файлов из-за сложности иерархии.

Есть ли программа, которая может выполнять следующие требования по требованию?

  1. показывать чтение / запись
  2. показать путь чтения / записи
  3. количество отображаемых байтов

По запросу я имею в виду время исполнения. Точка (3) не является обязательной.

Например, я хотел бы сделать что-то вроде следующего:

 $ magicIOprogram read, 512, /path/to/file1 read, 256, /path/to/file2 write, 15, /path/to/file3 write, 10562, /path/to/file4 

Если есть способы получить эту информацию с использованием вышеупомянутых инструментов, о которых я не знаю, это также было бы адекватным решением.

2 Solutions collect form web for “Как я могу печатать текущие чтения и записи в файловую систему по требованию?”

Аудит Linux может получить информацию для пунктов 1 и 2.

Предполагая, что вы используете RHEL / CentOS 6 и у вас есть доля nfs, установленная как /mnt/nfs/foo :

 $ tree /mnt/nfs/foo /mnt/nfs/foo |-- a | `-- foo |-- b `-- bar 

Вам необходимо будет определить следующие правила в /etc/audit/audit.rules :

 # Delete existing rules -D # Set buffer size -b 320 # Log read and write operations -w /mnt/nfs/foo -pr -k read -k nfs -w /mnt/nfs/foo -pw -k write -k nfs 

Затем перезагрузите службу auditd с помощью /etc/init.d/auditd reload .

Как только это будет сделано, вы можете использовать ausearch и aureport для чтения журналов событий, сгенерированных auditd :

 $ cat /mnt/nfs/foo/a/foo $ echo 'test' > /mnt/nfs/foo/b/bar $ ausearch -k nfs | aureport -f File Report =============================================== # date time file syscall success exe auid event =============================================== 1. 07/15/2015 11:39:04 /mnt/nfs/foo/a/foo 2 yes /bin/cat 500 59 2. 07/15/2015 11:39:05 /mnt/nfs/foo/b/bar 2 yes /bin/bash 500 60 

Одно предупреждение, что он сможет собирать информацию только с клиентской стороны. Если ваш клиент не доверен, вы не можете использовать этот метод для безопасного определения того, к чему они обращаются через nfs.

Возможно, вы захотите попробовать systemtap .

Вот немного измененный пример, показывающий открытие, чтение и запись каждые 100 мсек:

 #! /usr/bin/env stap global fileread, filewrite probe syscall.open.return { if ($return != -1) { printf("open, %s, %d/%d\n", user_string($filename), pid(), $return) } } probe syscall.read.return { p = pid() fd = $fd bytes = $return if (bytes > 0) fileread[p, fd] += bytes } probe syscall.write.return { p = pid() fd = $fd bytes = $return if (bytes > 0) filewrite[p, fd] += bytes } probe timer.ms(100) { foreach (v = [p,fd] in fileread) { printf("read, %d, %d/%d\n", v, p, fd) } delete fileread foreach (v = [p,fd] in filewrite) { printf("write, %d, %d/%d\n", v, p, fd) } delete filewrite } 

Формат выходных строк:

  • open, (pathname), (pid) / (fd)

  • read (байты), (pid) / (fd)

  • write, (bytes), (pid) / (fd)

  • Открытие именованных блоков труб навсегда, если труба удалена без подключения
  • Тяжелая активность записи на производительность системы SSD nukes
  • Как получить полное чтение и полную запись IOPS в Linux?
  • В чем разница между> и >> (особенно это касается использования с программой cat)?
  • Как отслеживать источник всплесков ввода-вывода?
  • как o_sync запускает pdflush?
  • Может ли кто-нибудь помочь мне интерпретировать результаты iozone?
  • Linux IO Flow - VFS для блокировки устройства
  • Как ядро ​​отправляет запросы ввода-вывода на жесткий диск?
  • Как измерить общий дисковый ввод-вывод в час
  • какой раздел ядра управляет io-запросами?
  • Interesting Posts

    Как вставить новую строку после первой строки в файле, который похож на нее

    Эквивалентная команда Mkpasswd в RHEL

    Почему я получаю случайный IP-адрес в завершении bash при попытке сетевой команды

    Есть ли способ заставить socat не открывать целевое соединение, пока оно не получит соединение прослушивателя?

    Случайная удаленная папка блокировки

    Огромная страница и производительность improvemnt

    Ядро 3.12 или 3.10? который имеет больше возможностей, новее и лучше?

    Пакет checkinstall конфликтует с python

    ошибка в awk / sed использование манипуляций с файлами по очереди

    Все ли номера ошибок системных вызовов уникальны?

    пусть скрипт найдет путь сам по себе

    Почему моя система redhat 5.11 имеет так много процессов ext4-dio-unrit?

    данные efivars отсутствуют в procfs и sysfs

    счетчики сетевого интерфейса не работают?

    найти и удалить файлы размером более определенного размера и типа

    Linux и Unix - лучшая ОС в мире.