存档

‘硬件相关’ 分类的存档

VMware ESX/ESXi 使用NETAPP存储 FCP Partner Path Misconfigured 报错处理

2011年10月27日 没有评论

VMware ESX/ESXi 使用NETAPP存储 FCP Partner Path Misconfigured 报错处理

在VMware ESX/ESXi 使用NETAPP存储时,存在多路径访问存储lun的情况下如果配置不当极易引起报错:
[hostname: scsitarget.partnerPath.misconfigured:error]: FCP Partner Path Misconfigured - Host I/O access through a non-primary and non-optimal path was detected.

这个主要是因为ESX主机在访问lun时使用了非主路径造成的,就如下图这种情况:

从上图来看我们可以看到这个lun在主机上实际是有2个访问路径的,一个是通过lun所在的机头访问的主路径,另一个是Partner机头的备用路径。
如果是更加高可用的采用2个机头各自使用2个光纤交叉连接至2个交换机的方式,那么每个lun在主机上对应的访问路径将会有4个,其中2个是主路径,2个是备用路径。

那么在ESX中是如何来选择多路径的呢,这里也介绍下ESX的多路径选择机制。
首先ESX会判断存储的类型,主要是A/P主-被、A/A主-主、ALUA主-被和非对称主-主这几种。
对应不同的存储类型ESX会使用不同的默认路径选择方式:

最近使用(VMW_PSP_MRU):选择最近用于访问指定设备的路径。如果此路径不可用,则会切换到替代路径并在该新路径可用时继续使用它。MRU是主-被阵列(A/P- Active/Passive)的默认路径策略。
固定(VMW_PSP_FIXED):使用指定首选路径(如果已配置)。否则,它将使用在系统引导时间发现的第一个工作路径。如果主机不能使用首选路径,则它会选择随机替代可用路径。一旦首选路径可用,主机便会恢复到首选路径。“固定”是主-主阵列(A/A – Symmetric Active/Acivie)的默认路径策略。
VMW_PSP_FIXED_AP:将“固定”功能扩展到主动-被动阵列和非对称主-主(ALUA – Asymmetric Active/Active)阵列。
循环(VMW_PSP_RR) :使用路径选择算法轮流选择所有可用的活动路径,并在路径之间启用负载平衡。

根据我管理的系统中2台NETAPP的存储在ESX中均被识别为:VMW_SATP_DEFAULT_AA,就是A/A主-主类型,所以他默认使用的是 固定(VMW_PSP_FIXED)。
那么问题就在这里了,由于固定(VMW_PSP_FIXED)方式的路径选择,ESX将会选用第一个发现的路径作为首选路径来使用,但是有些时候这往往不是主路径,所以就导致了Host I/O access through a non-primary and non-optimal path was detected.的报错。
这个时候就需要手工调整首选路径了,那么如何来确定什么路径才是主路径呢?

1.首选确定目标lun所在的机头
这个我想不用多说了

2.连上目标lun所在的机头确认FC Nodename和Portname

FAS2050A> fcp show adapters
Slot: 0a
Description: Fibre Channel Target Adapter 0a (Dual-channel, QLogic 2432 (2462) rev. 2)
Adapter Type: Local
Status: ONLINE
FC Nodename: 50:0a:09:80:88:8c:82:35 (500a0980888c8235)
FC Portname: 50:0a:09:81:88:8c:82:35 (500a0981888c8235)
Standby: No

Slot: 0b
Description: Fibre Channel Target Adapter 0b (Dual-channel, QLogic 2432 (2462) rev. 2)
Adapter Type: Local
Status: ONLINE
FC Nodename: 50:0a:09:80:88:8c:82:35 (500a0980888c8235)
FC Portname: 50:0a:09:82:88:8c:82:35 (500a0982888c8235)
Standby: No

根据上例返回的信息,这个机头有2个hba卡,在esx看到的目标路径就是Nodename Portname,这个的2个目标路径就是
50:0a:09:80:88:8c:82:35 50:0a:09:81:88:8c:82:35
50:0a:09:80:88:8c:82:35 50:0a:09:82:88:8c:82:35

3.知道了目标路径后打开esx存储适配器手工指定目标lun的首选路径


本图由于有4个路径分表是其中有2个目标路径对应lun所在机头的2个hba卡,可以根据实际情况手工指定不同的hba卡分流流量。

如何检测调整的效果
1. lun stats -o 查看Partner Ops 和 Partner KBytes 字段,可以直观的以lun列表的形式查看,如果是调整后可以使用lun stats -z清空统计数据。
2. sysstat -b 1 查看Partner字段,可以直观的以实时监控的形式查看。

如果上述字段为非0那就说明有Host I/O access through a non-primary and non-optimal path的情况。

cisco stp相关配置

2011年10月27日 没有评论

这里不去介绍相关知识了,网上一搜一大堆。写这篇博客只是为了记录下解决我单位混乱二层网络管理无从下手的一些心得。
交换机配置一向不是我的强项,这次调整stp完全出于无奈,我们单位的网络期初是从1台借用的二层交换机开始的,逐步的添加扩展直到今天位于3个机房、13台交换机的规模、9个网段,由于我懒,加上随意配ip习惯,导致了这种局面,要起三层必须等于是要把网络这层全部铲了从起炉灶,伤不起啊,前车之鉴啊,各位规划网络初期就一定要注意啊!

我们这个大二层从划分来讲主要就是3大块,1,中心机房 2,电信机房 3,办公室。
故事(事故)是这样开始的,由于单位搬了新大楼,而新大楼的网络全部使用的是h3c产品,我们在14楼使用的是我们单位独立的网络,但是平时也有其他一些楼层需要用我们的网段跑些业务,所以在14楼我们在我们网络的cisco交换机与大楼本身网络的h3c交换机之间做了互通并在大楼网络里面起了个我们的vlan,这样就能利用大楼的网络方便的将某些端口划到分到我们的vlan里面就能使用我们的出口和网络了。但是问题出现了,在楼道里cisco和h3c互联接线的那刻,大楼网络从楼道的h3c交换机开始一直瘫倒核心。后来把我们楼道里面那台cisco的stp关了才算了事。cisco的stp是只能针对vlan关的,像我们那种傻瓜用法的等于要关掉整个交换机的stp,这很不爽。调整双方stp协议对接也很不现实,大楼网络不会为了我们一个小网络去做调整。所以我只能想其他办法了。

网上看了几天资料了解了,看完才知道,原来二层网络也是需要管理维护的。

1.根桥(root bridge)
二层网络首先要确定一个根桥(root bridge),虽然什么都不配交换机之间也能自己协商出来一个,但是有些情况下那往往不是你所希望的,而且随着后期交换机的加入还会发生变化。
如何确定根桥(root bridge):

3750#show spanning-tree

VLAN0010
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     04c5.a488.c400
             Cost        4
             Port 3 (GigabitEthernet1/0/3)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32778  (priority 32768 sys-id-ext 10)
             Address     04c5.a488.c400
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Gi1/0/3          Root FWD 4         128.3    P2p
Gi1/0/4          Desg FWD 19        128.4    P2p

沿着这个返回端口在途径的交换机上面重复 show spanning-tree 直到出现

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     04c5.a488.c400
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     04c5.a488.c400
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

这就是你二层网络的 根桥(root bridge)。

2.如何手工指定根桥(root bridge)
3750#conf t
3750(config)#spanning-tree vlan 1 root primary

3.根保护(Root Guard)
根保护(Root Guard)的作用是防止指定端口下级网络环境中出现根桥(root bridge),虽然你通过手工可以指定根桥(root bridge)但是他的优先级(Priority)是固定为24577的(数值越低优先级越高),一旦下级网络中有手工指定的优先级更高的交换机出现那么它就会占据根桥(root bridge)。这时候就需要配置根保护(Root Guard)防止这种情况。
3750#conf t
3750(config)#interface gigabitEthernet1/0/26
3750(config-if)#spanning-tree bpduguard enable

端口配置了根保护(Root Guard)后,一旦接收到优先级比现有根更高的BPDU包这个端口就会被转为Block状态,直到不再接受到BPDU包或者优先级高的BPDU包。

3.BPDU过滤(BPDU Filtering)
BPDU过滤(BPDU Filtering)顾名思义,过滤BPDU。端口接受到任何的BPDU包一律到此为止,不在往端口上转发。一般配合PortFast用于连接主机的端口。
3750#conf t
3750(config)#interface gigabitEthernet1/0/26
3750(config-if)#spanning-tree bpdufilter enable

一旦端口启用BPDU过滤(BPDU Filtering)要注意不能出现环路,不然就真的瘫了。而且BPDU过滤(BPDU Filtering)优先级比根保护(Root Guard)高所以同时启用2个功能的话根保护(Root Guard)是不起作用的。

至于上面我单位遇到的问题,我测试了一下在手工指定根桥(root bridge)后再在14楼cisco上于h3c互联的端口启用BPDU过滤(BPDU Filtering),同时关闭h3c相应端口的stp后在打开cisco交换机的stp,网络就正常了。

总结一些netapp管理中的误区把,省的初学者绕弯路。

2011年9月13日 没有评论

1.建立lun的时候lun name最好就直接写明白lun的内容。

我之前是这样建lun的

lun create -s 201g -t linux -o noreserve /vol/volb1/web1/lun1
lun comment /vol/volb1/web1/lun1 web1

本来想想这样子已经够清楚了,没想到最近在用lun_top监控lun的读写情况是发现他就仅仅用了lun name,而不是path。结果就是重头到尾的排序都是lun1
解决方法:lun move /vol/volb1/web1/lun1 /vol/volb1/web1/lun.web1

未完待整理

分类: 硬件相关 标签:

在两台dell 2950之间交换perc 5 raid硬盘

2011年7月11日 没有评论

2台配置相同的dell 2950服务器,都采用了perc 5/i raid卡,一台是1块硬盘 raid0,另外一台是2块硬盘raid1。现在需要把2台机器的硬盘对换。
首先关机物理插拔并安装原位交换硬盘,然后开机,在raid卡载入的时候会提示:

Foreign configuration(s) found on adapter
Press any key to continue, or 'C' to load the configuration utility.

Some configured disks have been removed from your system, or are no longer
accessible. Please check your cables and also ensure all disks are present.
Press any key to continue, or 'C' to load the configuration utility.

这时候重复按 C 出现提示按 Y 重复按 Y,然后出现提示 按 C 的时候再重复按 C,直到进入raid 配置界面

这时候把光标移到controller 0 按 f2
选择 foreign config 再选择 import 就能导入硬盘中的raid配置了

分类: 硬件相关 标签: , ,

[转]基于SSD的数据库性能优化

2011年2月22日 没有评论

NOR和NAND

NOR和NAND都是闪存技术的一种,NOR是Intel公司开发的,它有点类似于内存,允许通过地址直接访问任何一个内存单元,缺点是:密度低 (容量小),写入和擦除的速度很慢。NAND是东芝公司开发的,它密度高(容量大),写入和擦除的速度都很快,但是必须通过特定的IO接口经过地址转换之 后才可以访问,有些类似于磁盘。

我们现在广泛使用的U盘,SD卡,SSD都属于NAND类型,厂商将flash memory封装成为不同的接口,比如Intel的SSD就是采用了SATA的接口,访问与普通SATA磁盘一样,还有一些企业级的闪存卡,比如FusionIO,则封装为PCIe接口。

SLC和MLC

SLC是单极单元,MLC是多级单元,两者的差异在于每单元存储的数据量(密度),SLC每单元只存储一位,只包含0和1两个电压符,MLC每单元 可以存储两位,包含四个电压符(00,01,10,11)。显然,MLC的存储容量比SLC大,但是SLC更简单可靠,SLC读取和写入的速度都比MLC 更快,而且SLC比MLC更耐用,MLC每单元可擦除1w次,而SLC可擦除10w次,所以,企业级的闪存产品一般都选用SLC,这也是为什么企业级产品 比家用产品贵很多的原因。

SSD的技术特点

SSD与传统磁盘相比,第一是没有机械装置,第二是由磁介质改为了电介质。在SSD内部有一个FTL(Flash Transalation Layer),它相当于磁盘中的控制器,主要功能就是作地址映射,将flash memory的物理地址映射为磁盘的LBA逻辑地址,并提供给OS作透明访问。

SSD没有传统磁盘的寻道时间和延迟时间,所以SSD可以提供非常高的随机读取能力,这是它的最大优势,SLC类型的SSD通常可以提供超过 35000的IOPS,传统15k的SAS磁盘,最多也只能达到160个IOPS,这对于传统磁盘来说几乎就是个天文数字。SSD连续读的能力相比普通磁 盘优势并不明显,因为连续读对于传统磁盘来说,并不需要寻道时间,15k的SAS磁盘,连续读的吞吐能力可以达到130MB,而SLC类型的SSD可以达 到170-200MB,我们看到在吞吐量方面,SSD虽然比传统磁盘高一些,但优势虽然并不明显。

SSD的写操作比较特殊,SSD的最小写入单元为4KB,称为页(page),当写入空白位置时可以按照4KB的单位写入,但是如果需要改写某个单 元时,则需要一个额外的擦除(erase)动作,擦除的单位一般是128个page(512KB),每个擦除单元称为块(block)。如果向一个空白的 page写入信息时,可以直接写入而无需擦除,但是如果需要改写某个存储单元(page)的数据,必须首先将整个block读入缓存,然后修改数据,并擦 除整个block的数据,最后将整个block写入,很显然,SSD改写数据的代价很高,SSD的这个特性,我们称之为erase-before- write。

经过测试,SLC SSD的随即写性能可以达到3000个左右的IOPS,连续写的吞吐量可以达到170-200MB,这个数据还是比传统磁盘高出不少。但是,随着SSD的 不断写入,当越来越多的数据需要被改写时,写的性能就会逐步下降。经过我们的测试,SLC在这个方面要明显好于MLC,在长时间写入后,MLC随机写IO 下降得非常厉害,而SLC表现则比较稳定。为了解决这个问题,各个厂商都有很多策略来防止写性能下降的问题。

wear leveling

因为SSD存在“写磨损”的问题,当某个单元长时间被反复擦写时(比如Oracle redo),不仅会造成写入的性能问题,而且会大大缩短SSD的使用寿命,所以必须设计一个均衡负载的算法来保证SSD的每个单元能够被均衡的使用,这就 是wear leveling,称为损耗均衡算法。

Wear leveling也是SSD内部的FTL实现的,它通过数据迁移来达到均衡损耗的目的。Wear leveling依赖于SSD中的一部分保留空间,基本原理是在SSD中设置了两个block pool,一个是free block pool(空闲池),一个是数据池(data block pool),当需要改写某个page时(如果写入原有位置,必须先擦除整个block,然后才能写入数据),并不写入原有位置(不需要擦除的动作),而是 从空闲池中取出新的block,将现有的数据和需要改写的数据合并为新的block,一起写入新的空白block,原有的block被标识为 invalid状态(等待被擦除回收),新的block则进入数据池。后台任务会定时从data block中取出无效数据的block,擦除后回收到空闲池中。这样做的好处在于,一是不会反复擦写同一个block,二是写入的速度会比较快(省略了擦 除的动作)。

Wear leveling分为两种:动态损耗均衡和静态损耗均衡,两者的原理一致,区别在于动态算法只会处理动态数据,比如数据改写时才会触发数据迁移的动作,对 静态数据不起作用,而静态算法可以均衡静态数据,当后台任务发现损耗很低的静态数据块时,将其迁移到其他数据库块上,将这些块放入空闲池中使用。从均衡的 效果来看,静态算法要好于动态算法,因为几乎所有的block都可以被均衡的使用,SSD的寿命会大大延长,但是静态算法的缺点是当数据迁移时,可能会导 致写性能下降。

写入放大

因为SSD的erase-before-write的特性,所以就出现了一个写入放大的概念,比如你想改写4K的数据,必须首先将整个擦除块(512KB)中的数据读出到缓存中,改写后,将整个块一起写入,这时你实际写入了512KB的数据,写入放大系数是128。写入放大最好的情况是1,就是不存在放大的情况。

Wear leveling算法可以有效缓解写入放大的问题,但是不合理的算法依然会导致写入放大,比如用户需要写入4k数据时,发现free block pool中没有空白的block,这时就必须在data block pool中选择一个包含无效数据的block,先读入缓存中,改写后,将整个块一起写入,采用wear leveling算法依然会存在写入放大的问题。

通过为SSD预留更多空间,可以显著缓解写入放大导致的性能问题。根据我们的测试结果,MLC SSD在长时间的随机写入后,性能下降很明显(随机写IOPS甚至降低到300)。如果为wear leveling预留更多空间,就可以显著改善MLC SSD在长时间写操作之后的性能下降问题,而且保留的空间越多,性能提升就越明显。相比较而言,SLC SSD的性能要稳定很多(IOPS在长时间随机写后,随机写可以稳定在3000 IOPS),我想应该是SLC SSD的容量通常比较小(32G和64G),而用于wear leveling的空间又比较大的原因。

数据库IO特点分析

IO有四种类型:连续读,随机读,随机写和连续写,连续读写的IO size通常比较大(128KB-1MB),主要衡量吞吐量,而随机读写的IO size比较小(小于8KB),主要衡量IOPS和响应时间。数据库中的全表扫描是连续读IO,索引访问则是典型的随机读IO,日志文件是连续写IO,而 数据文件则是随机写IO。

数据库系统基于传统磁盘访问特性来设计,最大特点是日志文件采用sequential logging,数据库 中的日志文件,要求必须在事务提交时写入到磁盘,对响应时间的要求很高,所以设计为顺序写入的方式,可以有效降低磁盘寻道花费的时间,减少延迟时间。日志 文件的顺序写入,虽然是物理位置是连续的,但是并不同于传统的连续写类型,日志文件的IO size很小(通常小于4K),每个IO之间是独立的(磁头必须抬起来重新寻道,并等待磁盘转动到相应的位置),而且间隔很短,数据库通过log buffer(缓存)和group commit的方式(批量提交)来达到提高IO size的大小,并减少IO的次数,从而得到更小的响应延迟,所以日志文件的顺序写入可以被认为是“连续位置的随机写入”,瓶颈还是在IOPS,而不是吞吐量。

数据文件采用in place update的方式,意思是数据文件的修改都是写入到原来的位置,数据文件不同 于日志文件,并不会在事务commit时写入数据文件,只有当数据库发现dirty buffer过多或者需要做checkpoint动作时,才会刷新这些dirty buffer到相应的位置,这是一个异步的过程,通常情况下,数据文件的随机写入对IO的要求并不是特别高,只要满足checkpoint和dirty buffer的要求就可以了。

SSD的IO特点分析

1.随机读能力非常好,连续读性能一般,但比普通SAS磁盘好。

2.不存在磁盘寻道的延迟时间,随机写和连续写的响应延迟差异不大。

3.erase-before-write特性,造成写入放大,影响写入的性能。

4.写磨损特性,采用wear leveling算法延长寿命,但同时会影响读的性能。

5.读和写的IO响应延迟不对等(读要大大好于写),而普通磁盘读和写的IO响应延迟差异很小。

6.连续写比随机写性能好,比如1M顺序写比128个8K的随即写要好很多,因为随即写会带来大量的擦除。

基于SSD的上述特性,如果将数据库全部放在SSD上,可能会有以下的问题:

1.日志文件sequential logging会反复擦写同一位置,虽然有损耗均衡算法,但是长时间写入依然会导致性能下降。

2.数据文件in place update会产生大量的随机写入,erase-before-write会产生写入放大。

3.数据库读写混合型应用,存在大量的随机写入,同时会影响读的性能,产生大量的IO延迟。

基于SSD的数据库优化法则

基于SSD的优化就是解决erase-before-write产生的写入放大的问题,不同类型的IO分离,减少写操作带来的性能影响。

1.将sequential logging修改为In-page logging,避免对相同位置的反复擦写。

2.通过缓存写入的方式将大量的in-place update随机写入合并为少量顺序写入。

3.利用SSD随机读写能力高的特点,减少写增加读,从而达到整体性能的提升。

In-page logging

In-page logging是基于SSD对数据库sequential logging的一种优化方法,数据库中的sequential logging对传统磁盘是非常有利的,可以大大提高响应时间,但是对于SSD就是噩梦,因为需要对同一位置反复擦写,而wear leveling算法虽然可以平衡负载,但是依然会影响性能,并产生大量的IO延迟。所以In-page logging将日志和数据合并,将日志顺序写入改为随机写入,基于SSD对随机写和连续写IO响应延迟差异不大的特性,避免对同一位置反复擦写,提高整 体性能。

In-page logging基本原理:在data buffer中,有一个in-memory log sector的结构,类似于log buffer,每个log sector是与data block对应的。在data buffer中,data和log并不合并,只是在data block和log sector之间建立了对应关系,可以将某个data block的log分离出来。但是,在SSD底层的flash memory中,数据和日志是存放在同一个block(擦除单元),每个block都包含data page和log page。

当日志信息需要写入的时候(log buffer空间不足或者事务提交),日志信息会写入到flash memory对应的block中,也就是说日志信息是分布在很多不同的block中的,而每个block内的日志信息是append write,所以不需要擦除的动作。当某个block中的log sector写满的时候,这时会发生一个动作,将整个block中的信息读出,然后应用block中的log sector,就可以得到最新的数据,然后整个block写入,这时,block中的log sector是空白的。

在in-page logging方法中,data buffer中的dirty block是不需要写入到flash memory中的,就算dirty buffer需要被交换出去,也不需要将它们写入flash memory中。当需要读取最新的数据,只要将block中的数据和日志信息合并,就可以得到最新的数据。

In-page logging方法,将日志和数据放在同一个擦除单元内,减少了对flash相同位置的反复擦写,而且不需要将dirty block写入到flash中,大量减少了in-place update的随机写入和擦除的动作。虽然在读取时,需要做一个merge的操作,但是因为数据和日志存放在一起,而且SSD的随机读取能力很高,in- page logging可以提高整体的性能。

SSD作为写cache—append write

SSD可以作为磁盘的写cache,因为SSD连续写比随机写性能好,比如:1M顺序写比128个8K的随机写要好很多,我们可以将大量随机写合并 成为少量顺序写,增加IO的大小,减少IO(擦除)的次数,提高写入性能。这个方法与很多NoSQL产品的append write类似,即不改写数据,只追加数据,需要时做合并处理。

基本原理:当dirty block需要写入到数据文件时,并不直接更新原来的数据文件,而是首先进行IO合并,将很多个8K的dirty block合并为一个512KB的写入单元,并采用append write的方式写入到一个cache file中(保存在SSD上),避免了擦除的动作,提高了写入性能。cache file中的数据采用循环的方式顺序写入,当cache file空间不足够时,后台进程会将cache file中的数据写入到真正的数据文件中(保存在磁盘上),这时进行第二次IO合并,将cache file内的数据进行合并,整合成为少量的顺序写入,对于磁盘来说,最终的IO是1M的顺序写入,顺序写入只会影响吞吐量,而磁盘的吞吐量不会成为瓶颈, 将IOPS的瓶颈转化为吞吐量的瓶颈,从而提升了整体系统能力。

读取数据时,必须首先读取cache file,而cache file中的数据是无序存放的,为了快速检索cache file中的数据,一般会在内存中为cache file建立一个索引,读取数据时会先查询这个索引,如果命中查询cache file,如果没有命中,再读取data file(普通磁盘),所以,这种方法实际不仅仅是写cache,同时也起到了读cache的作用。

SSD并不适合放数据库的日志文件,虽然日志文件也是append write,但是因为日志文件的IO size比较小,而且必须同步写入,无法做合并处理,对SSD来说,需要大量的擦除动作。我们也曾经尝试把redo log放在SSD上,考虑到SSD的随机写入也可以达到3000 IOPS,而且响应延时比磁盘低很多,但是这依赖于SSD本身的wear leveling算法是否优秀,而且日志文件必须是独立存放的,如果日志文件的写入是瓶颈,也算是一种解决方案吧。通常情况下,我还是建议日志文件放在普 通磁盘上,而不是SSD。

SSD作为读cache—flashcache

因为大部分数据库都是读多写少的类型,所以SSD作为数据库flashcache是优化方案中最简单的一种,它可以充分利用SSD读性能的优势,又 避免了SSD写入的性能问题。实现的方法有很多种,可以在读取数据时,将数据同时写入SSD,也可以在数据被刷出buffer时,写入到SSD。读取数据 时,首先在buffer中查询,然后在flashcache中查询,最后读取datafile。

SSD作为flashcache与memcache作为数据库外部cache的最大区别在于,SSD掉电后数据是不丢失的,这也引起了另外一个思 考,当数据库发生故障重启后,flashcache中的数据是有效还是无效?如果是有效的,那么就必须时刻保证flashcache中数据的一致性,如果 是无效的,那么flashcache同样面临一个预热的问题(这与memcache掉电后的问题一样)。目前,据我所知,基本上都认为是无效的,因为要保 持flashcache中数据的一致性,非常困难。

flashcache作为内存和磁盘之间的二级cache,除了性能的提升以外,从成本的角度看,SSD的价格介于memory和disk之间,作为两者之间的一层cache,可以在性能和价格之间找到平衡。

总结

随着SSD价格不断降低,容量和性能不断提升,SSD取代磁盘只是个时间问题。

Tape is Dead,Disk is Tape,Flash is Disk,RAM Locality is King.        Jim Gray

来源:http://www.hellodba.net/2010/10/ssd-database-2.html

分类: 硬件相关 标签: ,

华为交换机的端口限速

2009年4月21日 没有评论

最近在电信idc的宽频流量有点涨,所以想把一些非关键应用的流量通过端口限速限制一下。
限速的这台交换机是S5024G,其实大部分华为交换机都通用,只是细粒度不一样用得时候 ? 看看单位值就行。

操作步骤:
进入交换机console

<S5024G-1>system-view
Enter system view, return to user view with Ctrl+Z.
[S5024G-1]interface GigabitEthernet0/2
[S5024G-1-GigabitEthernet0/2]line-rate ?
INTEGER<1-1000> Target rate(Mbps)

这里line-rate单位是Mbps,直接输入数字1-1000就代表1Mbps-1000Mbps,我们限制为50Mbps。

[S5024G-1-GigabitEthernet0/2]line-rate 50

这里要注意 line-rate 只能对交换机端口的出流量进行限速。
如果要对端口入流量限速的话就必须要用traffic-limit方式,使用traffic-limit则必须要用acl匹配。

[S5024G-1]acl number 4000
[S5024G-1-acl-link-4000]rule permit ingress any egress any

然后再在端口里面添加traffic-limit,这里对入方向限速50Mbps

[S5024G-1-GigabitEthernet0/2]traffic-limit inbound link-group 4000 50 exceed drop

这样就ok了。

一次netapp2050机头故障的修复经历

2009年4月3日 1 条评论

今天吃饭前,上网管机,惊现存储监控的页面上面闪红灯,紧急赶往机房一看,一台netapp2050的机头a处于关机状态,于是连机头b查看,机头b的cf status状态是FAS2050B has taken over FAS2050A. 目前存储处于机头b接管状态。

于是又输了几条命令查看了下机头b的状态,当输入stats show 之后,没有出现命令行,ctrl+c也无法退出到命令行,断开终端重连输入用户名和密码后还是处于无命令行状态,顿时抓狂。

联系了下售后,决定先找机头a当机原因,起出机头a,由于机头a处于Waiting for giveback状态(ctrl+c重启后autoboot还是这样),无命令行,web也无法进去,直接用nfs连也无法通过。

到此为止,基本情况就是这样,机头a处于Waiting for giveback等待状态,需要机头b进行giveback才能回到正常工作状态,但是进行这个操作必须在机头b进行命令操作,但是机头b无论串口还是telnet都无法出现命令行。
:???:
抓狂了一阵后,忽然想到rsh可以直接写命令进去,试了下
rsh 10.10.1.1 -l root:root rdfile /etc/log/messages

果然有戏,把机头a的日志给读了出来了,一看原来nvram的电池检测到问题,自动关机了
Thu Apr 2 20:00:27 CST [FAS2050A: kern.shutdown:notice]: System shut down because : “NVRAM BATTERY FAILURE”.

把日志发给售后,netapp那边一开始说发配件换电池把,后来又打电话说无法判断是电池还是充电模块问题,干脆换机头把。 :shock: …说等会给我确定送货时间,我一琢磨下一工作日岂不是要4天后才能搞定了 :evil:
等了一会,售后又打电话过来说netapp那边分析下来应该属于固件版本太低的问题,这个版本固件可能有点bug,电池是应该好的,让我直接giveback。 :???:

没办法客服的话总是要听的,rsh 10.10.1.2 -l root:root cf giveback 结果提示
Partner not waiting for giveback, giveback cancelled.
To do a giveback without checking for partner readiness, please either set optio
n “cf.giveback.check.partner” to “off” before doing “cf giveback” again, or do ”
cf giveback -f”.

The first choice disables checking for all future “cf giveback”, until it’s turn
ed back to “on”. The second choice is good for this giveback only.

客服说我插拔过机头用cf giveback -f,咱照做,果然有反应了
在机头b上面cf status,目前状态是
FAS2050B has taken over FAS2050A, giveback in progress.
giveback is in module “snapmirror”, 118 of 131 modules.

一阵等待后,提示ready for giveback,终于真不容易。。。。
继续 cf giveback
哗啦啦一堆信息滚过之后终于
Cluster enabled,2个机头都up了

最后按照客服提示options autosupport.doit 2000669538 导出一份autosupport报告发了过去。
客服说下周安排过来升级固件。

流水账就此结束,幸亏发现的及时,没有造成什么后果,这次经历之后我乖乖的还是把autosupport邮件名单添加了一份我的手机邮地址,可怜每个星期天半夜要被骚扰一次了。

分类: 硬件相关 标签:

Cisco IOS HTTP Server多个跨站脚本漏洞

2009年1月16日 没有评论

用cisco的当心了赶紧检查下吧

发布日期:2009-01-14
更新日期:2009-01-15

受影响系统:
Cisco IOS 12.4
Cisco IOS 12.3
Cisco IOS 12.2
Cisco IOS 12.1
Cisco IOS 12.0
描述:
——————————————————————————–
BUGTRAQ ID: 33260
CVE(CAN) ID: CVE-2008-3821

Cisco IOS是思科网络设备所使用的互联网操作系统。

如果Cisco IOS中启用了HTTP Server的话,攻击者就可以通过向服务器端二进制程序/脚本提交无效参数执行跨站脚本攻击。这类攻击可能导致替换目标管理界面,或将保密信息重新定向到非授权的第三方,例如,可以通过XMLHttpRequest对象修改/level/15/exec/-/show/run/CR URL所返回的数据。此外攻击者还可以通过跨站请求伪造攻击执行管理操作,例如注入指向/level/15/configure/-/enable/secret/newpass的img标签会将enable口令更改为newpass。

< *来源:Adrian Pastor (m123303@richmond.ac.uk)
Richard J. Brain

链接:http://marc.info/?l=bugtraq&m=123195734420830&w=2

http://marc.info/?l=bugtraq&m=123195579017761&w=2

http://secunia.com/advisories/33461/

*>

测试方法:
——————————————————————————–

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://192.168.100.1/ping?

建议:
——————————————————————————–
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 如果设备上无需HTTP server,以配置模式使用以下命令禁用:

no ip http server
no ip http secure-server

* 如果需要HTTP server,控制可访问HTTP server的主机,对HTTP server应用访问控制列表:

ip http access-class {access-list-number | access-list-name}

以下示例仅允许可信任的主机访问Cisco IOS HTTP server:

ip access-list standard 20
permit 192.168.1.0 0.0.0.255
remark “Above is a trusted subnet”
remark “Add further trusted subnets or hosts below”

! (Note: all other access implicitly denied)
! (Apply the access-list to the http server)

ip http access-class 20

厂商补丁:

Cisco
—–
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.cisco.com/warp/public/707/advisory.html

分类: 硬件相关 标签: ,

netapp重复数据删除,vmware的绝配

2008年9月16日 没有评论

今天在新建设vmware平台的netapp存储上面尝试打开重复数据删除功能。
具体如何打开请看我另外一篇博文http://226617.cn/index.php/archives/170
环境是5台10g的linux虚拟机。占用空间50g,做了重复数据之后的结果
FAS2050A> df -sh
Filesystem used saved %saved
/vol/vola1/ 3052MB 47GB 94%

看完成之后只占用了3g空间,空出了47g。节约了达到94%的空间。这个数据真是恐怖啊

在打开的sis的时候还发现一个莫名奇妙的问题
FAS2050A> sis on /vol/vola1
Volume or maxfiles exceeded max allowed for SIS: /vol/vola1

一开始以为volume太大了,后来修改后发现还是这样提示,把另外一个机头的完全一样的volume试了下打开sis却完全没问题。
最后赶时间,把数据挪了下位置把整个volume重新建了下,就正常了。真是奇怪的问题。

NetAPP 重复数据删除快速配置

2008年9月10日 没有评论

1:添加license, license 是免费的 NetAPP 建议使用7.2.4 及以上版本
>license add
>license add
2:在需要删除重复数据的volume上面,开启重复数据删除功能
>sis on /vol/(volname)
如果要把已经存在的数据进行重复删除用(比较占cpu和磁盘读写,尽量在没有什么数据量的时候进行)
>sis start -s /vol/vola1
3:检查重复数据删除的情况
>sis status /vol/(volname)
当过程结束只有,通过df来检查volume占用空间的变化
>df -s /vol/(volname)
4:配置重复数据删除的schedule
>sis config /vol/(volname)
注:
1: SnapMirror : SIS + SM, 一般都是先做Deduplication,再做SnapMirror
2: 在VMware 的环境下面,重复数据删除能够起到很大的作用

分类: 硬件相关 标签: