네트워크를 통해 블록 장치로 한 컴퓨터에서 다른 컴퓨터로 블록 장치를 마운트하려면 어떻게해야합니까?


40

DVD 또는 CDROM과 같은 블록 장치를 내보내고 다른 컴퓨터에 블록 장치로 마운트 할 수 있도록 만들 수 있습니까?

참고 : NFS 또는 Samba를 사용하여이 작업을 수행하는 데 관심이 없습니다. 실제로 광학 드라이브가 원격 컴퓨터에서 광학 드라이브로 표시되기를 원합니다.

답변:


33

네트워크 블록 장치 (NBD)를 사용하여 원하는 것을 달성 할 수 있다고 생각합니다. 주제에 대한 wikipedia 페이지를 보면 라는 도구에 대한 언급이 nbd있습니다. 클라이언트와 서버 구성 요소로 구성되어 있습니다.

이 시나리오에서는 Fedora 19 랩탑 (서버)에서 CDROM을 설정하고이를 Ubuntu 12.10 시스템 (클라이언트)과 공유하고 있습니다.

설치
$ apt-cache search ^nbd-
nbd-client - Network Block Device protocol - client
nbd-server - Network Block Device protocol - server

$ sudo apt-get install nbd-server nbd-client
CD 공유

이제 서버 (Fedodra 19)로 돌아가서 패키지 관리자 YUM을 사용하여 비슷한 작업을 수행합니다. 완료되면 CD를 넣고이 명령을 실행하여 블록 장치로 공유합니다.

$ sudo nbd-server 2000 /dev/sr0

** (process:29516): WARNING **: Specifying an export on the command line is deprecated.

** (process:29516): WARNING **: Please use a configuration file instead.
$

실행 중인지 확인하는 빠른 방법 :

$ ps -eaf | grep nbd
root     29517     1  0 12:02 ?        00:00:00 nbd-server 2000 /dev/sr0
root     29519 29071  0 12:02 pts/6    00:00:00 grep --color=auto nbd
CD 마운트

이제 다시 우분투 클라이언트에서 우리는에 연결해야 nbd-server사용 nbd-client과 같이. 참고 : 이 예에서 nbd-server의 이름은 greeneggs입니다.

$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes

(예를 들어 Fedora와 같은 일부 시스템에서는 modprobe nbd먼저해야합니다.)

우분투 시스템에 다음을 사용하여 블록 장치가 있음을 확인할 수 있습니다 lsblk.

$ sudo lsblk -l
NAME                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                    8:0    0 465.8G  0 disk 
sda1                   8:1    0   243M  0 part /boot
sda2                   8:2    0     1K  0 part 
sda5                   8:5    0 465.5G  0 part 
ubuntu-root (dm-0)   252:0    0 461.7G  0 lvm  /
ubuntu-swap_1 (dm-1) 252:1    0   3.8G  0 lvm  [SWAP]
sr0                   11:0    1 654.8M  0 rom  
nbd0                  43:0    0   643M  1 disk 
nbd0p1                43:1    0   643M  1 part 

이제 마운트합니다 :

$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
작동 했습니까?

서스펜스가 나를 죽이고 있습니다.

$ sudo ls /mnt/
EFI  GPL  isolinux  LiveOS

Fedora 19 랩톱에 마운트 한 CentOS LiveCD의 내용이 있으며이를 우분투에서 네트워크의 블록 장치로 마운트 할 수있었습니다.


"경고 명령 행에서 내보내기를 지정하는 것은 더 이상 사용되지 않습니다. 대신 구성 파일을 사용하십시오". 버전 : 3.3
guettli

@guettli-피드백 감사합니다. 무슨 배포판인가요?
slm

@sim openSUSE 13.1
guettli

참고 : greeneggs서버의 호스트 이름입니다.
devius

1
구식 프로토콜 (즉, 각 장치에 하나의 포트를 사용)은 여러 버전에서 더 이상 사용되지 않는 것으로 표시 되었으며 nbd 3.10에서 삭제되었습니다 .
maxschlepzig

20

nbd(관심이 있다면) 한 가지 대안 은 iSCSI를 사용하는 것입니다. 특정 iSCSI IQN의 백업 스토리지로 장치 tgtd를 갖도록 구성 할 수 있습니다 /dev.

RHEL 시스템을 사용 하는 경우 소스 시스템에서 설치 scsi-target-utils및 구성 / 시작 tgtd하면됩니다. 설정은 tgtd관여 할 수 있지만 Red Hat은 다양한 시나리오에 대한 다양한 예를 제공합니다.

예를 들어 :

<target iqn.2008-09.com.example:server.target4>
    direct-store /dev/sdb      # Becomes LUN 1
    direct-store /dev/sdc      # Becomes LUN 2
    direct-store /dev/sdd      # Becomes LUN 3
    write-cache off
    vendor_id MyCompany Inc.
</target>

Fedora / RHEL에서 시작하려면 :

# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target

iscsi-initiator-utils클라이언트 시스템에 설치 하고 iscsiadm대상을 전송 한 다음 열거 된 대상을 "로그인"하는 데 사용합니다. 예를 들어 :

# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>

그러면 iSCSI LUN이 시스템에 일반 블록 장치로 제공됩니다. RHEL에서는 특정 장치가 오는 전송을 확인할 수 있으며 ls -l /dev/disk/by-path | grep iscsiiSCSI를 통해 어떤 저장소가 오는지 확인할 수 있습니다 . 경로에는 위에서 로그인 한 대상의 IQN도 나열됩니다.

iscsi 장치가 더 이상 필요하지 않은 경우 다음을 통해 장치를 제거 할 수 있습니다.

# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>

2
A를이 AU Q에도 추가 할 수있게하려면이 글을 작성하라는 메시지가 표시됩니다. askubuntu.com/questions/433231/…
slm

필자는 패키지 이름이 동일하거나 내가 참조한 구성 예제가 업스트림이거나 Red Hat이 수행하는 작업인지 확인하기 위해 Ubuntu 시스템을 실제로 가지고 있지 않습니다. 그러나 구성 자체는 동일해야합니다.
Bratchley

1
Joel 당신은 최고입니다 ... 우분투 시스템 없음 8-)
slm

1
실제로 NBD보다 설정이 더 쉽습니다. 현재 NBD의 문제는 Google을 통해 찾은 대부분의 예제 / 문서가 구식 구성을 사용한다는 것입니다. 현재 버전에서는 지원이 제거되었습니다. 또한 버전 <3.10 에는 읽기 전용 버그 가있을 수 있습니다 .
maxschlepzig

9

분명히 SAN 솔루션을 선호합니다. 이미 언급 한 iSCSI 및 NBD 외에도 AoE (ATA over Ethernet) 방식도 있습니다.

이것은 매우 쉽습니다 :

서빙 측면에서

modprobe aoe
vbladed 0 0 eth0 /dev/sdc

클라이언트 쪽

modprobe aoe
aoe-discover
aoe-stat
e0.0      1000.204GB       eth0 1024  up

기기가

ls -l /dev/etherd/
c-w--w----  1 root disk 152, 3 Mar 12 22:47 discover
brw-rw----  1 root disk 152, 0 Mar 12 22:47 e0.0
brw-rw----  1 root disk 152, 1 Mar 12 22:47 e0.0p1
cr--r-----  1 root disk 152, 2 Mar 12 22:47 err
c-w--w----  1 root disk 152, 6 Mar 12 22:47 flush
c-w--w----  1 root disk 152, 4 Mar 12 22:47 interfaces
c-w--w----  1 root disk 152, 5 Mar 12 22:47 revalidate

어디 e0.0당신입니다 /dev/sdce0.0.p1IS/dev/sdc1

dmesg 서버에서 :

[221384.454447] aoe: AoE v85 initialised.

dmesg 클라이언트 출력 :

[ 1923.225832] aoe: AoE v85 initialised.
[ 1923.226379] aoe: e0.0: setting 1024 byte data frames
[ 1923.226910] aoe: 38607725d8b1 e0.0 v4014 has 1953525168 sectors
[ 1923.653820]  etherd/e0.0: p1

아주 쉽습니다.

추가 사항

  • vbladedvbladeFedora & Ubuntu 패키지의 일부이며 다른 배포판에서도 동일합니다.
  • aoe-discover& aoe-stataoetoolsFedora & Ubuntu 패키지의 일부입니다 .
  • 장치는 fdisk블록 장치로 표시됩니다 ( 예 :) /dev/etherd/e0.0.
  • vbladeF19 및 F20 리포지토리에서 사용 가능한 버전은 최신 버전이며 버전 14입니다. ATAoE 프로젝트 페이지에는 버전 21이 있습니다. Fedora 19 x86_64에 사용할 수 있는 업데이트 된 RPM이 여기 있습니다 .

이 페도라와 우분투를 시도했지만 작동하지 않습니다.
slm

나는 보통 게시하기 전에 모든 것을 확인합니다. Q : aoe가로드 되었습니까? 적절한 논증을 했습니까? 수신기에서 : aoe가 상대를 찾았습니까? 뭐라고 dmesg?

난 당신이, 내가)이 8 몇 가지 추가 단계가있을 수 있습니다 만하는 것이 잘못 암시되지 않았습니다 할 알
SLM

그러나 추가 단계가 없습니다. 이것은 정말 쉬운 작업입니다.

1
ROTFL, 그리고 스마트 폰도 세었습니까?

1

이 솔루션은 작동하지만 TMWTDI를 표시하는 방법으로 만 제공됩니다.

이 설정을 위해서는 블록 장치를 호스팅 할 유닉스 영감 시스템과 시스템이 볼 수있는 루프백 블록 장치가있는 시스템이 필요합니다. 리눅스는 둘 다 작동합니다.

다음으로 samba 또는 webdav와 같은 멍청한 네트워크 파일 시스템이 필요합니다 (데이터 저장소를 최적화하지 않아야 함). 특히 NFS 및 AFS가 작동하지 않습니다.

내보내는 폴더에 블록 장치를 배치하십시오. ( man mknod도움이 될 것입니다.) 해제 블록 장치 검사 (해당되는 경우). 내 보낸 파일 시스템을 클라이언트 컴퓨터에 마운트하고, 가져온 파일을 백업 저장소로 사용하여 루프 장치를 작성하고 정상적으로 마운트하십시오. ( losetup또는 mount -o loop)

작동 방식 및 이유 및 성능이 저하되는 이유 : 유닉스의 핵심 아이디어 중 하나는 모든 것이 파일이므로 장치는 파일 일 뿐이며 약간 특수한 것 (즉, 특수 파일이라고 함)입니다. mknod가 생성 할 수있는 여러 유형의 특수 파일이 있지만 블록 장치 만 살펴볼 것입니다. 블록 장치는 다른 파일과 마찬가지로 파일 시스템에 소유자, 권한, inode 및 이름이있는 다른 파일과 같이 존재합니다. 그러나 두 가지 차이점이 있습니다. 파일 시스템에 데이터를 저장하지 않으며 추가 기능이있어 마운트 할 수 있습니다. 파일 서버가 이러한 차이에주의를 기울이지 않을 정도로 멍청한 경우이를 무시하고 일반 파일로 내보낼 수 있습니다. 다음으로 루프 장치는 일반 파일 (로컬 또는 원격)을 가져와 특수 속성과 기능을 추가하여 마치 일반 파일을 블록 장치처럼 마운트 할 수 있습니다. 가장 큰 단점은 성능입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.