Difference between revisions of "FreeBSD fiber channel target"

From Aram's Wiki
Jump to: navigation, search
(Check the WWN address)
(Configure /etc/ctl.conf)
Line 35: Line 35:
 
== Configure /etc/ctl.conf ==
 
== Configure /etc/ctl.conf ==
  
Use this comfig for /etc/ctl.conf
+
Use this config for /etc/ctl.conf
  
 +
lun fibre-channel {
 +
        backend block
 +
        device-id "5000c5001d5ba30b"
 +
        serial "MGKSERIAL0001"
 +
        option vendor "MGK"
 +
        option product "FC Disk"
 +
        option naa "600A0B80002682A8000067D95897A544"
 +
        option removable "on"
 +
        path /dev/zvol/tank1/export/fc
 +
}
 +
 
  target naa.2100001b321cd5b6 {
 
  target naa.2100001b321cd5b6 {
auth-group no-authentication
+
        auth-group no-authentication
port isp0
+
        port isp0
port isp1
+
        port isp1
lun 0 {
+
        lun 0 fibre-channel
backend block
 
path /dev/zvol/tank1/export/fc
 
}
 
 
  }
 
  }
  
Make sure the WWN matches. Next, start the ctld daemon.
+
Make sure the WWN matches. Next, start the ctld daemon. The device-id is from a real Seagate FC disk, and the naa is from a real array. I think both are required by macOS to make multipathing work.
  
 
  sudo service ctld start
 
  sudo service ctld start

Revision as of 10:59, 8 November 2018

Introduction

You need:

  • FreeBSD with a kernel that supports your card, e.g. for QLogic QLE2462
  • a fiber channel card that supports target mode
  • a ZFS zvol

Create a ZFS zvol

This will create a sparse 850GB ZFS zvol.

sudo zfs create -p -s -V 850g tank1/export/fc

Enable ctld

sudo sysrc ctld_enable=YES

Bring the device online

sudo ctladm port -o on isp0
sudo ctladm port -o on isp1

Check the WWN address

You'll get output like:

z800:aram$ sudo ctladm port -l
Port Online Frontend Name     pp vp
0    YES    camsim   camsim   0  0  naa.50000009e370df01
1    YES    ioctl    ioctl    0  0  
2    YES    tpc      tpc      0  0  
3    YES    camtgt   isp0     0  0  naa.2100001b321cd5b6
4    YES    camtgt   isp1     0  0  naa.2101001b323cd5b6

Configure /etc/ctl.conf

Use this config for /etc/ctl.conf

lun fibre-channel {
        backend block
        device-id "5000c5001d5ba30b"
        serial "MGKSERIAL0001"
        option vendor "MGK"
        option product "FC Disk"
        option naa "600A0B80002682A8000067D95897A544"
        option removable "on"
        path /dev/zvol/tank1/export/fc
}

target naa.2100001b321cd5b6 {
        auth-group no-authentication
        port isp0
        port isp1
        lun 0 fibre-channel
}

Make sure the WWN matches. Next, start the ctld daemon. The device-id is from a real Seagate FC disk, and the naa is from a real array. I think both are required by macOS to make multipathing work.

sudo service ctld start

Query the status, to see if everything is working correctly:

z800:aram$ sudo ctladm devlist -v                                                                                                                                          
LUN Backend       Size (Blocks)   BS Serial Number    Device ID       
  0 block            1782579200  512 MYSERIAL   0     MYDEVID   0     
      lun_type=0
      num_threads=14
      file=/dev/zvol/tank1/export/fc
      ctld_name=naa.2100001b321cd5b6,lun,0
      scsiname=naa.2100001b321cd5b6,lun,0

References