~에 따르면이 블로그 게시물, 이것은 쉬울 것입니다:
# nbd-server MyFile.dat
# nbd-client localhost /dev/nbd0
문제는...실제로는 그렇지 않다는 것일하다.
첫째, nbd-server
파일에 대한 포트 번호와 절대 경로를 명시적으로 지정하지 않으면 "내보낸 구성이 없습니다"라는 메시지가 표시됩니다. 하지만 뭐, 어쨌든. (그것아직이것이 어떻게든 "더 이상 사용되지 않으며" 구성 파일을 실제로 편집해야 한다고 불평합니다. 저는 다음과 같습니다.정말이러고 싶지 않아! ) 현재 블록 장치를 제공하고 있는 것으로 보입니다. (적어도 이제는 nbd-server
TCP/10809를 열어서 수신 대기하는 프로세스가 실행되고 있습니다.)
nbd-client
그러나 연결을 시도하는 것은 불가능했습니다. 내가 어떤 주장을 해도 그 아이는 신음하고 불평하고 거부한다.하다아무것! 계속해서 말이야
ERROR: not enough information specified
다음은 사용법 요약입니다. 하지만 실제로는 그렇지 않을 것이다말해 주세요뭐가 문제야? 포트 번호 지정 여부에 관계없이 동일한 오류 메시지가 나타납니다. 나는 무엇을 해야 합니까?실제 연결?
(분명히 같은 컴퓨터에 연결하고 있습니다. 결국에는 네트워크의 컴퓨터 간에 이 작업을 수행하고 싶습니다. 하지만 로컬에서 작동하도록 할 수도 없습니다!)
추신. 몇 가지 예가 논의되고 modprobe nbd-client
있습니다 modprobe nbd-server
. 내 OpenSUSE 컴퓨터에는 nbd.ko
.so만 있는 것 같아서 연결했습니다. 그 이전에는 /dev/nbd0
존재조차 하지 않았습니다. 그 후에는 괜찮게 존재했습니다.
답변1
알아내는 데 약간의 시간이 걸립니다.
NBD 서버 및 포트 번호 외에도 "내보내기 이름"도 지정해야 하는 것 같습니다. 설명서에서는 이에 대해 잘 설명하지 않습니다.
나는 또한 [정말로 피하고 싶었던] 구성 파일을 사용해야 했습니다. 다행히도 실제로 특별한 위치나 다른 곳에 배치할 필요는 없습니다.
실제로 다음 작업을 수행할 수 있었습니다.
빈 디스크 이미지를 만듭니다.
다음과 같은 파일을 만듭니다.
[generic] # Must always exist. [Mu] exportname=/path/to/image/file
NBD 서버를 시작합니다.
nbd-server -C /path/to/config/file
/var/run/nbd-server.pid
이는 NBD 서버 프로세스의 PID를 저장하는(즉, 종료할 수 있도록) 빌드하는 것 같습니다 . 다른 중지 명령은 없는 것 같습니다.NBD 클라이언트를 시작합니다.
nbd-client localhost -N Mu /dev/nbd0
이
Mu
섹션은 구성 파일에서 선택한 임의의 이름과 일치해야 합니다. 하나의 서버에서 서비스할 수 있습니다.많은 종류의파일을 한 번만 저장하므로 필요한 파일을 지정해야 합니다. (아마도 이전에 고객님들이 불만을 토로하셨던 '정보부족'이 아닐까 싶습니다.)
이 시점에서는 /dev/nbd0
일반 블록 장치처럼 작동해야 합니다.
pkill nbd
지금까지 클라이언트/서버 프로세스를 종료하는 것 외에 연결을 끊는 방법을 찾지 못했습니다 (예 : ).
나는 또한 이것을 테스트했습니다. localhost
적절한 호스트 이름으로 바꾸면 원격으로 작동합니다.
답변2
나는 사용하는 것이 좋습니다NBD 키트NBD 서버 대신. (참고: 제가 썼습니다). 기본적으로 내보내기 이름을 신경 쓰지 않는 보다 현대적이고 강력한 서버입니다. 다음은 이를 사용하여 1TB RAM 디스크를 생성하고 nbd-client를 사용하여 연결하는 예입니다.
$ nbdkit memory 1T
$ sudo nbd-client localhost /dev/nbd0
Negotiation: ..size = 1048576MB
Connected /dev/nbd0
$ sudo blockdev --getsize64 /dev/nbd0
1099511627776
우리가 작성한 또 다른 도구는NB정보제공하는 내보내기 이름 목록을 포함하여 NBD 서버의 속성을 쿼리하는 데 사용할 수 있습니다.
$ nbdinfo nbd://localhost
protocol: newstyle-fixed without TLS
export="":
export-size: 1099511627776
content: data
uri: nbd://localhost:10809/
[more output clipped]
대청소:
$ sudo nbd-client -d /dev/nbd0
$ killall nbdkit
(올바르게 수행하고 있다면 .보다 더 좋은 방법이 있습니다 killall
. nbdkit이 PID 파일을 작성하고 해당 PID를 종료하도록 할 수 있습니다. 또는 다음을 사용할 수 있습니다.포로 nbdkit)