可以安全写入 3GB:

可以安全写入 3GB:

我有两台 SuperMicro 服务器,通过两个 10 GBit Intel X540-T2 NIC 直接连接(无交换机)。一台服务器运行 Citrix XenServer 6.2,另一台运行 Debian 7。

然后,我在 Debian 系统上安装了 open-iscsi 和 iscsitarget,配置了一个 12 GByte RAM 磁盘,将其作为 iSCSI 存储在 XenServer 上安装,并为在该 XenServer 上运行的其中一个 VM 提供了一个 12 GByte 虚拟磁盘。

事实证明我无法获得超过 290 MByte/s 的速度:

root@s1002:~# dd if=/dev/zero of=/dev/xvdb bs=16M
dd: writing `/dev/xvdb': No space left on device
737+0 records in
736+0 records out
12348030976 bytes (12 GB) copied, 42.6216 s, 290 MB/s
root@s1002:~# dd if=/dev/xvdb of=/dev/null bs=16M
736+0 records in
736+0 records out
12348030976 bytes (12 GB) copied, 46.0591 s, 268 MB/s

然后,我用商业存储重复了相同的测试,即使使用物理磁盘,也获得了大约 450 MByte/s 的传输速度。

当我使用带有 ramdisk 的 Linux 服务器时,我期望速度类似甚至更快,但似乎我的 iscsitarget 配置或网络配置不是最佳的。网络配置了巨型帧(ping -M do -s 8972 ipaddr在两端都进行了测试)。targetcli 设置几乎是默认配置:

/> ls
o- / ....................................................................................................................... [...]
  o- backstores ............................................................................................................ [...]
  | o- fileio ................................................................................................. [0 Storage Object]
  | o- iblock ................................................................................................. [0 Storage Object]
  | o- pscsi .................................................................................................. [0 Storage Object]
  | o- rd_dr .................................................................................................. [0 Storage Object]
  | o- rd_mcp ................................................................................................. [1 Storage Object]
  |   o- ramdisk ............................................................................................. [ramdisk activated]
  o- iscsi ........................................................................................................... [1 Targets]
  | o- iqn.2003-01.org.linux-iscsi.server85.x8664:sn.f63360d26dd2 ........................................................ [1 TPG]
  |   o- tpgt1 ......................................................................................................... [enabled]
  |     o- acls .......................................................................................................... [0 ACL]
  |     o- luns .......................................................................................................... [1 LUN]
  |     | o- lun0 ..................................................................................... [rd_mcp/ramdisk (ramdisk)]
  |     o- portals .................................................................................................... [1 Portal]
  |       o- 10.0.12.85:3260 ................................................................................................ [OK]
  o- loopback ......................................................................................................... [0 Target]
  o- tcm_fc ........................................................................................................... [0 Target]
/>

如何配置 iscsitarget 和/或 NIC 来提高网络性能,使其与商业存储相匹配?

答案1

首先,尽管它被称为 ramdisk,但它实际上可能使用的是旋转盘片。事实证明,如今有很多类型的 RamDisk,而 tmpfs 类型可以使用硬盘和 RAM。希望看到您对 12GB 旋转盘片文件备份存储的测试。速度可能相同。

其次,也许您正在写入磁盘末尾,写入的内容远超过 12GB。这是我的经验。与普通磁盘不同,dd(或更可能是内核)在到达 ramdisk 末尾时不会停止。通过附加 来设置 dd 写入内容的限制bs=1GB count=12

通过在 localhost 上使用 创建 4GiB RamDisk 后备存储来测试覆盖targetcli,并使用 启动与它的连接iscsiadm。然后使用 测试写入超过 4GB 的数据dd

# targetcli ls backstores/ramdisk/

o- ramdisk .................................................................................................... [存储对象:1]
o- RamDisk4GB ........................................................................................... [(4.0GiB) 已激活]

可以安全写入 3GB:

时间 dd if=/dev/zero of=/mnt/sddbs=1GB 数量=3#
3+0 条记录输入 3+0 条记录输出 3000000000 字节 (3.0 GB) 已复制,耗时 4.41983 秒,耗时 679 MB/s

real    0m6.692s
user    0m0.000s
sys     0m4.333s

但令人震惊的是,当将 5GB、6GB、8GB、16GB 甚至 32GB 写入仅 4GB 的空间时却没有出现任何错误:

时间 dd if=/dev/zero of=/mnt/sddbs=1GB 数量=16

16+0 records in
16+0 records out
16000000000 bytes (16 GB) copied, 36.671 s, 436 MB/s

real    0m38.301s
user    0m0.002s
sys     0m13.591s

直到尝试将 64GB 写入 4GB RamDisk 时才报告错误。错误似乎出现在我的 / 分区的大小(50G)附近。

时间 dd if=/dev/zero of=/mnt/sddbs=1GB 计数=64
日:错误写入'/mnt/sdd':设备上没有剩余空间
49+0 条记录输入
48+0 条记录输出
48838684672 字节 (49 GB) 已复制,耗时 122.821 秒,398 MB/s

real    2m4.682s
user    0m0.002s
sys     0m38.257s

希望Datera.io和或linux-iscsi.org会对此发出警告,并提供 tmpfs 或较新的 ramdisk 类型选项之一。我的设置是 CentOS7,所以我实际上使用了来自github.com/open-iscsi/

相关内容