답변:
네트워크 블록 장치 (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의 내용이 있으며이를 우분투에서 네트워크의 블록 장치로 마운트 할 수있었습니다.
greeneggs
서버의 호스트 이름입니다.
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 iscsi
iSCSI를 통해 어떤 저장소가 오는지 확인할 수 있습니다 . 경로에는 위에서 로그인 한 대상의 IQN도 나열됩니다.
iscsi 장치가 더 이상 필요하지 않은 경우 다음을 통해 장치를 제거 할 수 있습니다.
# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>
분명히 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/sdc
및 e0.0.p1
IS/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
아주 쉽습니다.
vbladed
vblade
Fedora & Ubuntu 패키지의 일부이며 다른 배포판에서도 동일합니다.aoe-discover
& aoe-stat
는 aoetools
Fedora & Ubuntu 패키지의 일부입니다 .fdisk
블록 장치로 표시됩니다 ( 예 :) /dev/etherd/e0.0
.vblade
F19 및 F20 리포지토리에서 사용 가능한 버전은 최신 버전이며 버전 14입니다. ATAoE 프로젝트 페이지에는 버전 21이 있습니다. Fedora 19 x86_64에 사용할 수 있는 업데이트 된 RPM이 여기 있습니다 .이 솔루션은 작동하지만 TMWTDI를 표시하는 방법으로 만 제공됩니다.
이 설정을 위해서는 블록 장치를 호스팅 할 유닉스 영감 시스템과 시스템이 볼 수있는 루프백 블록 장치가있는 시스템이 필요합니다. 리눅스는 둘 다 작동합니다.
다음으로 samba 또는 webdav와 같은 멍청한 네트워크 파일 시스템이 필요합니다 (데이터 저장소를 최적화하지 않아야 함). 특히 NFS 및 AFS가 작동하지 않습니다.
내보내는 폴더에 블록 장치를 배치하십시오. ( man mknod
도움이 될 것입니다.) 해제 블록 장치 검사 (해당되는 경우). 내 보낸 파일 시스템을 클라이언트 컴퓨터에 마운트하고, 가져온 파일을 백업 저장소로 사용하여 루프 장치를 작성하고 정상적으로 마운트하십시오. ( losetup
또는 mount -o loop
)
작동 방식 및 이유 및 성능이 저하되는 이유 : 유닉스의 핵심 아이디어 중 하나는 모든 것이 파일이므로 장치는 파일 일 뿐이며 약간 특수한 것 (즉, 특수 파일이라고 함)입니다. mknod가 생성 할 수있는 여러 유형의 특수 파일이 있지만 블록 장치 만 살펴볼 것입니다. 블록 장치는 다른 파일과 마찬가지로 파일 시스템에 소유자, 권한, inode 및 이름이있는 다른 파일과 같이 존재합니다. 그러나 두 가지 차이점이 있습니다. 파일 시스템에 데이터를 저장하지 않으며 추가 기능이있어 마운트 할 수 있습니다. 파일 서버가 이러한 차이에주의를 기울이지 않을 정도로 멍청한 경우이를 무시하고 일반 파일로 내보낼 수 있습니다. 다음으로 루프 장치는 일반 파일 (로컬 또는 원격)을 가져와 특수 속성과 기능을 추가하여 마치 일반 파일을 블록 장치처럼 마운트 할 수 있습니다. 가장 큰 단점은 성능입니다.