NVMe over Fabrics - TCPvel

nem tudom hany ember jatszik ilyennel, de az 5.0-as kerneltol mar elerheto sima TCP felett is az implementacio; en 5.1-rc7en teszteltem; leirom ide hogy konnyebb dolga legyen mindenkinek a jovoben. ha lesz idom nezek majd egy TCP vs RDMA tesztet, de nem igerem.

a szerver oldal, ahonnan exportalni akarjuk az eszkozt; az IP es PORT valtozokat valasszuk ertelemszeruen.


modprobe nvmet-tcp
cd /sys/kernel/config/nvmet/subsystems
mkdir nqn.2019-04.io.zc2:cnode
cd nqn.2019-04.io.zc2\:cnode/
echo 1 > attr_allow_any_host
mkdir namespaces/1
cd namespaces/1
echo -n /dev/nvme1n1 > device_path
echo 1 > enable
cd /sys/kernel/config/nvmet/ports/
mkdir $PORT
cd $PORT
echo $IP > addr_traddr
echo tcp > addr_trtype
echo $PORT > addr_trsvcid
echo ipv4 > addr_adrfam
ln -s /sys/kernel/config/nvmet/subsystems/nqn.2019-04.io.zc2\:cnode /sys/kernel/config/nvmet/ports/4420/subsystems/nqn.2019-04.io.zc2\:cnode

voila:


[ 1105.029169] nvmet_tcp: enabling port $PORT ($IP:$PORT)
[ 1274.142307] nvmet: creating controller 1 for subsystem nqn.2014-08.org.nvmexpress.discovery for NQN nqn.2014-08.org.nvmexpress:uuid:f2aaa18c-a12b-4b52-8f1f-ae3ce12ade0c.
[ 1329.420670] nvmet: creating controller 1 for subsystem nqn.2019-04.io.zc2:cnode for NQN nqn.2014-08.org.nvmexpress:uuid:f2aaa18c-a12b-4b52-8f1f-ae3ce12ade0c.

a kliens (a legujabb nvme-clit forditottam innen: https://github.com/linux-nvme/nvme-cli)


modprobe nvme-tcp
./nvme discover -t tcp -a $IP -s $PORT
./nvme connect -t tcp -n nqn.2019-04.io.zc2:cnode -a $IP -s $PORT

voila:


[ 1566.187514] nvme nvme0: ANA group 1: optimized.
[ 1566.187663] nvme nvme0: creating 8 I/O queues.
[ 1566.195998] nvme nvme0: new ctrl: NQN "nqn.2019-04.io.zc2:cnode", addr $IP:$PORT

root@nvmeoftest:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0      11:0    1   436K  0 rom
vda     252:0    0    15G  0 disk
├─vda1  252:1    0  14.9G  0 part /
├─vda14 252:14   0     4M  0 part
└─vda15 252:15   0   106M  0 part /boot/efi
nvme0n1 259:1    0 953.9G  0 disk
root@nvmeoftest:~#

a mellanox oldalan van leiras csak nagyon hosszura veszik, nekem meg kellett egy copy-pastelheto valtozat, ime :)

Hozzászólások

iSCSI-hoz kepest miben jobb? (ha mar mindketto TCP)

Mellanoxnak van 5.x kernellel kompatibilis drivere (múltkor kerestem, de nem találtam)?
Vagy a kernelben lévőt használtad?
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Az lejött, hogy TCP, csak kíváncsi voltam, hogy attól még a Mellanox kártyát támogatott driverrel hajtod e meg, vagy a Linux kernelbe építettel.
Amúgy mint ha a Linux kernel fában lévő driver is támogatna RDMA-t, igaz csak alap szinten..
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..

Jöhet benchmark ha van rá időd :) Esetleg egy egyszerű fio-val vagy dd-vel meg tudnád nézni, hogy mekkora difi van a local block device (szerver oldal), és a kliens nvme-tcp device között?

Ügyes. iSCSI targetet többször gyártottam, legutóbb tgt-vel.
AoE-t is (ATA over ethernet) gyorsan összedobható, L2 felett megy, egyklienses.
Ideje NVMe over TCP/IP-vel is elkezdeni játszani, megnézni a korlátjait.

Az NVMe látom jobb performanciát ad. Az iSCSI-hoz hasonlóan több kliens egyidejű kapcsolódását engedi?