# NVMf Target Configuration File # # Please write all parameters using ASCII. # The parameter must be quoted if it includes whitespace. # # Configuration syntax: # Leading whitespace is ignored. # Lines starting with '#' are comments. # Lines ending with '\' are concatenated with the next line. # Bracketed ([]) names define sections [Global] # Tracepoint group mask for spdk trace buffers # Default: 0x0 (all tracepoint groups disabled) # Set to 0xFFFF to enable all tracepoint groups. #TpointGroupMask 0x0 # PciBlacklist and PciWhitelist cannot be used at the same time #PciBlacklist 0000:01:00.0 #PciBlacklist 0000:02:00.0 #PciWhitelist 0000:03:00.0 #PciWhitelist 0000:04:00.0 # Users may activate entries in this section to override default values for # global parameters in the block device (bdev) subsystem. [Bdev] # Number of spdk_bdev_io structures allocated in the global bdev subsystem pool. #BdevIoPoolSize 65536 # Maximum number of spdk_bdev_io structures to cache per thread. #BdevIoCacheSize 256 # Users may change this section to create a different number or size of # malloc LUNs. # This will generate 8 LUNs with a malloc-allocated backend. # Each LUN will be size 64MB and these will be named # Malloc0 through Malloc7. Not all LUNs defined here are necessarily # used below. [Malloc] NumberOfLuns 8 LunSizeInMB 64 # Users must change this section to match the /dev/sdX devices to be # exported as iSCSI LUNs. The devices are accessed using Linux AIO. # The format is: # AIO # The file name is the backing device # The bdev name can be referenced from elsewhere in the configuration file. # Block size may be omitted to automatically detect the block size of a disk. [AIO] AIO /dev/sdb AIO0 AIO /dev/sdc AIO1 AIO /tmp/myfile AIO2 4096 # PMDK libpmemblk-based block device [Pmem] # Syntax: # Blk Blk /path/to/pmem-pool Pmem0 # Define NVMf protocol global options [Nvmf] # Set how often the acceptor polls for incoming connections. The acceptor is also # responsible for polling existing connections that have gone idle. 0 means continuously # poll. Units in microseconds. AcceptorPollRate 10000 # One valid transport type must be set in each [Transport]. # The first is the case of RDMA transport and the second is the case of TCP transport. [Transport] # Set RDMA transport type. Type RDMA # Set the maximum number of outstanding I/O per queue. #MaxQueueDepth 128 # Set the maximum number of submission and completion queues per session. # Setting this to '8', for example, allows for 8 submission and 8 completion queues # per session. #MaxQueuesPerSession 4 # Set the maximum in-capsule data size. Must be a multiple of 16. # 0 is a valid choice. #InCapsuleDataSize 4096 # Set the maximum I/O size. Must be a multiple of 4096. #MaxIOSize 131072 # Set the I/O unit size, and this value should not be larger than MaxIOSize #IOUnitSize 131072 # Set the maximum number of IO for admin queue #MaxAQDepth 32 # Set the number of pooled data buffers available to the transport # It is used to provide the read/write data buffers for the qpairs on this transport. #NumSharedBuffers 512 # Set the number of shared buffers to be cached per poll group #BufCacheSize 32 # Set the maximum number outstanding I/O per shared receive queue. Relevant only for RDMA transport #MaxSRQDepth 4096 [Transport] # Set TCP transport type. Type TCP # Set the maximum number of outstanding I/O per queue. #MaxQueueDepth 128 # Set the maximum number of submission and completion queues per session. # Setting this to '8', for example, allows for 8 submission and 8 completion queues # per session. #MaxQueuesPerSession 4 # Set the maximum in-capsule data size. Must be a multiple of 16. # 0 is a valid choice. #InCapsuleDataSize 4096 # Set the maximum I/O size. Must be a multiple of 4096. #MaxIOSize 131072 # Set the I/O unit size, and this value should not be larger than MaxIOSize #IOUnitSize 131072 # Set the maximum number of IO for admin queue #MaxAQDepth 32 # Set the number of pooled data buffers available to the transport # It is used to provide the read/write data buffers for the qpairs on this transport. #NumSharedBuffers 512 # Set the number of shared buffers to be cached per poll group #BufCacheSize 32 [Nvme] # NVMe Device Whitelist # Users may specify which NVMe devices to claim by their transport id. # See spdk_nvme_transport_id_parse() in spdk/nvme.h for the correct format. # The second argument is the assigned name, which can be referenced from # other sections in the configuration file. For NVMe devices, a namespace # is automatically appended to each name in the format nY, where # Y is the NSID (starts at 1). TransportID "trtype:PCIe traddr:0000:00:00.0" Nvme0 TransportID "trtype:PCIe traddr:0000:01:00.0" Nvme1 TransportID "trtype:PCIe traddr:0000:02:00.0" Nvme2 TransportID "trtype:PCIe traddr:0000:03:00.0" Nvme3 TransportID "trtype:RDMA adrfam:IPv4 traddr:192.168.100.8 trsvcid:4420 hostaddr:192.168.100.9 subnqn:nqn.2016-06.io.spdk:cnode1" Nvme4 TransportID "trtype:TCP adrfam:IPv4 traddr:192.168.100.3 trsvcid:4420 hostaddr:192.168.100.4 subnqn:nqn.2016-06.io.spdk:cnode2" Nvme5 # The number of attempts per I/O when an I/O fails. Do not include # this key to get the default behavior. RetryCount 4 # Timeout for each command, in microseconds. If 0, don't track timeouts. TimeoutUsec 0 # Action to take on command time out. Only valid when Timeout is greater # than 0. This may be 'Reset' to reset the controller, 'Abort' to abort # the command, or 'None' to just print a message but do nothing. # Admin command timeouts will always result in a reset. ActionOnTimeout None # Set how often the admin queue is polled for asynchronous events. # Units in microseconds. AdminPollRate 100000 # Set how often I/O queues are polled from completions. # Units in microseconds. IOPollRate 0 # Disable handling of hotplug (runtime insert and remove) events, # users can set to Yes if want to enable it. # Default: No HotplugEnable No # The Split virtual block device slices block devices into multiple smaller bdevs. [Split] # Syntax: # Split [] # Split Malloc2 into two equally-sized portions, Malloc2p0 and Malloc2p1 Split Malloc2 2 # Split Malloc3 into eight 1-megabyte portions, Malloc3p0 ... Malloc3p7, # leaving the rest of the device inaccessible Split Malloc3 8 1 # The RAID virtual block device based on pre-configured block device. [RAID1] # Unique name of this RAID device. Name Raid0 # RAID level, only raid level 0 is supported. RaidLevel 0 # Strip size in KB. StripSize 64 # Number of pre-configured bdevs. NumDevices 2 # Pre-configured bdevs name with Nvme. Devices Nvme2n1 Nvme3n1 # Pre-configured bdevs name with Malloc. #Devices Malloc0 Malloc1 # Pre-configured bdevs name with AIO. #Devices AIO0 AIO1 # Define an NVMf Subsystem. # - NQN is required and must be unique. # - Between 1 and 255 Listen directives are allowed. This defines # the addresses on which new connections may be accepted. The format # is Listen
where type currently can only be RDMA. # - Between 0 and 255 Host directives are allowed. This defines the # NQNs of allowed hosts. If no Host directive is specified, all hosts # are allowed to connect. # - Between 0 and 255 Namespace directives are allowed. These define the # namespaces accessible from this subsystem. # The user must specify MaxNamespaces to allow for adding namespaces # during active connection. By default it is 0 # The user must specify a bdev name for each namespace, and may optionally # specify a namespace ID. If nsid is omitted, the namespace will be # assigned the next available NSID. The NSID must be unique within the # subsystem. An optional namespace UUID may also be specified. # Syntax: # Namespace [ []] # Namespaces backed by physical NVMe devices [Subsystem1] NQN nqn.2016-06.io.spdk:cnode1 Listen TCP 15.15.15.2:4420 AllowAnyHost No Host nqn.2016-06.io.spdk:init SN SPDK00000000000001 MN SPDK_Controller1 MaxNamespaces 20 Namespace Nvme0n1 1 Namespace Nvme1n1 2 Namespace Raid0 # Multiple subsystems are allowed. # Namespaces backed by non-NVMe devices [Subsystem2] NQN nqn.2016-06.io.spdk:cnode2 Listen RDMA 192.168.2.21:4420 AllowAnyHost No Host nqn.2016-06.io.spdk:init SN SPDK00000000000002 MN SPDK_Controller2 Namespace Malloc0 Namespace Malloc1 Namespace AIO0 Namespace AIO1