17.2. 添加使用 FCP 的逻辑单位(LUN)

以下是如何添加 FCP LUN 的示例。

注意

如果在 z/VM 中运行,请确定将 FCP 适配器附加到 z/VM 虚拟机中。要在产品环境中形成多路径,则必须至少在两个不同的物理适配器中(CHPID)中有两个 FCP 设备。例如:
CP ATTACH FC00 TO * 
CP ATTACH FCD0 TO *

17.2.1. 动态激活 FCP LUN

按以下步骤操作激活 LUN:
  1. 使用 cio_ignore 程序从忽略设备列表中删除 FCP 适配器,并使其出现在 Linux 中:
    # cio_ignore -r device_number
    使用 FCP 适配器设备号替换 device_number。例如:
  2. 要使 FCP 适配器在线,请使用以下命令:
    # chccwdev -e fc00
  3. 确认 zfcp 设备驱动程序自动端口扫描找到的所需 WWPN:
    # ls -l /sys/bus/ccw/drivers/zfcp/0.0.fc00/
    drwxr-xr-x.  3 root root    0 Apr 28 18:19 0x500507630040710b
    drwxr-xr-x.  3 root root    0 Apr 28 18:19 0x50050763050b073d
    drwxr-xr-x.  3 root root    0 Apr 28 18:19 0x500507630e060521
    drwxr-xr-x.  3 root root    0 Apr 28 18:19 0x500507630e860521
    -r--r--r--.  1 root root 4096 Apr 28 18:17 availability
    -r--r--r--.  1 root root 4096 Apr 28 18:19 card_version
    -rw-r--r--.  1 root root 4096 Apr 28 18:17 cmb_enable
    -r--r--r--.  1 root root 4096 Apr 28 18:17 cutype
    -r--r--r--.  1 root root 4096 Apr 28 18:17 devtype
    lrwxrwxrwx.  1 root root    0 Apr 28 18:17 driver ->  ../../../../bus/ccw/drivers/zfcp
    -rw-r--r--.  1 root root 4096 Apr 28 18:17 failed
    -r--r--r--.  1 root root 4096 Apr 28 18:19 hardware_version
    drwxr-xr-x. 35 root root    0 Apr 28 18:17 host0
    -r--r--r--.  1 root root 4096 Apr 28 18:17 in_recovery
    -r--r--r--.  1 root root 4096 Apr 28 18:19 lic_version
    -r--r--r--.  1 root root 4096 Apr 28 18:17 modalias
    -rw-r--r--.  1 root root 4096 Apr 28 18:17 online
    -r--r--r--.  1 root root 4096 Apr 28 18:19 peer_d_id
    -r--r--r--.  1 root root 4096 Apr 28 18:19 peer_wwnn
    -r--r--r--.  1 root root 4096 Apr 28 18:19 peer_wwpn
    --w-------.  1 root root 4096 Apr 28 18:19 port_remove
    --w-------.  1 root root 4096 Apr 28 18:19 port_rescan
    drwxr-xr-x.  2 root root    0 Apr 28 18:19 power
    -r--r--r--.  1 root root 4096 Apr 28 18:19 status
    lrwxrwxrwx.  1 root root    0 Apr 28 18:17 subsystem ->  ../../../../bus/ccw
    -rw-r--r--.  1 root root 4096 Apr 28 18:17 uevent
  4. 通过将 FCP LUN 添加到要访问 LUN 的端口(WWPN)激活它:
    # echo 0x4020400100000000 > /sys/bus/ccw/drivers/zfcp/0.0.fc00/0x50050763050b073d/unit_add
  5. 找到分配的 SCSI 设备名称:
    # lszfcp -DV
    /sys/devices/css0/0.0.0015/0.0.fc00/0x50050763050b073d/0x4020400100000000
    /sys/bus/ccw/drivers/zfcp/0.0.fc00/host0/rport-0:0-21/target0:0:21/0:0:21:1089355792

17.2.2. 永久激活 FCP LUN

上述说明描述了如何在运行的系统中动态激活 FCP LUN。但是这种更改不是永久的,重启后无法保留。如何将在您的 Linux 系统中对 FCP 配置的修改保留下来要看 FCP LUN 是否属于 root 文件系统。必须在引导进程早期使用 initramfs 激活那些 root 文件系统所需的 FCP LUN 方可将其挂载到 root 文件系统中。cio_ignore 命令是明确用于永久设备配置,您不需要在忽略列表中手动释放设备。

17.2.2.1. FCP LUN 是 Root 文件系统的一部分

添加作为 root 文件系统一部分的 FCP LUN 时唯一需要修改的文件是 /etc/zipl.conf,然后运行 zipl 引导装载程序工具。不需要重新生成 initramfs
Red Hat Enterprise Linux 提供在引导进程早期激活 FCP LUN 的参数:rd_zfcp=。该参数值是一个用逗号分开的设备总线 ID 列表,WWPN 是以 0x 为前缀的 16 位十六进制数字,FCP LUN 是以 0x 为前缀后接多个 0 的 16 位十六进制数。
下面的 zipl.conf 示例适用于使用在两个 FCP LUN 分区中的物理卷作为 LVM 卷组 vg_devel1,该卷组中包括一个用于 root 文件系统的逻辑卷 lv_root。为方便演示,该示例显示没有多路径的配置。
[defaultboot]
	default=linux
	target=/boot/

[linux]
	image=/boot/vmlinuz-2.6.32-19.el7.s390x
	ramdisk=/boot/initramfs-2.6.32-19.el7.s390x.img
	parameters="root=/dev/mapper/vg_devel1-lv_root 
	rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a000000000 
	rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a100000000 
	rd_LVM_LV=vg_devel1/lv_root rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 
	SYSFONT=latarcyrheb-sun16 KEYTABLE=us cio_ignore=all,!condev"
要在包含第三 FCP LUN(其设备总线 ID 为 0.0.fc00;WWPN 0x5105074308c212e9;FCP LUN 0x401040a300000000)的分区中另一个物理卷,只要在 zipl.conf 的引导内核参数行中添加 rd_zfcp=0.0.fc00,0x5105074308c212e9,0x401040a300000000 即可。例如:
[defaultboot]
	default=linux
	target=/boot/

[linux]
	image=/boot/vmlinuz-2.6.32-19.el7.s390x
	ramdisk=/boot/initramfs-2.6.32-19.el7.s390x.img
	parameters="root=/dev/mapper/vg_devel1-lv_root 
	rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a000000000 
	rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a100000000 
	rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a300000000
	rd_LVM_LV=vg_devel1/lv_root rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 
	SYSFONT=latarcyrheb-sun16 KEYTABLE=us cio_ignore=all,!condev"

警告

确保 /etc/zipl.conf 中内核命令行的长度不超过 896 字节。否则将无法保存引导装载程序,同时安装会失败。
运行 zipl 在下次 IPL 时应用对 /etc/zipl.conf 的修改:
# zipl -V
Using config file '/etc/zipl.conf'
Target device information
Device..........................: 08:00
Partition.......................: 08:01
Device name.....................: sda
Device driver name..............: sd
Type............................: disk partition
Disk layout.....................: SCSI disk layout
Geometry - start................: 2048
File system block size..........: 4096
Physical block size.............: 512
Device size in physical blocks..: 10074112
Building bootmap in '/boot/'
Building menu 'rh-automatic-menu'
Adding #1: IPL section 'linux' (default)
kernel image......: /boot/vmlinuz-2.6.32-19.el7.s390x
kernel parmline...: 'root=/dev/mapper/vg_devel1-lv_root rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a000000000 rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a100000000 rd.zfcp=0.0.fc00,0x5105074308c212e9,0x401040a300000000 rd_LVM_LV=vg_devel1/lv_root rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us cio_ignore=all,!condev'
initial ramdisk...: /boot/initramfs-2.6.32-19.el7.s390x.img
component address:
kernel image....: 0x00010000-0x007a21ff
parmline........: 0x00001000-0x000011ff
initial ramdisk.: 0x02000000-0x028f63ff
internal loader.: 0x0000a000-0x0000a3ff
Preparing boot device: sda.
Detected SCSI PCBIOS disk layout.
Writing SCSI master boot record.
Syncing disks...
Done.

17.2.2.2. FCP LUN 不是 Root 文件系统的一部分

不是 root 文件系统一部分的 FCP LUN,比如数据磁盘,是在 /etc/zfcp.conf 中永久配置的。每行有一个 FCP LUN,包含 FCP 适配器的设备总线 ID、前缀为 0x 的 16 位十六进制 WWPN,以及前缀为 0x 并附加多个 0 以达到 16 位十六进制数的 FCP LUN,中间使用空格或者 tab 分开。/etc/zfcp.conf 中的条目是在将 FCP 适配器添加到系统中时友 udev 激活和配置。在引导时,系统会添加所有可看到的 FCP 适配器并启动 udev
/etc/zfcp.conf 示例内容:
0.0.fc00 0x5105074308c212e9 0x401040a000000000
0.0.fc00 0x5105074308c212e9 0x401040a100000000
0.0.fc00 0x5105074308c212e9 0x401040a300000000
0.0.fcd0 0x5105074308c2aee9 0x401040a000000000
0.0.fcd0 0x5105074308c2aee9 0x401040a100000000
0.0.fcd0 0x5105074308c2aee9 0x401040a300000000
/etc/zfcp.conf 的修改只在系统重启或者更改系统 I/O 配置动态添加新 FCP 通道(例如:在 z/VM 里附加一个通道)时生效。另外,可以执行以下命令,为之前没有激活的 FCP 适配器激活 /etc/zfcp.conf 中的新条目:
  1. 使用 cio_ignore 程序从忽略设备列表中删除 FCP 适配器,并使其出现在 Linux 中:
    # cio_ignore -r device_number
    使用 FCP 适配器设备号替换 device_number。例如:
    # cio_ignore -r fcfc
  2. 要触发激活更改的 uevent,请执行:
    # echo add > /sys/bus/ccw/devices/device-bus-ID/uevent
    例如:
    # echo add > /sys/bus/ccw/devices/0.0.fcfc/uevent