어떤 네트워크 차단 장치가 사용되고 있는지 확인하세요

어떤 네트워크 차단 장치가 사용되고 있는지 확인하세요

/dev/nbd* 장치가 사용 중인지 어떻게 알 수 있나요? "lsof"가 나에게 말해줄까? 아니면 더 좋은 방법이 있나요? 다음 무료 버전을 알려주는 "losetup -a"와 동등한 기능이 있나요?

답변1

man페이지 에서 :

nbd-client -c /dev/nbdX

답변2

nbd-client -c /dev/nbdX작업이 올바르게 수행되지 않았습니다.

/dev/nbdX커널 드라이버가 내부적으로 사용하는 동안에는 사용되지 않는다고 알려줄 수도 있습니다 . 이 경우에는 또는 dmsetup에서도 이 내용을 볼 수 없습니다 nbd-client.

예:

% nbd-client -c /dev/ndb2; echo $?
1
% e2fsck /dev/nbd2; echo $?
e2fsck 1.42.13 (17-May-2015)
/dev/nbd2 is in use.
e2fsck: Cannot continue, aborting.
8

실제로 필요한 두 번째 측정항목은 다음과 같이 나타납니다 fsck.

% strace e2fsck /dev/nbd2 2>&1 | grep open | grep /dev/nbd2
open("/dev/nbd2", O_RDONLY|O_EXCL) = -1 EBUSY (Device or resource busy)

실제 사용하지 않은 NBD 장치와 비교해 보세요.

% nbd-client -c /dev/ndb1; echo $?; strace e2fsck /dev/nbd1 2>&1 | grep open | grep /dev/nbd1
1
open("/dev/nbd1", O_RDONLY|O_EXCL) = 4

따라서 다음은 /dev/nbdXa가 사용되지 않았는지 확인하는 올바른 방법입니다.

nbd-available()
{
nbd-client -c "$1";
[ 1 = $? ] &&
python -c 'import os,sys; os.open(sys.argv[1], os.O_EXCL)' "$1" 2>/dev/null;
}
get-available-nbd()
{
local a;
for a in /dev/nbd[0-9] /dev/nbd[1-9][0-9];
do
  nbd-available "$a" || continue;
  echo "$a";
  return;
done
return 1;
}

그것을 사용하는 것처럼nbd="`get-available-nbd`" || fail "no free NBD device"

관련 정보