Tag: Windows

SMB 3.0 over RDMA 性能测试

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/smb3-over-rdma-performance/ Windows Server 2012 (之前的名字就是 Windows Server 8)即将到来,近日看到原来 Windows Server 8 中新增的 SMB 2.2 文件共享协议也有了新的官方名称:SMB 3.0,看看这个介绍说明: http://blogs.technet.com/b/windowsserver/archive/2012/04/19/smb-2-2-is-now-smb-3-0.aspx SMB 3.0 相对于 Windows Server 2003 以及以前的操作系统中的 SMB 1.0 协议增加了很多新的特性: 精简 SMB 1.0 中繁多的命令,减少 ACK 提高效率; 支持流水线机制,可以在上一个 SMB 命令未完成之前发新的命令; 支持符号链接,支持更大的文件块大小提高大块文件读写的性能; 更好的 oplock 机制; 更像真正的文件系统,原来不能安装在 SMB 共享中的程序(例如:SQL Server)也可以使用了; 支持通过 RDMA(Remote Direct Memory Access) 远程直接访问数据提高在 Infiniband 等环境下的性能; 多通道支持,通过多网络通道提高性能,而且支持错误容忍和集群。 刚好旁边有两张 Mellanox 的 Infiniband 卡,顺便就来看看 SMB 3.0 over RDMA 的实际读写性能怎么样咯。由于 SMB 3.0 只有 Windows Server 8 或者 Windows Server 2012 才支持,因此用 Windows Server 8 的测试 ISO 安装并拷贝了一份系统(服务器和客户端都必须支持 SMB 3.0)。 测试环境: 服务器: Intel S5500BC 服务器主板; Intel Xeon E5506 CPU * 1; Kingston DDR3 1066 4G 服务器内存 * 1; Mellanox MHQH29B ConnectX®-2 系列 32Gbps Infiniband 卡(PCI-E x 8 插槽); Adaptec RAID 51645 PCIe SAS RAID卡; WD WD10EVDS 1TB SATA 监控硬盘 * 16; Windows Server 8 Beta Datacenter Build 8250 64位中文版; IPoIP 网卡 IP 地址:192.168.3.196(MTU:4092) 客户端: TYAN S7002 服务器主板; Intel Xeon E5506 CPU * 1; Kingston DDR3 1066 2G 服务器内存 * 1; Mellanox MHQH19B ConnectX®-2 系列 32Gbps Infiniband 卡(PCI-E x 16 插槽); Windows Server 8 Beta Datacenter Build 8250 64位中文版; IPoIP 网卡 IP 地址:192.168.3.172(MTU:4092) 其它环境: 由于没有 Infiniband 交换机,故测试时服务器和客户端的 Infiniband 卡通过 Mellanox MCC4Q30C-003 QSFP 线缆直连,而且客户端的 Infiniband 卡只有一个接口,所以也只测试了单口的性能,没有测试 SMB 3.0 多通道下的性能。 测试软件: IBM Tivoli SANergy(测试大块文件连续读写); Iometer(测试大块文件并发读写); NetPIPE(测试 IPoIB (IP over Infiniband) 的纯粹网络性能); Mellanox 驱动程序中的 IB Tools(启动 SM 并测试纯粹 Infiniband 性能) 测试步骤及结果: 1、在服务器和客户端分别安装 Mellanox Infiniband 卡最新的驱动程序: 虽然 Windows Server 8 中已经自动 Mellanox Infiniband 的驱动,但为了更新 firmware 并能使用上软件 SM(没 Infiniband 交换机滴说 -_-#),必须更新官方的驱动,到下面的网址下载新驱动: http://www.mellanox.com/content/pages.php?pg=products_dyn&product_family=129&menu_section=34 安装 Mellanox OFED for Windows Server 2012,建议安装时按照下面的提示更新卡的 firmware 以免带来不必要的问题: 安装完成之后重启服务器和客户端,你会发现 “网络连接” 里已经有了 Mellanox 的 IPoIB 网卡,但是是 “未连接” 的状态,因为 Infiniband 网络里还没有配置 SM(Subnet Manager)。 先来简单了解下 Infiniband 的 Subnet Manager: Infiniband(IB) 网络中需要使用 Subnet Manager(SM)来初始化 IB 硬件并允许其在 IB 架构中通信。每个 IB 子网必须有至少一个 SM,并且每个 SM 在 IB 架构中要有清楚的 ID。IB 架构就包含已经定义好的子网。IB 交换机和 IB 卡一样有自己的 GUID,主机适配卡(HCA)的端口被称为 port GUID,当一个 HCA 或者它的端口需要与子网中的另一个进行通信就需要分配网络地址,这些网络地址被称为 LID,而 IB 中的 SM 就负责为子网中的成员分配 LID,LID 只是对子网而言的,而 GUID 则是对整个 IB 架构中所有子网相同的。 IB 交换机一般就可以充当 SM 的角色,对于我这没有 IB 交换机的环境,幸好咱们还是有穷人的方法的,使用免费的 OpenSM 软件可以让两个机器中的任意一台做软件 SM。 […]

Windows Server 8 ReFS 测试初探

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/windows-server-8-refs-basic-test/ 微软最新的 Windows Server 8(现在已改名为 Windows Server 2012,坑爹的命名,汗下)中支持了微软引入的新文件系统 ReFS 用于替换存在了 N 年了的 NTFS 文件系统。大家可能依稀还记得当前 Longhorn(其实就是后来的 Vista 操作系统的开发代号) 操作系统发布时传闻要引入的新文件系统 WinFS 被阉割的消息,到了 2012 年终于推出了新文件系统 ReFS。 ReFS 全名为 Resilient File System(弹性文件系统),按照微软官方的说明,ReFS 相对 NTFS 主要的改进有: 1、改进磁盘上的数据结构,ReFS 也跟着主流文件系统的脚步使用 B+ 树来存储元数据和实际数据了,文件大小、卷大小等的限制也还是 64 位,元数据和实际数据被以类似关系数据库形式的表组织起来,文件名和路径长度的限制也扩大为 32KB 的 Unicode 字符串; 2、元数据增加校验和,增强数据的验证和自动更正处理,支持 COW 实现可靠磁盘数据更新; 3、扩大卷大小、文件大小、文件夹大小; 4、数据条带提高性能,并支持错误容忍; 5、可以在不同的计算机间共享存储池以增强容错性和负载平衡; 6、也是非常重要的,对 NTFS API 及使用方式上的很大程度上的兼容,包括 ACL、符号链接、挂载点、oplock 等,但也有一些 NTFS 的特性例如 文件压缩、硬链接、用户磁盘配额 等没有被支持。 有关 ReFS 的详细原理及说明请参考这个 MSDN 的 blog: http://blogs.msdn.com/b/b8/archive/2012/01/16/building-the-next-generation-file-system-for-windows-refs.aspx 需要注意的是 Windows 7 及之前的系统都不支持 ReFS,而且 Windows 8 似乎也只有服务器版本才支持。借着前几天下载安装的 Windows Server 8 测试版本系统笔者就先简单测试下 ReFS 相对 NTFS 的性能,由于我这实际应用时以顺序读写为主,先做顺序读写性能对比。 测试环境: Intel S5500BC 服务器主板; Intel Xeon 5506 CPU * 1; Kingston DDR3 1066 4G 服务器内存 * 1; Adaptec RAID 51645 PCIe SAS RAID卡; WD WD10EVDS 1TB SATA 监控硬盘 * 16; Windows Server 8 Beta Datacenter Build 8250 64位中文版; Iometer 1.1.0-rc1 Windows 64位版本 16 个 1TB 的 SATA 盘建 RAID0,RAID0 的块值为 256KB,并启用 read 和 write cache。然后在 Windows Server 8 中的磁盘阵列设备上分别建 2TB 大小的简单卷,格式化为 NTFS 和 ReFS,分别测试其连续读写性能。 在磁盘管理里新建分区格式化时就可以看到 ReFS 的选项: 测试结果: 测试项目 ReFS(MB/s) NTFS(MB/s) 64KB 连续写 192.85 225.02 64KB 连续读 230.79 227.82 256KB 连续写 388.94 417.79 256KB 连续读 495.48 548.49 1MB 连续写 690.77 738.42 1MB 连续读 965.39 821.82 4MB 连续写 860.45 858.28 4MB 连续读 1129.54 1092.30 从测试结果可以看到,ReFS 相对 NTFS 来说在小一些的块值的连续读写上并没有什么优势,而在 RAID0 的整个 stripe 条带大小(256KB * 16 = 4MB)的读写性能上则确实比 NTFS 有一点改进。 另外说下 ReFS 暂时的不足之处: 1、Windows 8 虽然已经支持 ReFS,但并没有 NTFS 和 ReFS 之间转换的工具,你如果需要从 NTFS 切换到 ReFS,暂时只能手工中转拷贝了; 2、不支持从 ReFS 引导启动系统; 3、可移动磁盘或者 U 盘之类的设备不能使用 ReFS; 4、不支持文件压缩和用户磁盘配额,虽然这两个用的可能不是非常多,但还是有点不可想象; 5、NTFS 中原来支持的扩展属性 ReFS 也不再支持,有一些软件会依赖这个,感觉会有些不便。 总之现在看起来微软新引入的 ReFS 并没有像 ZFS 那样的新文件系统(支持 RAID-Z、原生快照、128位文件系统等特性)那样吸引人,如果要吸引用户转移到 ReFS 感觉还是任重道远,不知道 Windows Server 2012 最终版本中的 ReFS 到底有何改善。 本文章中介绍的只是测试了连续读写的性能,ReFS 重点支持的容错等功能下次有机会时再来测试,文中有任何问题欢迎指正咯。 ^_^

rsync在 Linux/cygwin/msys 环境下的备份性能对比

本文博客链接:https://zohead.com/archives/rsync-performance-linux-cygwin-msys/ rsync是一个开源免费的文件同步和备份工具,可用于本地备份,本地与远程服务器之间的备份,可以实现增量和差异备份,而且由于比较好的算法,在文件备份速度上也相对其它一些文件备份工具有明显的优势。 但 rsync 一直以来没有 Windows 下的原生客户端,都是基于 cygwin 环境实现,实际备份性能会受一些影响,近日看到 rsync 的 基于 MSYS 的 Win32 原生客户端已经被 port 出来,故简单做下性能对比测试。 测试环境: rsync服务器为 RHEL5 Linux 64bit,8个SATA盘的RAID0做下层存储,采用单千兆网络和千兆交换机 rsync客户端为:RHEL5 Linux 64bit,Windows 2003 Enterprise 32bit 测试时 rsync 均通过匿名方式访问,不经过SSH做用户验证,由于考虑到测试的 rsync 客户端的系统盘速度有瓶颈,客户端文件读写都通过内存文件系统来实现(Linux 上使用 tmpfs,Windows 上使用 ImDisk 模拟内存盘)。 使用同样的客户端主板分别在 Linux 和 Windows 内存中产生 1.5GB 的测试文件,然后通过 rsync 客户端进行备份到服务器(写操作)和从服务器上恢复(读操作)的操作。 备份命令示例: rsync -hv x.dat 192.168.1.125::rsync0/ 测试软件列表: 标准 Linux rsync 客户端(RHEL 5 系统自带) cygwin rsync 客户端 MSYS rsync 客户端 http://sourceforge.net/projects/mingw/files/MSYS/Extension/rsync/ RsyncWin32 客户端 http://sourceforge.net/projects/rsyncwin32/ 测试结果:   测试软件 写性能(MB/s) 读性能(MB/s) Linux rsync 105.27 105.28 cygwin rsync 76.22 64.49 MSYS rsync 7.98 8.14 RsyncWin32 76.72(出现错误) 38.50(出现错误) 从测试结果看,由于 rsync 本身面向类 Linux 环境开发,在 Linux 系统中有着非常好的性能,cygwin rsync 与 Linux 相比有一定差距,但实际使用中还是比较稳定的,而 MSYS rsync 还处于测试阶段,虽然没有出现备份错误,但在千兆网络环境下性能非常差,RsyncWin32 则相对而言问题比较多,备份过程中甚至会出现备份错误。 综上看来,目前在 Windows 上使用 cygwin rsync 做备份客户端仍然算是比较好的解决方案,MSYS rsync 的问题可以啥时候有空再看看咯。