<<上篇 | 首页 | 下篇>>

虚拟共享存储:选iSCSI还是NFS?-CSDN.NET

当虚拟化需要借助共享存储时,IT经理们应该决定采用块级FC和iSCSI存储,还是文件级的NFS存储?iSCSI和NFS之间的差异已经成为IT经理们部署服务器虚拟化时不得不面对的问题之一。

根据存储专家Nigel Poulton的说法,尽管成本高于NFS,大多数的VMware仍是基于FC和iSCSI技术部署的。块级存储提供的高性能和高可靠性已经得到事实证明,尤其在关键的生产环境内。

同时也不乏一些重量级专家,如Scott Lowe,强烈建议NFS存储。理由是它的易管理、大数据存储以及NFS阵列具备的一些诸如重复数据删除等可以节省成本的技术。

参考如下的iSCSI vs. NFS内容可以帮助您决定采用块级FC或iSCSI共享存储,还是基于以太网的NFS阵列。

块级存储的性能和可靠性高于NFS存储

Nigel Poulton,撰稿人

您的VMware环境应该选择块级还是文件级存储?

这样的问题不会有完美的答案。多数情况下,解决方案可以根据如下的准则产生:如果您计划把VMware用于实际工作环境,答案是块级;如果只是打算测试一下,答案是文件级。下面是理由:

实际工作 vs.测试

实际工作主要指那些常见的:生产、核心系统、高可用、在线交易、高性能、关键业务、数据中心、无停顿、零停机等情况。

另一方面,测试包括了任何非上述情况的应用。例如,可能会包括家庭网络、实验室、测试和开发环境等成本至上的应用。

性能和可靠性

块级存储通常有专用的高速数据传输网络,保证它的高性能和高可靠性。专用网络指的是主动预防、少争用、高带宽的网络。更少的网络争用降低了其它网络发生故障而受到波及的情况。

协议卸载能力也是增加性能的方式之一。FC和iSCSI HBA都提供协议卸载能力。这些HBA对协议相关功能的处理要比主CPU更快,更重要的是可以释放CPU资源用于其它的ESX任务。

还有一点要注意的是,VMware对vSphere 4.0 投入大量精力在改善和优化iSCSI initiator软件性能上,相比3.5版本性能会有大幅增强。

支持者

抛开纯技术性优越不谈,公平地讲之前大多数生产环境VMware部署都是基于块级存储——尤其是FC存储。即使听到反对声音时,这种现状会让我们对在实际工作环境采用块级存储感到放心一些。

为证实该观点,我最近联系一些已经使用和部署VMware的朋友和同行,并询问他们的使用情况。很有趣的结果是,当前他们几乎在绝大多数情况下都基于块级存储部署VMware。

在个人主页上我也设置了一个快速投票活动针对同一主题。截止1月5号,投票结果中72%选择了块级存储,文件级存储仅占10%,剩下的选择了两者的混合环境选项。

从中可以看到尽管块级存储方案通常比文件级要贵得多,更为成熟地,被用户广泛接受和信任的解决方案依然毫无疑问是块级存储。所以,如果您计划通过VMware进行实际工作,而且对性能、可靠性有要求,让人放心的做法就是选择块级存储。不要轻易被文件级存储所宣传的那些优势煽动,或许您永远都享受不到。

使用NFS作为虚拟机存储的六个原因

Scott Lowe

如下六个方面是我们选择用NFS存储代替传统块级存储作为虚拟机存储设备的理由。

1.简单地操作模式。和传统块级存储相比,NFS的可操作性要好得多。调整LUN大小是很复杂的事情,需要同时涉及LUN和VMFS(Virtual Machine File System)存储大小的调整。调整NFS文件系统要相对简单一些。vSphere最新提供的VMFS扩展功能可以有所帮助,但也要比NFS麻烦很多。另外,用NFS代替块级存储后,使用重复数据删除功能(多数阵列支持这一功能)也要更加简单和便捷。

2.大数据存储。VMFS LUN受限于2TB大小,NFS则不会——某些阵列LUN可达16TB大小。

3.基于以太网的架构。NFS使用现有的以太网架构。另一方面,iSCSI也可以,所以这方面两种协议处于平手。

4.基于文件系统上的高级功能。NFS相比传统的块级设备可以提供更多高级功能,因为存储阵列拥有对文件系统的控制权。在NFS阵列中,诸如快照和克隆这样的技术可以得到更为广泛的支持。例如,在Sun Storage 7000或NetApp FAS阵列中都提供了接近实时的快照和保留空间的克隆功能。

5.开放的访问方式。VMware设计VMFS完全是为支持虚拟环境的,不过这也导致VMFS几乎成为VMware环境专用。也就意味着对VMFS数据的访问会比较困难。而NFS天生就是一种跨平台协议,使得备份、复制或其它任务对虚拟机的访问变得简单。

6.光明的未来。NFS的未来很大程度要看pNFS(parallel NFS)的发展,它为scale-out存储、包括多存储控制器(NAS机头)和多个卷的平台提供了一种标准。pNFS希望可以对多种工作负载(也包括虚拟化)提供增强的性能表现。(李哲贤/译)

阅读全文……

标签 : , ,

drdb+heartbeat+nfs实现Linux高可用群集(HA) - 朱超博 - 51CTO技术博客

    如果主服务器宕机,造成的损失是不可估量的。要保证主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案 中,heartbeat为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat+drbd在Linux下创建一个高可用(HA)的集群 服务器。

DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
服务器地址说明:drdb主服务器地址192.168.1.2 主机名master。drdb从属服务器地址192.168.1.3, 主机名slave。 虚拟ip 192.168.1.10
 虚拟操作系统:redhat 企业版5.4。
1、主服务器配置:
1、固定ip地址:
[root@master ~]# setup
[root@master ~]# service network restart
 
2、修改hosts文件:
[root@manage ~]# echo "192.168.1.2 master ">>/etc/hosts
[root@manage ~]# echo "192.168.1.2 slave ">>/etc/hosts
 
3、编辑yum客户端:
[root@master ~]# mkdir /mnt/cdrom
[root@master ~]# mount /dev/cdrom /mnt/cdrom/
[root@master ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
编辑的内容:
[rhel-server]
name=Red Hat Enterprise Linux server
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-cluster]
name=Red Hat Enterprise Linux cluster
baseurl=file:///mnt/cdrom/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[rhel-clusterstorage]
name=Red Hat Enterprise Linux clusterstorage
baseurl=file:///mnt/cdrom/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
 
4、新建分区:
[root@master ~]# fdisk /dev/sda
 
The number of cylinders for this disk is set to 1958.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
 
Command (m for help):   #增加新分区
Command action
   e   extended
   p   primary partition (1-4)
p   #增加主分区
Selected partition 4
First cylinder (328-1958, default 328):   #默认柱面,直接回车
Using default value 328
Last cylinder or +size or +sizeM or +sizeK (328-1958, default 1958): +1G  #大小为1G
 
Command (m for help): w   #保存退出
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@master ~]#partprobe   /dev/sda
查看分区:
[root@master ~]#cat /proc/partitions

 

 

5、安装drdb:
[root@master ~]# yum localinstall drbd83-8.3.8-1.el5.centos.i386.rpm kmod-drbd83-8.3.8-1.el5.centos.i686.rpm –nogpgcheck -y
 
加载DRBD 模块
[root@master ~]# modprobe drbd
查看模块加载
 [root@master ~]# lsmod |grep drbd
drbd                  228528 0
编辑配置文件
[root@master ~]# vim /etc/drbd.conf
在底行模式下输入“r /usr/share/doc/drbd83-8.3.8/drbd.conf”。
在从属服务器执行相同的操作;
 
[root@master ~]# cd /etc/drbd.d/                  
[root@master drbd.d]# cp global_common.conf global_common.conf.bak
[root@master drbd.d]# vim global_common.conf
内容为:
global {
        usage-count no;
        # minor-count dialog-refresh disable-ip-verification
}
 
common {
        protocol C;
 
 
        startup {
                 wfc-timeout 120;
                 degr-wfc-timeout 120;
        }
 
        disk {
                on-io-error detach;
                fencing resource-only;
        }
 
        net {
                cram-hmac-alg "sha1";
                shared-secret "mydrbdlab";
        }
 
        syncer {
                rate 100M;
        }
}
 
定义资源:
名字为web.res
编辑
[root@master drbd.d]# vim web.res
resource web { 
      
        on master {                           
                device /dev/drbd0;           
                disk /dev/sda4;               
                address 192.168.1.2:7898;     
                meta-disk internal;           
        }
        on slave {
                device /dev/drbd0;
                disk /dev/sda4;
                address 192.168.1.3:7898;
                meta-disk internal;
        }
}
 
将此两个文件拷贝到从属服务器中(地址为192.168.1.3)
[root@master drbd.d]# scp global_common.conf 192.168.1.3:/etc/drbd.d/
[root@master drbd.d]# scp web.res 192.168.1.3:/etc/drbd.d/
 
6、检测配置文件
[root@master drbd.d]# drbdadm adjust web
drbdsetup 0 show:5: delay-probe-volume 0k => 0k out of range [4..1048576]k.
7、创建web 的资源
[root@master drbd.d]# drbdadm create-md web
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
启动DRBD 服务
[root@master drbd.d]#service drbd start
7、将一些文件拷贝到slave(192.168.1.3)中:
 
先拷贝hosts文件:
[root@master ~]# scp /etc/hosts 192.168.1.3:/etc/
The authenticity of host '192.168.1.3 (192.168.1.3)' can't be established.
RSA key fingerprint is d4:f1:06:3b:a0:81:fd:85:65:20:9e:a1:ee:46:a6:8b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.3' (RSA) to the list of known hosts.
[email protected]'s password:         #输入slave的管理员密码
 
拷贝yum客户端:
[root@master ~]# scp /etc/yum.repos.d/rhel-debuginfo.repo 192.168.1.3:/etc/yum.repos.d/
[email protected]'s password:   #输入slave管理员的密码
 
拷贝drdb安装包:
[root@master ~]# scp *.rpm 192.168.1.3:/root
[email protected]'s password:   #输入slave管理员的密码
 
2、从属服务器配置:
 
1、新建分区:(注意新建分区大小与主服务器一样)
 
[root@slave ~]# fdisk /dev/sda
 
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
 
Command (m for help): n   #增加新分区
Command action
   e   extended
   p   primary partition (1-4)
p    #增加主分区
Selected partition 4
First cylinder (1580-2610, default 1580):    #默认柱面,直接回车
Using default value 1580
Last cylinder or +size or +sizeM or +sizeK (1580-2610, default 2610): +1G   #大小为1G
 
Command (m for help): W    #保存退出
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
 
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@slave ~]# partprobe   /dev/sda
 
 
2、安装drdb:
[root@slave ~]# mkdir /mnt/cdrom/
[root@slave ~]# mount /dev/cdrom /mnt/cdrom/
[root@slave ~]#yum localinstall drbd83-8.3.8-1.el5.centos.i386.rpm kmod-drbd83-8.3.8-1.el5.centos.i686.rpm –nogpgcheck -y
[root@slave ~]# cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc/
3、检测配置文件
[root@slave drbd.d]# drbdadm adjust web
 
4、创建web 的资源
[root@slave drbd.d]# drbdadm create-md web
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
 
3、接下来在两台服务器上同时操作
 
1、在主服务器和从属服务器上同时启动drbd服务:
 主服务器:[root@master drbd.d]# service drbd start
 从属服务器:[root@slave drbd.d]# service drbd start
 
2、查看两台服务器上的drbd状态:
 
master
[root@master ~]# drbd-overview
 0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----
[root@master drbd.d]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:987928
slave
[root@slave ~]# drbd-overview
 0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----
[root@slave drbd.d]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
 0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:987928
 
可知两台服务器都为Secondary状态,证明还没有同步。
 
创建文件夹
[root@master ~]# mkdir /data
[root@slave ~]# mkdir /data
 
3、在master上操作:
[root@master ~]# cd /etc/drbd.d/
[root@master drbd.d]# drbdadm -- --overwrite-data-of-peer primary web
[root@master drbd.d]# drbd-overview
 0:web SyncSource Primary/Secondary UpToDate/Inconsistent C r----
   [====>...............] sync'ed: 26.5% (732280/987928)K delay_probe: 25
 
格式化:
[root@master drbd.d]# mkfs -t ext3 -L drbdweb /dev/drbd0
挂载:
[root@master drbd.d]# mkdir /mnt/1
[root@master drbd.d]# mount /dev/drbd0 /mnt/1
[root@master drbd.d]# df -h
Filesystem            Size Used Avail Use% Mounted on
/dev/sda2             9.7G 2.6G 6.7G 28% /
/dev/sda1              99M   12M   83M 12% /boot
tmpfs                  97M     0   97M   0% /dev/shm
/dev/hdc              2.8G 2.8G     0 100% /mnt/cdrom
/dev/drbd0            950M   18M 885M   2% /mnt/1
 
 
再次查看两台服务器的状态:
master
[root@master drbd.d]# service drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
m:res cs         ro                 ds                 p mounted fstype
0:web Connected Primary/Secondary UpToDate/UpToDate C /mnt/1   ext3
 
slave
[root@slave drbd.d]# service drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:16
m:res cs         ro                 ds                 p mounted fstype
0:web Connected Secondary/Primary UpToDate/UpToDate C
 
可知master为主服务,salve为从属,此时已经同步。
 
4、NFS配置:
 
两台服务器都修改nfs 配置文件如下:
[root@master drbd.d]# vim /etc/exports
 
/data *(rw,sync,insecure,no_root_squash,no_wdelay)
 
两台服务器都启动服务并设为开机自启动:
service portmap start && chkconfig portmap on
service nfs start && chkconfig nfs on
 
两台服务器都修改nfs 启动脚本。将/etc/init.d/nfs 脚本中的stop 部分中的killproc
nfsd -2 修改为 -9
 
5、Heartbeat配置
在两台服务器上都操作:
yum localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm  --nogpgcheck
 
拷贝配置文档:
主服务器
[root@master ~]# cd /etc/ha.d/
[root@master ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./
[root@master ha.d]# cp /usr/share/doc/heartbeat-2.1.4/haresources ./
[root@master ha.d]# cp /usr/share/doc/heartbeat-2.1.4/authkeys ./
 
[root@master ha.d]# vim ha.cf
需要打开或修改以下几行:
24行  debugfile /var/log/ha-debug
29行  logfile /var/log/ha-log
34行  logfacility     local0
48行  keepalive 2
56行  deadtime 10
76行  udpport 694
121行  ucast eth0 192.168.1.3   #修改为对方的地址。
220行  ping 192.168.1.1
157行  auto_failback off #设为关闭状态。
在212行下面添加以下两行:
node    master
node    slave
 
在另一台服务器上修改的ha.cf中只有121行不一样。改为对方的地址192.168.1.2
 
配置haresources,2台机子相同:
echo "master IPaddr::192.168.1.10/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/data::ext3 killnfsd" >> /etc/ha.d/haresources
 
authkeys 配置相同:
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
 
在/etc/ha.d/resource.d目录下创建文件killnfsd并编辑(在两台服务器编辑一样)
 
echo "killall -9 nfsd;/etc/init.d/nfs restart;exit 0" >> /etc/ha.d/resource.d/killnfsd
 
设置文档权限:
chmod 600 /etc/ha.d/authkeys
chmod 755 /etc/ha.d/resource.d/killnfsd
 
开启Heartbeat服务
master
[root@master ha.d]# service heartbeat start
 
slave
[root@slave ha.d]# service heartbeat start
 
 
6、测试
先查看在heartbeat服务运行的情况下drbd的状态:
master
[root@master ~]# drbd-overview
 0:web Connected Primary/Secondary UpToDate/UpToDate C r---- /data ext3 950M 18M 885M 2%
slave
[root@slave ha.d]# drbd-overview
 0:web Connected Secondary/Primary UpToDate/UpToDate C r----
可知master为主服务器,slave为备份服务
 
把master上的heartbeat服务停止:
[root@master ~]# service heartbeat stop
 
再查看drbd的状态:
master
[root@master ~]# drbd-overview
 0:web Connected Secondary/Primary UpToDate/UpToDate C r----
slave
[root@slave ha.d]# drbd-overview
 0:web Connected Primary/Secondary UpToDate/UpToDate C r---- /data ext3 950M 18M 885M 2%
可知master为备份服务器,slave为主服务
 
至此,slave 接管服务成功,实验已实现所需的功能。

阅读全文……

标签 : , ,