ZFS로 구성한 볼륨을 iSCSI로 Targetting하고 다른 Clinet에서 iSCSI Initiator로 접근, 마운트하여 단순 테스트를 하는데 10GbE iSCSI로 구성된 네트웍속도가 제대로 나오지 않는듯해서 이렇게 글을 올려봅니다.
환경 구성정보
- ZFS Appliance: XigmaNAS 11.2.0.4
- Client: CentOS 6.10 (iscsi-initiator-utils-6.2.0.873-27.0.3.el6_9.x86_64)
- ZFS Disk: 2TB SAS 3.5" 7K x 5개로 ZFS Stripping (w/o cache, log)
- 10GbE NIC: (ZFS Server) Chelsio T520-LL-CR, (Client) Intel 10G AF, MikroTik CRS317
XigmaNAS의 10GbE 관련 주요 Network parameters
kern.ipc.maxsockbuf=33554432
net.inet.tcp.recvbuf_inc=524288
net.inet.tcp.recvbuf_max=33554432
net.inet.tcp.recvspace=4194304
net.inet.tcp.sendbuf_inc=524288
net.inet.tcp.senduf_max=33554432
net.inet.tcp.sendspace=4194304
(Client인 CentOS 6.10의 관련 네트웍 파라메터도 유사하게 설정됨)
Client에서 ZFS 연동
iSCSI Initiator로 연동하여 EXT4로 포맷하고 마운트 처리. 즉,
mkfs -t ext4 -b 4096 /dev/mapper/330000000c59dbf35
mount -t ext4 /dev/mapper/330000000c59dbf35 /disk11
테스트 결과 #1 (Clinet에서 iSCSI 스토리지의 DD테스트)
Disk Write에 대해서 테스트 수행한 결과이며, bs값을 변경하여 테스트 진행한 결과이며, 이 시점에서 10GbE Network의 대역폭을 모니터링한 화면입니다.
[root@svms4 disk11]# dd if=/dev/zero of=/disk11/ddfile bs=64k count=100k
102400+0 records in
102400+0 records out
6710886400 bytes (6.7 GB) copied, 65.805 s, 102 MB/s
[root@svms4 disk11]# dd if=/dev/zero of=/disk11/ddfile2 bs=128k count=100k
102400+0 records in
102400+0 records out
13421772800 bytes (13 GB) copied, 130.645 s, 103 MB/s
테스트 결과 #2 (ZFS Local에서 ZFS Pool에 대한 DD테스트)
참고로 이 상황에서 ZFS Local에서 ZFS Pool인 hpool1에 대해서 DD 테스트한 결과는 아래와 같이 대단한 처리량을 보여주고 있습니다.
snas9: hpool1# dd if=/dev/zero of=/mnt/hpool1/ddfile bs=64k count=100k
102400+0 records in
102400+0 records out
6710886400 bytes transferred in 5.935975 secs (1130544904 bytes/sec)
snas9: hpool1#
snas9: hpool1# dd if=/dev/zero of=/mnt/hpool1/ddfile2 bs=128k count=100k
102400+0 records in
102400+0 records out
13421772800 bytes transferred in 10.619236 secs (1263911337 bytes/sec)
결론적으로 궁금한 점은
왜 10GbE의 속도가 100MB/s 이상을 넘지 못하는가입니다. 아무리 못해도 500MB/s 전후로 나와줘야 할듯 한데요.
실제로 Samsung 850 Pro NVME PCIE 인터페이스 2개를 ZFS Stripping으로 묶어서 테스트해도 네트웍 속도는 별반 차이가 없더라구요.
¸®´ª½º À§¿¡¼ ZFS Å×½ºÆ® ÇÏ¿´À»¶© ±×´ÙÁö ÁÁÁö ¾Ê¾Ò½À´Ï´Ù..
http://2cpu.co.kr/bbs/new_view.php?bo_table=lec&wr_id=2862&qstr=
µµ¿ò µÇ½Å´Ù¸é ÁÁ°Ú³×¿ë
±×¸®°í Áö±Ý È®ÀÎÇÏ°íÀÚ ÇÏ´Â ³»¿ëÀº ZFSÀÇ ¹®Á¦°¡ ¾Æ´Ï¶ó Clientµé(Linux, Windows, ±âŸ µîµî)ÀÌ iSCSI¸¦ ÀÌ¿ëÇÏ¿© ZFS Storage¸¦ °¡Á®´Ù°¡ ¾µ °æ¿ì Disk WriteÀÇ ¼Óµµ°¡ ³ª¿ÀÁö ¾Ê¾Æ¼, ±×¸®°í ±× ¹®Á¦°¡ iSCSIÀÇ ¹®Á¦ÀεíÇÏ°í... ÀÌ¿¡ ´ëÇؼ ¾î·Á¿òÀ» °Þ°í ÀÖ¾î¿ä.
Àú±â ½º¼¦µéÀÌ iscsi³ª nfs·Î ºÙ¿©¼ Å×½ºÆ® ÇÑ°Ì´Ï´Ù..
esxi¿¡ ºÙ¿©¼ °¡»ó¸Ó½Å ¸¸µé°í ±× ¾È¿¡¼ ¼Óµµ ÃøÁ¤ÇÑ°Å¿¡¿ë..
nas4free Á¦¾à»çÇ×? °°Àº°Ô ¾Æ´Ò±î¿ë..
[root@svms4 disk11]# iperf3 -c192.168.20.9 -i1 b10G -t10
Connecting to host 192.168.20.9, port 5201
[ 4] local 192.168.20.4 port 42050 connected to 192.168.20.9 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 1.06 GBytes 9.06 Gbits/sec 0 734 KBytes
[ 4] 1.00-2.00 sec 1.06 GBytes 9.13 Gbits/sec 0 813 KBytes
[ 4] 2.00-3.00 sec 1.15 GBytes 9.90 Gbits/sec 0 918 KBytes
[ 4] 3.00-4.00 sec 1.15 GBytes 9.90 Gbits/sec 0 1022 KBytes
[ 4] 4.00-5.00 sec 1.15 GBytes 9.90 Gbits/sec 0 1.12 MBytes
[ 4] 5.00-6.00 sec 1.15 GBytes 9.90 Gbits/sec 0 1.31 MBytes
[ 4] 6.00-7.00 sec 1.15 GBytes 9.91 Gbits/sec 0 1.46 MBytes
[ 4] 7.00-8.00 sec 1.15 GBytes 9.90 Gbits/sec 0 1.46 MBytes
[ 4] 8.00-9.00 sec 1.15 GBytes 9.91 Gbits/sec 0 1.46 MBytes
[ 4] 9.00-10.00 sec 1.15 GBytes 9.90 Gbits/sec 0 1.46 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 11.3 GBytes 9.74 Gbits/sec 0 sender
[ 4] 0.00-10.00 sec 11.3 GBytes 9.74 Gbits/sec receiver
iperf Done.
1. iSCSI TargetÀº ¼¹ö´Ü¿¡¼ CacheingÀ» ÇÏÁö ¾Ê½À´Ï´Ù.
2. µ¥ÀÌÅÍ cacheingÀ» ÇÏÁö ÇÏÁö ¾Ê±â ¶§¹®¿¡ targetÀÌ data¸¦ writeÇÒ¶§ ¹Ù·Î device¿¡ write¸¦ ÇؾßÇÕ´Ï´Ù.
3. iSCSI targetÀÌ storage device·Î »ç¿ëÇϴµ¥´Â 1. Memory, 2. Disk Device, 3. File Device
4. NAS4Free (´ëºÎºÐÀÇ NAS)¿¡¼´Â 3¹ø File Device¸¦ »ç¿ëÇϴµ¥ iSCSI´Â ÀÌ File Device¸¦ DISK DeviceÀÎ°Í Ã³·³ emulationÀ» ÇÕ´Ï´Ù. ¿©±â¼ 20-30%ÀÇ ¼º´É °¨¼Ò°¡ ÀϾ´Ï´Ù. (Target to DISK¿¡¼)
¶ÇÇÑ File DeviceÀÓ¿¡µµ CachingÀ» ¸øÇϱ⠶§¹®¿¡ ´Ù½Ã 20%ÀÌ»óÀÇ ¼º´É °¨¼Ò°¡ ÀϾ´Ï´Ù. (Target to DISK¿¡¼)
5. Linux¿¡¼ ZFS¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ZFS Kernel ModuleÀ» »ç¿ëÇÏ´Â ¹æ¹ý°ú ZFS on FUSE ¹æ½ÄÀÌ ÀÖ½À´Ï´Ù.
¼³Ä¡ÇϽŠZFS´Â ZFS on FUSEÀÔ´Ï´Ù.
6. Áï, iSCSI°¡ ÀÌ¹Ì FileÀ» DISK Device·Î emulationÀ» Çϴµ¥ ±× FileÀÌ Native File Systemµµ ¾Æ´Ï°í FUSE File SystemÀÔ´Ï´Ù. ¿©±â¼ ´Ù½ÃÇѹø emulation°ú file data¿¡ ´ëÇÑ memory copy°¡ ÀϾ´Ï´Ù.
7. ZFS on FUSE°¡ ´À¸° ÀÌÀ¯Áß¿¡ Çϳª°¡ COW (Copy on Write)¸¦ º¸ÀåÇØ¾ß Çϱ⠶§¹®¿¡ FUSE¿¡¼ Á¦°øÇÏ´Â cache ±â´ÉÀ» ÀüÇô »ç¿ëÇÒ ¼ö ¾ø´Â°Ì´Ï´Ù.
À§ ³»¿ëµé ´Ù ´õÇϸé Linux ±â¹ÝÀÇ iscsi on zfs °¡ ¿Ö ´À¸±Áö ¾Ë ¼ö ÀÖ½À´Ï´Ù.
¶ÇÇÑ ÀÏ¹Ý iscsi targetº¸´Ù CPUµµ ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù.
±×·¯³ª Àú°¡ ¼³¸íÀÌ ºÎÁ·ÇÑ °ÍÀÎÁö, ȤÀº ÀÌÇØ ºÎÁ·ÀÎÁö ¸ð¸£Áö¸¸ ³»¿ëÀº ´Ù½Ã ÇÑ ¹ø Á¤¸®¸¦ ÇØ¾ß ÇÒ µí ÇÕ´Ï´Ù.
1) NAS4Free¿¡¼´Â iSCSIÀÇ TargetÀ» ¼³Á¤½Ã ZFSÀÇ VolumeÀ» Extent·Î ¼³Á¤ÇÏ°í, iSCSIÀÇ TargetÀº 'Disk' ŸÀÔÀ¸·Î Extent¿¡¼ ÀâÀº Storage¸¦ LUN¿¡ ¸ÅÇÎÇÏÁö¿ä. ¾Æ¸¶µµ À̶§ 'Disk' ŸÀÔ ºÎºÐÀÌ ¼±»ý´ÔÀÌ ¼º´É Ç϶ôÀÌ ¹ß»ýÇÑ´Ù°í ¾ð±ÞÇϽŠFile device¸¦ Disk device·Î emulationÇÏ´Â °ÍÀÌ ¾Æ´Ñ°¡ ½Í½À´Ï´Ù.
2) ¾Õ¼ ¾ð±ÞÇÑ CentOS´Â ´ÜÁö iSCSI Initiator¸¦ ÀÌ¿ëÇÏ¿© NAS4Free¿¡¼ »ý¼ºÇÑ Storage ÀÚ¿øÀ» »ç¿ëÇϱâ À§ÇÑ Client¿¡ ºÒ°¡ÇÕ´Ï´Ù. LinuxÀÎ CentOS¿¡¼ ZFS¸¦ ±¸¼ºÇÏ´Â °ÍÀº ¾Æ´Ï±â¿¡ 'ZFS on FUSE' ȤÀº 'ZFS on Linux'´Â ¾Æ´Õ´Ï´Ù. Àú ¶ÇÇÑ Linux¿¡¼ ZFS¸¦ »ç¿ëÇÒ »ý°¢Àº ÀüÇô ¾ø½À´Ï´Ù.
3) ±íÁö ¾ÊÀº Å×½ºÆ®¿¡ ±âÀÎÇÒ ¼öµµ ÀÖ°ÚÀ¸³ª Å×½ºÆ® °á°ú¸¸À» ³õ°í º¸¸é 10GbE ³×Æ®¿÷¿¡¼ µ¥ÀÌÅÍ Àü¼Û ´ë¿ªÀÌ ¾à 100MB/s¿¡¼ º´¸ñÀÎµí º¸ÀÔ´Ï´Ù. ÀÌ´Â ZFS Pool¿¡¼ Á÷Á¢ DD·Î ¼öÇàÇÑ °á°ú¿Í ºñ±³Çغ¸¸é ¾Æ¹«¸® Disk Cache ºÒ°¡·Î ÀÎÇÑ ¼º´É ÀúÇϸ¦ °í·ÁÇÏ´õ¶óµµ ¸»ÀÔ´Ï´Ù (Âü°í·Î ClientÀÎ Linux¿¡¼ dd ¼öÇà½Ã 'oflag=direct' ¿É¼ÇÀ» ÁÖÁö ¾Ê°í ClientÀÇ ¸Þ¸ð¸® ij½¬¸¦ »ç¿ëÇϵµ·Ï ÇÏ¿© º¸´Ù ºü¸£°Ô WritingÇßÀ½¿¡µµ ºÒ±¸ÇÏ°í..)
4) ¼±»ý´Ô ¸»´ë·Î¶ó¸é Disk Writing Ãø¸é¿¡¼¸¸ °í·ÁÇØ º¼ °æ¿ì¿¡ SANÀ̳ª RAID·Î ±¸¼ºÇÑ DAS Çüź¸´Ù iSCSIÀÇ ÀåÁ¡Àº ¾ø´Â °ÍÀÌ µÇ´Â°É±î¿ä?
Initiator ´Ü¿¡¼ ZFS¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸½Ç °èȹÀ롂 Àß ¾Ë°Ú½À´Ï´Ù.
ÃßõÇÏ´Â ¹æ½ÄÀº ¾Æ´ÏÁö¸¸ NAS4Free¿¡¼ ZFS¸¦ Kernel Module·Î Çغ¸½Ã´Â°Íµµ °¡´ÉÇÕ´Ï´Ù.
±×·¡¾ß ¾îµð°¡ ¹®Á¦ÀÎÁö Á»´õ ¹¹À§¸¦ ÁÙÀ» ¼ö ÀÖÀ»°Í °°½À´Ï´Ù
4) ¼º´É Ãø¸éÀ¸·Î¸¸ º¸¸é ´ç¿¬È÷ SANÀ̳ª DAS°¡ ´õ ÁÁ°ÚÁÒ. ¹°·Ð SANµµ SAN ³ª¸§ÀÌ°ÚÁö¸¸ º¸Åë iSCSIº¸´Ù´Â ´õ ÁÁ´Ù°í º¸½Ã´Â°Ô ¸Â½À´Ï´Ù.
ZFS on FUSE°¡ ¾Æ´Ï¶ó ZFS.ko kernel moduleÀ» »ç¿ëÇÏ¸é µË´Ï´Ù.
bandwidth¾ß Å« Â÷ÀÌ°¡ ¾ø°ÚÁö¸¸ random IO³ª ÀÛÀº IO (4K ¹Ì¸¸)Àº Å« Â÷ÀÌ°¡ ³³´Ï´Ù.
¹°·Ð ³ªÁß¿¡ kernel upgradeµîÀ» Çϸé Á¦¾ÓÀÌ ¹ß»ý ÇÒ ¼ö ÀÖ¾î¼ ´ëºÎºÐÀÇ NASµéÀÌ »ç¿ëÇÏÁö ¾Ê´Â°Ì´Ï´Ù.