第 17 章 在 IBM System z 事务中配置安装的 Linux

有关 System z 中 Linux 的详情请参考 第 19 章 IBM System z 参考 中的文档。在此描述了是最常见的任务。

17.1. 添加 DASD

DASD(直接访问存储设备)是 IBM System z 中常使用的存储类型。有关使用这些存储设备的附加详情,请查看 IBM 产品信息中心,网址为 http://www-01.ibm.com/support/knowledgecenter/linuxonibm/com.ibm.linux.z.lgdd/lgdd_t_dasd_wrk.html
以下是如何设置 DASD 在线、对其进行格式化并永久保留更改的示例。

注意

如果在 z/VM 中运行,需要保证已将设备添加或者连接到 Linux 系统。
CP ATTACH EB1C TO *
链接到有访问问题的微盘,例如:
CP LINK RHEL7X 4B2E 4B2E MR 
DASD 4B2E LINKED R/W
有关这些命令的详情,请查看《z/VM: CP 命令和程序参考,SC24-6175》

17.1.1. 在线动态设定 DASD

请按以下步骤将 DASD 设定为在线:
  1. 使用 cio_ignore 程序从忽略设备列表中删除 DASD,并使其出现在 Linux 中:
    # cio_ignore -r device_number
    使用 DASD 的设备号替换 device_number。例如:
    # cio_ignore -r 4b2e
  2. 将该设备设定为在线。使用以下命令格式:
    # chccwdev -e device_number
    使用 DASD 的设备号替换 device_number。例如:
    # chccwdev -e 4b2e
    另外,您可以使用 sysfs 属性将该设备设定为在线:
    1. 使用 cd 命令将 /sys/ 的目录改为代表那个卷的目录:
      # cd /sys/bus/ccw/drivers/dasd-eckd/0.0.4b2e/
      # ls -l
      total 0
      -r--r--r--  1 root root 4096 Aug 25 17:04 availability
      -rw-r--r--  1 root root 4096 Aug 25 17:04 cmb_enable
      -r--r--r--  1 root root 4096 Aug 25 17:04 cutype
      -rw-r--r--  1 root root 4096 Aug 25 17:04 detach_state
      -r--r--r--  1 root root 4096 Aug 25 17:04 devtype
      -r--r--r--  1 root root 4096 Aug 25 17:04 discipline
      -rw-r--r--  1 root root 4096 Aug 25 17:04 online
      -rw-r--r--  1 root root 4096 Aug 25 17:04 readonly
      -rw-r--r--  1 root root 4096 Aug 25 17:04 use_diag
    2. 检查这个卷是否已经在线:
      # cat online
      0
    3. 如果不在线,运行以下命令使它在线:
      # echo 1 > online
      # cat online
      1
  3. 检查哪个块正在被访问:
    # ls -l
    total 0
    -r--r--r--  1 root root 4096 Aug 25 17:04 availability
    lrwxrwxrwx  1 root root    0 Aug 25 17:07 block -> ../../../../block/dasdb
    -rw-r--r--  1 root root 4096 Aug 25 17:04 cmb_enable
    -r--r--r--  1 root root 4096 Aug 25 17:04 cutype
    -rw-r--r--  1 root root 4096 Aug 25 17:04 detach_state
    -r--r--r--  1 root root 4096 Aug 25 17:04 devtype
    -r--r--r--  1 root root 4096 Aug 25 17:04 discipline
    -rw-r--r--  1 root root    0 Aug 25 17:04 online
    -rw-r--r--  1 root root 4096 Aug 25 17:04 readonly
    -rw-r--r--  1 root root 4096 Aug 25 17:04 use_diag
    如该示例所示,/dev/dasdb 正在访问设备 4B2E。
这些说明为当前会话在线设定 DASD,但重启后将无法保留。有关如何在线设定永久 DASD 的操作,请参考 第 17.1.3 节 “在线设定永久 DASD ”。应用 DASD 时,请使用 /dev/disk/by-path/ 中的永久设备符号链接。有关程序参考存储设备的详情,请查看《Red Hat Enterprise Linux 7 存储管理指南》中有关持久存储设备命名一章的内容。

17.1.2. 使用低级格式化准本新 DASD

磁盘在线后,返回 /root 目录并低级格式化这个设备。这在 DASD 的整个生命周期中只需要一次:
# cd /root
# dasdfmt -b 4096 -d cdl -p /dev/disk/by-path/ccw-0.0.4b2e 
Drive Geometry: 10017 Cylinders * 15 Heads =  150255 Tracks 

I am going to format the device /dev/disk/by-path/ccw-0.0.4b2e in the following way: 
   Device number of device : 0x4b2e 
   Labelling device        : yes 
   Disk label              : VOL1 
   Disk identifier         : 0X4B2E
   Extent start (trk no)   : 0 
   Extent end (trk no)     : 150254 
   Compatible Disk Layout  : yes 
   Blocksize               : 4096 

--->> ATTENTION! <<--- 
All data of that device will be lost. 
Type "yes" to continue, no will leave the disk untouched: yes
cyl    97 of  3338 |#----------------------------------------------|   2%
当进度条达到底部时,格式化完成,fdasd 输出以下内容:
重新读取分区表... 
退出...
现在,使用 fdasd 对 DASD 进行分区。您最多可在 DASD 中生成三个分区。在我们的示例中,我们生成一个覆盖整个磁盘的分区:
# fdasd -a /dev/disk/by-path/ccw-0.0.4b2e
auto-creating one partition for the whole disk...
writing volume label...
writing VTOC...
checking !
wrote NATIVE!
rereading partition table...
DASD 在线后(低级格式化后),可将其作为 Linux 中的其他磁盘一样使用。例如:可创建文件系统、LVM 物理卷或者其分区中的 swap 空间,例如 /dev/disk/by-path/ccw-0.0.4b2e-part1。绝不要为某个任务使用全部 DASD 设备(dev/dasdb),dasdfmtfdasd 命令除外。如果您想要使用整个 DASD,请按照上述 fdasd 示例生成一个覆盖整个驱动器的分区。
要之后添加附加磁盘且不破坏现有磁盘条目,例如:/etc/fstab,请使用 /dev/disk/by-path/ 中的永久设备符号链接。

17.1.3. 在线设定永久 DASD

以上说明描述了如何在运行的系统中动态激活 DASD。但这些更改是不永久的,且无法在重启后保留。要将对 DASD 配置的更改永久保存到您的 Linux 系统中要看 DASD 是否属于 root 文件系统。请使用 initramfs在引导过程早期激活那些 root 文件系统需要的 DASD 以便可挂载到 root 文件系统。
cio_ignore 命令明确处理永久设备配置,您不需要手动从忽略列表中释放设备。

17.1.3.1. DASD 是 Root 文件系统一部分

要将 DASD 添加为 root 文件系统的一部分,您只需要修改一个文件,即 /etc/zipl.conf。然后运行 zipl 引导装载程序工具。不需要重新生成 initramfs
在引导阶段初期有一个可以激活 DASD 的引导选项:rd_dasd。这个选项采用逗号分开的列表作为输入。该列表包含设备总线 ID 以及由与 DASD sysfs 属性对应的密钥值对组成的可选附加参数。
以下是系统 zipl.conf 示例,该系统使用两个 DASD 分区中的物理卷作为 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.dasd=0.0.0200,use_diag=0,readonly=0,erplog=0,failfast=0 rd.dasd=0.0.0207,use_diag=0,readonly=0,erplog=0,failfast=0  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"
假设您要在第三个使用设备总线 ID 0.0.202b 的 DASD 分区中添加另一个物理卷,只要在 zipl.conf 中将 rd_dasd=0.0.202b 添加到引导内核的参数行即可:
[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.dasd=0.0.0200,use_diag=0,readonly=0,erplog=0,failfast=0 rd.dasd=0.0.0207,use_diag=0,readonly=0,erplog=0,failfast=0 rd.dasd=0.0.202b  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..........................: 5e:00
  Partition.......................: 5e:01
  Device name.....................: dasda
  DASD device number..............: 0201
  Type............................: disk partition
  Disk layout.....................: ECKD/compatible disk layout
  Geometry - heads................: 15
  Geometry - sectors..............: 12
  Geometry - cylinders............: 3308
  Geometry - start................: 24
  File system block size..........: 4096
  Physical block size.............: 4096
  Device size in physical blocks..: 595416
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.dasd=0.0.0200,use_diag=0,readonly=0,erplog=0,failfast=0 rd.dasd=0.0.0207,use_diag=0,readonly=0,erplog=0,failfast=0 rd.dasd=0.0.202b 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-0x00a70fff 
    parmline........: 0x00001000-0x00001fff 
    initial ramdisk.: 0x02000000-0x022d2fff 
    internal loader.: 0x0000a000-0x0000afff 
Preparing boot device: dasda (0201).
Preparing boot menu
  Interactive prompt......: enabled 
  Menu timeout............: 15 seconds
  Default configuration...: 'linux' 
Syncing disks...
Done.

17.1.3.2. DASD 不是 Root 文件系统一部分

DASD 不是 root 文件系统的一部分,就是说要在 /etc/dasd.conf 中永久配置 data disks。每行包含一个 DASD。每行都以 DASD 的设备总线 ID 开始,后接以空格或者 tab 字符间隔的选项。选项由 key-value 对组成,其中 key 和 value 值以等号分开。
key 与 DASD 可能包含的所有有效 sysfs 属性对应。value 可写为 key 的 sysfs 属性。/etc/dasd.conf 中的条目是活跃的,并在将 DASD 添加到系统中时使用 udev 配置。在引导时,会添加所有系统可见的 DASD 并触发 udev
/etc/dasd.conf 内容示例:
0.0.0207
0.0.0200 use_diag=1 readonly=1
只有在系统重启后,或者使用系统的 I/O 配置动态添加新 DASD(即将 DASD 附加到 z/VM 中)后,修改的 /etc/dasd.conf 才会生效。也可以为之前不活跃的 DASD 在 /etc/dasd.conf 中触发激活新条目,方法是执行以下命令:
  1. 使用 cio_ignore 程序从忽略设备列表中删除 DASD,并使其出现在 Linux 中:
    # cio_ignore -r device_number
    例如:
    # cio_ignore -r 021a
  2. uevent 属性写入该设备触发激活:
    # echo add > /sys/bus/ccw/devices/device-bus-ID/uevent
    例如:
    # echo add > /sys/bus/ccw/devices/0.0.021a/uevent