AD

NBD-网络块设备[翻译]

1997年4月,Pavel Machek 写了他的网络块设备代码,并被当时的Linux Kernel 2.1.55接受。Pavel 在随后的四个发行版(对应的内核版本为55、101、111、132)中维护并升级了他的代码。Andrzej M. Krzysztofowicz贡献了64位机上运行的版本,随后Stephen Tweedie 为其提出了许多的专业建议,尤其是引入了基于信号量的锁机制,使得代码在对称多处理器系统中能够安全的运行。作者们已将其增强以便于运用于工业环境之中。本文描述了网络块设备、驱动、以及它的开发历史。

NBD的驱动程序提供了一种在这个面向网络的世界中更为普遍的访问模型。它在本地客户端模拟了一个块设备,比如一个磁盘或者是一块磁盘分区,但实际提供物理支持的却是通过网络连接的远程服务器。在本地,该设备看起来是一个磁盘分区,但那只是远程服务器的表面。远程服务器是一段轻量级的守护进程代码,它提供对远程设备的访问,而且该守护进程并不需要运行在linux平台之上。本地操作系统必须是linux,而且要支持Linux内核NBD驱动,并且能够运行本地客户端进程。安装NBD可被用来进行远程存储和备份,而且能用来在地球的任意一个角落虚拟地传送物理设备。

NBD-网络块设备[翻译]

图1.NBD在本地客户端代表远程资源

NBD有一些UNIX系统组件的经典特征:简单、小巧、多功能。文件系统能被挂载到NBD上(图1),而且NBD设备也能够用来组成冗余磁盘阵列(RAID)。在本地Linux上挂载一个EXT2文件系统到NBD,其传输率要比在同样的远程机器上挂载一个NFS快(表1是接近Pavel最初写的驱动代码的计时)。

NBD-网络块设备[翻译]

图2.使用NBD的冗余磁盘阵列

write cmd.  dd=if=/dev/zero of=/dev/nd0 bs=1024 count=32000
NBD bs=1K   0.04user 5.54system 0:26:67elapsed 20.9%CPU 1.23MBps
write cmd.  dd=if=/dev/zero of=/dev/nfs bs=1024 count=32000
NFS r/wsize=1K  0.15user 7.46system 0:43.58elapsed 17.0%CPU 0.75MBps
write cmd.  dd=if=/dev/zero of=/dev/nfs bs=4096 count=8000
NFS r/wsize=4K  0.03user 3.94system 0:35.18elapsed 11.0%CPU 0.93MBps

表 1. NBD与NFS在一个端口上的写传输速率比较

挂载到NBD上的Linux EXT2文件系统,缓冲区大小接近1.5KB,其性能赶得上默认条件下的NFS。也就是说,它的大小是以太网默认传输单元(MTU/MRU)的大小——1.5KB。这恰好是NFS默认缓冲区大小(1KB)的1.5倍。NBD因为使用TCP而不是UDP作为传输协议而具有很好的恢复力。TCP包含它固有的一致性以及恢复机制,因而比UDP协议庞大。但对NBD来说,TCP的开销会被它节省的重新传输和校正码所需带宽抵消。

NBD能够被用作一个中型邮件服务器A的实时镜像。故障转移可以通过在另一个房间里放置一台用100BT网络连接的备份服务器B来实现。NBD设备将主服务器和备份服务器连接,并提供了主服务器RAID-1镜像的一半(Y),另一般是主服务器自己的用于存放邮件的分区(X)。组合成的设备XY将作为mail spool被挂载。

当服务器A失效时,运行在B上的一个守护进程能够探测到NBD连接的断开,然后检查镜像Y的mail spool, 校验最小的不完整性,并将其在本地作为mail spool挂载,最后在B上启动A广播的邮件交换IP地址的别名。当A修复之后,会被守护进程检测到,别名将会被丢弃。NBD连接随后会被重新修复,A上的分区X将会重新和NBD镜像Y保持同步。主服务器RAID-1设备会被重新调度,NBD镜像也会重新从属于它。邮件服务将会以默认的配置恢复。使主从服务器设置对称是可能的,但不适宜在这里描述细节。

与其他备选方案相比,这种方法具有许多优点。其一,比如说,维护一个空的邮件服务器,在主服务器宕机的时候将其唤醒。这会使得许多已经放到spool中的邮件在停机期间不可被使用。但重新整合是很容易的,将相关的文件连接到恢复后的服务器也很简单。但主服务器上的某些邮件可能会丢失。

另一种解决办法是将邮件服务器分散到一些不同的机器上,这些机器通过NFS挂载同样的spool区域。然而,NFS的文件锁过去从未被证明是完全可靠的,NFS也从未令人满意的支持由于多个用户同时选择下载50MB的邮件目录引起的事件的激增。传输率也会随着文件尺寸成指数地变慢。在不利的网络条件下,软模式的传输率极有可能崩溃。如果NFS在服务启动的时候为了追求高的可靠性而以同步(硬)模式挂载,一旦NFS服务失效,将会导致所有客户端停机。NFS服务不得不独立地建立镜像。

标签:
时间: 2014-04-24

相关文章

  1. 网络块设备存储系统 BlackHole Store

    BlackHole Store 网站 : http://vanheusden.com/java/BlackHole/ BlackHole 是一个无数据重复的网络块设备,支持镜像.快照以及多 LUNs 使用相同的存储. I ...
  2. 块设备驱动注意事项

    将ldd3(linxu device driver 3)中块设备驱动部分的代码在redhat6.3下编译时,会出现很多问题,主要是由于ldd3示例代码使用的内核版本较低(2.6.10版本), 对于块设备子系统,很多接口都 ...
  3. linux中的块设备和字符设备

    系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块.最常见的块设备是硬盘,除此以外,还有软盘驱动器.CD-ROM驱动器和闪存等等许多其他块设备.注意,它们都是以安装文件 ...
  4. ceph中关于块设备的操作

    一.创建块设备 qemu-img create -f rbd rbd:资源池名/块设备名 文件大小 例如: qemu-img create -f rbd rbd:rbd/test 1G 说明:在资源池rbd下创建一个名为 ...
  5. 译:块设备和 OpenStack

    libvirt 配置了 librbd 的 QEMU 接口,通过它可以在 OpenStack 中使用 Ceph 块设备镜像.Ceph 块设备镜像被当作集群对象,这意味着它比独立的服务器有更好的性能. 在 OpenStack ...
  6. 利用Trim/discard挂载rbd块设备

    在http://cephnotes.ksperis.com/blog/2014/12/18/use-discard-with-krbd-client-since-kernel-3-dot-18/有详细的描述,试验了一下, ...
  7. linux有线网络显示设备未托管

    NetworkManager NetworkManager 是为了使网络配置尽可能简单而开发的网络管理软件包,如果使用 DHCP,NetworkManager 会替换默认的路由表.从 DHCP 服务器获取 IP 地址并根 ...
  8. 基于HTML5的网络拓扑图 - 设备状态面板

    电信网管系统中,设备状态信息的实时展示非常重要,通常会挂载一堆图标来展示状态或告警信息,图标的信息量有限,有时需要更详细的面板,甚至以图表的形式展现,本文将结合最近客户提到的需求,使用 Qunee1.6 beta版本,实 ...
  9. 设置开机ceph自动map rbd块设备

    1. 先下载init-rbdmap到/etc/init.d目录: wget https://raw.github.com/ceph/ceph/a4ddf704868832e119d7949e96fe35ab1920f06 ...
  10. Linux 2.6.19.x 内核编译配置选项简介

    转载自:http://www.douban.com/group/topic/15706557/ Code maturity level options 代码成熟度选项 Prompt for development and ...
  11. Linux操作系统内核编译详解

    内核简介 ??内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. ??Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src ...
  12. RedHat linux 8.0下内核编译步骤和说明

    *********************************************************************** *以下步骤有很多都是很初级的命令或解释,因为偶是linux新手, *在编译过 ...
  13. Linux设备驱动程序学习笔记

    Linux设备驱动程序的作用 简介 设备 驱动程序就像一个个的"黑盒子",使某个特定硬件响应一个定义良好的内部编程接口,这些操作完全隐藏了设备的工作细节.用户的操作通过一组标准化的调用执行,而这些调用 ...
  14. [官版翻译]OpenStack centos版安装(二)

    原创作品:http://manual.blog.51cto.com/3300438/967858 在OpenStack第一天文档翻译后,丁丁努力坚持每晚抽时间翻译OpenStack官方网站提供的安装与部署指南,本文翻译自 ...
  15. [官版翻译]OpenStack centos版安装(一)

    原创作品:http://manual.blog.51cto.com/3300438/965389 OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开 ...
  16.   [官版翻译]OpenStack centos版安装(一)

    原创作品:http://manual.blog.51cto.com/3300438/965389 OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开 ...
  17. 四个步骤加强网络防护

    通过采用以下四个步骤,你能够减轻保护网络的压力.下面是一些加强你的网络防护的方法. 最近,微软在宣传如果你想要得到一个真正安全的网络,你必须关注5个重要的领域.这些领域包括周边防护,网络防护,应用防护,数据防护,和主机防 ...
  18. 关于浏览器和网络的20项须知

    20 项须知:前言 如今许多人都离不开网络,我们只要动动手指就能获得全球信息,并且在瞬间接触到世界各地的人和活动.所有这些超强体验都归功于开放的互联网.世界上的任何人都能通过任何已联网的设备,通过浏览器上网. 但是浏览器 ...
  19. 什么样的硬件设备在支撑 Stack Overflow?

    我更愿意把Stack Overflow看作是能够运行于大规模数据下,但本身并不算大规模的(running with scale but not at scale).意思是我们的网站非常有效率,但至少目前为止,我们的规模还 ...