Answers:
我认为您可以使用网络块设备(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
共享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
现在回到Ubuntu客户端,我们需要像这样连接到nbd-server
using nbd-client
。 注意:在此示例中,nbd服务器的名称为greeneggs。
$ sudo nbd-client greeneggs 2000 /dev/nbd0
Negotiation: ..size = 643MB
bs=1024, sz=674983936 bytes
(在某些系统上,例如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
现在我们挂载它:
$ 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的内容,并能够将其作为网络的块设备安装在Ubuntu上。
greeneggs
是服务器的主机名。
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>
要在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)方法。
这很容易做到:
在服务方面,您需要
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的方法来提供。
对于此设置,我们需要一个受Unix启发的系统来托管块设备,并且需要一个具有环回块设备的系统以供系统查看。Linux将对两者都起作用。
接下来,我们需要一个笨拙的网络文件系统(它不能优化数据存储),例如samba或webdav。特别是NFS,而AFS将不起作用。
将块设备放置在导出的文件夹中。(man mknod
将有所帮助。)禁用块设备检查(如果适用)。在客户端计算机上安装导出的文件系统,使用导入的文件作为后备存储创建循环设备,然后按正常方式安装。(losetup
或mount -o loop
)
它是如何工作的以及为什么起作用以及性能为何如此糟糕:unix背后的核心思想之一是,一切都是文件,因此设备是文件,只是它们有些特殊(这就是为什么它们被称为特殊文件)的原因。mknod可以生成几种特殊文件,但是我们只看块设备。文件系统中存在块设备,就像任何其他文件一样,它们与拥有所有者,权限,索引节点和名称的任何其他文件一样;但是它们有两个区别:它们不将数据存储在文件系统中,并且具有额外的功能以便可以挂载。如果文件服务器很笨,无法注意这些差异,则可以忽略它们并将它们导出为常规文件。接下来,循环设备将获取一个普通文件(本地文件或远程文件),并添加特殊的属性和功能,以便您可以将常规文件挂载为块设备。最大的缺点是性能。