slm*_*slm 43 linux dvd mount block-device data-cd
是否可以导出块设备(例如 DVD 或 CDROM)并使其可以作为块设备安装在另一台计算机上?
注意:我对使用 NFS 或 Samba 不感兴趣,我实际上希望光驱在远程计算机上显示为光驱。
slm*_*slm 35
我认为您可以使用网络块设备 (NBD) 完成您想要的操作。查看有关该主题的维基百科页面,提到了一个名为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
Run Code Online (Sandbox Code Playgroud)
共享 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.
$
Run Code Online (Sandbox Code Playgroud)
快速检查它是否正在运行:
$ 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
Run Code Online (Sandbox Code Playgroud)
安装光盘
现在回到 Ubuntu 客户端,我们需要像这样连接到nbd-serverusing nbd-client。 注意:本例中 nbd-server 的名称是 greeneggs。
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
Run Code Online (Sandbox Code Playgroud)
(在某些系统上 - 例如 Fedora - 必须modprobe nbd首先。)
我们可以使用以下命令确认 Ubuntu 系统上现在有一个块设备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
Run Code Online (Sandbox Code Playgroud)
现在我们安装它:
$ sudo mount /dev/nbd0p1 /mnt/
mount: block device /dev/nbd0p1 is write-protected, mounting read-only
$
Run Code Online (Sandbox Code Playgroud)
它起作用了吗?
悬念正在扼杀我,我们有起飞:
$ sudo ls /mnt/
EFI GPL isolinux LiveOS
Run Code Online (Sandbox Code Playgroud)
我在 Fedora 19 笔记本电脑中安装了 CentOS 的 LiveCD 的内容,并且能够将其安装为 Ubuntu 上的网络块设备。
Bra*_*ley 20
一种替代方法nbd(如果您感兴趣的话)是使用 iSCSI。tgtd可以配置为将/dev设备作为特定 iSCSI IQN 的后备存储。
如果您使用的是 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>
Run Code Online (Sandbox Code Playgroud)
在 Fedora/RHEL 上启动它:
# systemctl start tgtd.service
# firewall-cmd --add-service iscsi-target
Run Code Online (Sandbox Code Playgroud)
您将安装iscsi-initiator-utils在客户端系统上并用于iscsiadm发送目标,然后“登录”枚举的目标。例如:
# iscsiadm -m discovery -t sendtargets -p <remoteHost>
# iscsiadm -m node -T <Complete Target IQN> -l -p <remoteHost>
Run Code Online (Sandbox Code Playgroud)
然后,iSCSI LUN 将作为常规块设备呈现给系统。在 RHEL 上,您可以检查特定设备通过的传输,您只需执行ls -l /dev/disk/by-path | grep iscsi一下即可查看通过 iSCSI 传输的存储。该路径还将列出您在上面登录的目标的 IQN。
当不再需要 iSCSI 设备时,可以通过以下方式将其删除:
# iscsiadm -m node -T <Complete Target IQN> -u -p <remoteHost>
Run Code Online (Sandbox Code Playgroud)
小智 9
您显然更喜欢 SAN 解决方案。除了已经提到的 iSCSI 和 NBD,您还有 AoE(以太网上的 ATA)方法。
这很容易做到:
在服务方面,您需要
modprobe aoe
vbladed 0 0 eth0 /dev/sdc
Run Code Online (Sandbox Code Playgroud)
在客户端
modprobe aoe
aoe-discover
aoe-stat
e0.0 1000.204GB eth0 1024 up
Run Code Online (Sandbox Code Playgroud)
您的设备在
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
Run Code Online (Sandbox Code Playgroud)
哪里e0.0是你/dev/sdc和e0.0.p1IS/dev/sdc1
dmesg 在服务器上:
[221384.454447] aoe: AoE v85 initialised.
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
挺容易。
vbladed是vbladeFedora 和 Ubuntu 上软件包的一部分,在其他发行版中也可能相同。aoe-discover&aoe-stat也是aoetoolsFedora 和 Ubuntu软件包的一部分。fdisk为块设备,例如,/dev/etherd/e0.0。vblade这是在F19和F20软件仓库是相当过时,它的版本14. ATAoE项目页面有21个版本。此处有适用于 Fedora 19 x86_64的更新 RPM。