Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Узнать, кто обращается к блочному устройству  (Прочитано 1937 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Такая задача: нужно узнать, какие процессы обращаются к блочному устройству по имени устройства. Если устройство смонтировано, то ничего сложного нет:

# mount | grep files
/dev/mapper/data-files on /srv/data/encrypted/files type ext4 (rw)
/srv/data/encrypted/files on /srv/data/decrypted/files type ecryptfs (rw,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=xxx,ecryptfs_fnek_sig=xxx)
# fuser -m /srv/data/decrypted/files/
/srv/data/decrypted/files/: 12556c 22267c

Но нужно узнать именно по блочному устройству (т.е. по /dev/mapper/data-files). А то:

# fuser -m /srv/data/decrypted/files/
/srv/data/decrypted/files/: 12556c 22267c
# mount | grep files
/dev/mapper/data-files on /srv/data/encrypted/files type ext4 (rw)
/srv/data/encrypted/files on /srv/data/decrypted/files type ecryptfs (rw,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=xxx,ecryptfs_fnek_sig=xxx)
# umount -lf /srv/data/decrypted/files
# umount -lf /srv/data/encrypted/files
# mount | grep files
# fuser -m /srv/data/decrypted/files/
# lvremove -f /dev/mapper/data-files
  Can't remove open logical volume "files"
# dmsetup info -c /dev/mapper/data-files
Name             Maj Min Stat Open Targ Event  UUID                                                               
data-files       254   4 L--w    1    1      0 LVM-nG1D7453QZtMfseHugl53dA9Nz40X4hs3WZhuP1zp9L0JMATgjNoLpzW1nsP0RPF
# kill -9 22267
# kill -9 12556
# lvremove -f /dev/mapper/data-files
  Logical volume "files" successfully removed

Т.е. несмотря на то, что ФС были отмонтированы (не важно почему), остались процессы, блокирующие блочное устройство. И нужно как раз научится их выявлять. Да, система такая, если не очень понятно: поверх ext4 на LVM томе смонтирована eCryptFS, на которой и происходит работа с файлами.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Axa-Ru

  • Гость
lsof /dev/mapper/data-files
не?

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Не) lsof вообще ничего никогда не кажет по поводу файлов устройств:

# fuser -m /srv/data/decrypted/files/
/srv/data/decrypted/files/: 10945c 22293c
# lsof /dev/mapper/data-files
#

И даже так (это корень, ежели что):

# lsof /dev/mapper/local-root
#
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Axa-Ru

  • Гость
а в папке /var/lock тоже ничего нет?

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Не, ничего полезного нету.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Axa-Ru

  • Гость
А если:
cryptsetup status /dev/mapper/data-files

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Не, cryptsetup - это вообще из другой области.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Axa-Ru

  • Гость
Сорри. тогда я пас.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Использовал ecryptfs на ноуте пару лет, полгода назад перешёл на luks: возвращаться обратно желания нет.
Помимо ощутимой разницы в скорости, отсутствуют недостатки ecryptfs, вызванные работой поверх существующей ФС.

Предполагаю, что указанная проблема может быть связана именно особенностями работы ecryptfs.
« Последнее редактирование: 01 Декабря 2011, 16:17:35 от arcfi »

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Ну... Мне во-первых нужна система шифрования уровня файлов, а не блочного устройства, а во-вторых дело тут явно не в eCryptFS, поскольку dmsetup прекрасно видит процесс, блокирующий устройство, осталось только PID выяснить.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Узнать, кто обращается к блочному устройству
« Ответ #10 : 01 Декабря 2011, 19:57:24 »
нужна система шифрования уровня файлов
ok

Т.е. несмотря на то, что ФС были отмонтированы (не важно почему), остались процессы, блокирующие блочное устройство.
Есть ли возможность примонтировать ФС обратно?

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Узнать, кто обращается к блочному устройству
« Ответ #11 : 01 Декабря 2011, 20:32:06 »
Да не, это конечно. Проблема в том, что всё это делается из скриптов и нужно как-то автоматизированно гарантированно удалять LV, убивая всех, кто к ним обращается. А LV там странные, в том плане что их неопределённое количество с не очень определёнными точками монтирования. Я знаю, как это всё обойти, но это жутко костыльно получается (сначала грепаем вывод mount, берём из него точку монтирования если есть, для неё выполняем fuser -km и потом umount -f). Вот и возник чисто теоретический вопрос: как гарантированно освободить девайс, ибо в теории и даже на практике он может быть занят, хотя и не примонтирован.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Узнать, кто обращается к блочному устройству
« Ответ #12 : 09 Декабря 2011, 00:00:29 »
Придумалась вот такая кракозябра:
# ls -l /proc/*/fd/* 2>/dev/null | awk "/\/var\/lib/{print \$9,\$11}"
/proc/1660/fd/6 /var/lib/colord/mapping.db
/proc/1660/fd/7 /var/lib/colord/storage.db
/proc/3984/fd/4 /var/lib/dhclient/dhclient-cf9ca01d-a87b-4633-b73a-920f919e3da1-wlan0.lease
=]

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Узнать, кто обращается к блочному устройству
« Ответ #13 : 09 Декабря 2011, 17:07:47 »
Я знаю, как это всё обойти, но это жутко костыльно получается (сначала грепаем вывод mount, берём из него точку монтирования если есть, для неё выполняем fuser -km и потом umount -f).
Не надо ничего грепать:
Цитировать
-m NAME, --mount NAME
NAME specifies a file on a mounted file system or a block device that is mounted.  All  processes  accessing files  on  that  file  system  are listed.
т.о. umount -l /dev/mapper/data-files && fuser -km /dev/mapper/data-files

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Re: Узнать, кто обращается к блочному устройству
« Ответ #14 : 09 Декабря 2011, 17:39:08 »
Дмитрий Бо,
это не будет работать, ибо после umount fuser уже не сможет найти ФС по указанной точки монтирования.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

 

Страница сгенерирована за 0.021 секунд. Запросов: 21.