Noah Watkins

github
twitter
linkedin

Setting up iSER-enabled TGT RAM disk

In this post we’ll create a network-backed tmpfs by constructing a RAID-0 array of remote RAM disks using TGT and iSCSI. We’ll export two 25 GB remote RAM disks from a remote note, and use mdadm to create a local RAID device. Then we’ll format them with ext4 and disable journaling for a fast in-memory file system.

On the target (server):

# ramdisk 1
mkdir /tmp/rd1
mount -t tmpfs -o size=25G tmpfs /tmp/rd1
dd if=/dev/zero of=/tmp/rd1/lun bs=1M

# ramdisk 2
mkdir /tmp/rd2
mount -t tmpfs -o size=25G tmpfs /tmp/rd2
dd if=/dev/zero of=/tmp/rd2/lun bs=1M

# target 1
tgtadm --lld iser --op new --mode target --tid 1 -T iqn.2015-01.cln5.rd1
tgtadm --lld iser --op bind --mode target --tid 1 -I ALL
tgtadm --lld iser --op new --mode logicalunit --tid 1 --lun 1 --backing-store /tmp/rd1/lun

# target 2
tgtadm --lld iser --op new --mode target --tid 2 -T iqn.2015-01.cln5.rd2
tgtadm --lld iser --op bind --mode target --tid 2 -I ALL
tgtadm --lld iser --op new --mode logicalunit --tid 2 --lun 1 --backing-store /tmp/rd2/lun

On the client (initiator) connect to the devices using a tool such as iscsiadm. Then create the RAID array and file system:

# create the raid array
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

# setup the file system
mkfs.ext4 -b 4096 -O ^has_journal /dev/md0

And there you have it.

30bd762cd913e5b33d66499bed483624ef44ed89