Как каждый определяет, когда процесс или машина являются связанным IO?

Существует другой (лучше?, более безопасный?) способ достигнуть того, что Вы хотите сделать. Вместо того, чтобы проверить, смонтирован ли Ваш резервный диск, почему бы не оставить включенным, но размонтировался, когда это на самом деле не используется.

Это, вероятно, лучше для диска (некоторые будут просто покоиться), и он избегает случайного доступа к нему. Задание крона может mount это, когда это запускается и umount это, когда это заканчивается. Это может быть сделано как обычный пользователь с командами mount /mnt/backup и umount /mnt/backup, если Вы описали то, из чего Вы хотите в записи /etc/fstab. Запись должна включать опцию users если монтирование сделано как обычный пользователь. Теперь нужно только обнаружить, включается ли диск на самом деле. mount команда скажет Вам что путем сбоя с ошибкой 32 для попытки смонтировать отключенный диск (существуют другие причины для той ошибки также).

Последняя точка должна сказать/etc/fstab, как сделать задание. Как Вы заметили, Вы не можете полагаться на имя устройства, так как оно изменяется все время. Но фактическое устройство может быть распознано за себя. В случае жесткого диска разделы имеют имя, которое может быть определено соответствующими инструментами, такой как blkidили vol_id. Команда blkid будет работать на обычного пользователя, звонящего /sbin/blkid. (BTW, это работает также на DVD).

Например, у меня есть диск с двумя разделами, в настоящее время на устройстве /dev/sdc. Я получу "UUID" первого раздела путем вызова как суперпользователь:

$ /sbin/blkid /dev/sdc1
/dev/sdc1: UUID="7aeb2d15-9a1b-410a-b5ed-5437e68cb528" SEC_TYPE="ext2" TYPE="ext3" 

Затем я добавляю к /etc/fstab строка

UUID="7aeb2d15-9a1b-410a-b5ed-5437e68cb528" /mnt/backup ext3 users,noauto,rw,relatime,data=ordered

и /etc/fstab предоставит правильную информацию mount /mnt/backup смонтировать правильный раздел (при наличии) на /mnt/backup. То же идет для umount.

Unfortumately, это работает, только если у Вас есть единственный резервный DVD. Причина состоит в том что mount /mnt/backup команда будет использовать первую запись в /etc/fstab это имеет /mnt/backup как точка монтирования. Если это, оказывается, не соответствует диску, Вы включили, это перестанет работать, не ища дальнейшие записи, которые могли бы сделать задание с другим диском для той же точки монтирования (я действительно задаюсь вопросом почему).

Решение состоит в том, чтобы связать все диски с резервной копией с /mnt/backup как точка монтирования в /etc/fstab. Сценарий (даже в режиме обычного пользователя) может попытаться смонтировать каждый раздел диска с резервной копией с mount -U 'xxxxxxx', когда xxxxxxx UID того диска (раздел), используемый для идентификации его в /etc/fstab. Если один из дисков с резервной копией будет включен, то сценарий в конечном счете успешно выполнится.

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

Другая (еще более простая) возможность, которая будет проверена (я никогда не использовал это) состоит в том, чтобы использовать команду mount -a -O my_option это смонтирует все диски для который /etc/fstab запись включает опцию 'my_option'. И конечно необходимо добавить что опция в каждой записи для диски с резервной копией в /etc/fstab. Риск с этим состоит в том, что, если два диска с резервной копией включаются, они могут быть смонтированы друг на друге на /mnt/backup. Это не должно быть проблемой как, только второй, на вершине, будет visble. Но я не уверен, как осторожный должен быть должен удостовериться, что оба демонтированы в конце. Некоторое экспериментирование, вероятно, в порядке.

Однако это кажется этим mount -a -O my_option доступно только суперпользователю, даже для устройства, согласно которому могли смонтироваться обычные пользователи /etc/fstab. Снова, интересно почему.

5
10.03.2015, 00:38
2 ответа

Команда sar дает вам всевозможные полезные системные действия. Например, для общего использования процессора:

sar -u 2 10

shows (обратите внимание - это не система debian, но она должна быть похожа):

09:31:55 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
09:31:57 AM       all      1.71      0.00      1.14      0.00      0.00     97.14
09:31:59 AM       all      1.00      0.00      0.50      0.00      0.00     98.51

I/O отображается время ожидания. На показатель system также будет влиять вход/выход из-за использования процессора, необходимого для обработки запросов, но время iowait указывает на задержки, приписываемые устройству.

Для использования диска:

sar -d 2 110

дает:

09:33:03 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
09:33:05 AM    dev8-0     11.06      0.00    112.56     10.18      0.02      1.59      0.45      0.50
09:33:05 AM    dev8-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Таким образом, время ожидания (ожидания) может представлять интерес при определении привязки системы к входу/выходу.

4
27.01.2020, 20:38

Попробуйте профилировать свое приложение с помощью iotop.

 sudo apt-get install iotop
 sudo iotop
2
27.01.2020, 20:38

Теги

Похожие вопросы