Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
第 34 章 存储
/dev/disk/by-path/
现在为 NPIV 路径帐户
在以前的版本中,如果在单个物理 HBA 上创建两个或多个虚拟主机总线适配器(HBA),则在每个路径的
/dev/disk/by-path/
目录中只创建一个指向该设备的链接,而不是每个路径的一个链接。因此,使用光纤通道 N_Port ID 虚拟化(NPIV)创建带有虚拟 HBA 的 virsh
池无法正常工作。在这个版本中,/dev/disk/by-path/
中的符号链接会被正确创建,且是唯一的。/dev/disk/by-path/
中的符号链接为通过物理光纤通道 N_Port 连接的逻辑单元号(LUN)创建。
(BZ#1266934)
在使用精简配置时,当精简池达到容量时,缓冲的写入将不再丢失
在以前的版本中,即使自动操作,在执行调整大小前,会尝试将未完成的 I/O 刷新到存储设备。由于精简池中没有空间,因此必须首先出错 I/O 操作,以允许增长成功。因此,如果精简池填充了容量,即使池在该时候递增,一些写入也会丢失。在这个版本中,在上述情况下,缓冲的写入不再丢失到 thin-pool 中。(BZ#1274676)
RAID 迁移现在可以在 IBM Power 系统的 little-endian 变体中正常工作
在以前的版本中,如果没有指定条带大小,raid-migrate 命令会在 IBM Power Systems 的 little-endian 变体中失败,因为
iprconfig
实用程序在 IBM Power Systems 的当前条带大小上恢复,并从适配器载入它,而无需正确更改底层源代码来修复这个程序错误,RAID 迁移现在可以在 IBM Power Systems 的 little-endian 变体中正常工作。(BZ#1297921)
multipathd
守护进程不再重新恢复不可用的 Implicit ALUA ghost 路径。
在以前的版本中,
multipathd
守护进程自动恢复处于 GHOST 状态的 Implicit ALUA 设备,该设备不可用。如果设备是唯一存在,多路径会持续重试不可用的设备,而不是 I/O 操作失败。在这个版本中,multipathd
不再重新状态不可用的 Implicit ALUA ghost 路径。因此,当只有不可分配的 Implicit ALU A 路径可用时,多路径不再持续重试 I/O 操作。(BZ#1291406)
多路径现在在多路径设备中包括 0 个大小的备用路径
有些阵列不会在备用端口上报告其大小,从而导致 0 个设备。在以前的版本中,多路径不允许将 0 个大小的设备添加到多路径设备中。因此,多路径不会在多路径设备中添加 0 个大小的备用路径。在这个版本中,多路径允许为设备添加 0 个大小的路径。(BZ#1356651)
多路径不再修改由其他程序创建的 多路径
类型的 dm
表类型的设备
在以前的版本中,多路径工具假设它们负责使用多路径表管理所有
dm
设备。multipathd
守护进程会修改不是由多路径工具创建的设备表。在这个版本中,多路径工具只在以 mpath-
开头的设备上运行,这是多路径在它创建的所有设备中使用的 UUID 前缀。
因此,多路径将不再修改由其他程序创建的 dm
表类型多路径的设备。
(BZ#1241528)
multipathd
守护进程现在允许将路径添加到新多路径设备中(如果当前没有可用的路径)
在以前的版本中,当
multipathd
创建新多路径设备时,它不允许在创建多路径设备的 udev
更改事件前添加更多路径,即使它创建了没有可用路径的设备。如果创建了没有可用路径的多路径设备,则 udev
设备管理器会挂起尝试获取该设备的信息,直到它没有将主动路径添加到该设备中。在这个版本中,如果当前没有可用路径,multipathd
现在允许将路径添加到新创建的多路径设备中。因此,可用的路径会立即添加到没有的新设备中,udev
不会挂起。(BZ#1350931, BZ#1351430)
multipathd
守护进程不再在启动时遇到可恢复的错误
请注意,当
multipathd
在启动过程中按可恢复的错误时,会退出恢复。在这个版本中,如果 multipathd
在启动过程中达到可恢复的错误,且不再退出,则 multipathd 会继续。(BZ#1368501)
multipathd
守护进程现在响应失败的删除失败 ,
而不是 ok
当在添加设备后更改 uid_attribute,然后删除该设备时,多路径不再崩溃
在以前的版本中,如果路径在添加到多路径设备后更改了它的 WWID,
multipathd
守护进程会创建一个新设备。这会导致两个设备中的路径。因此,如果用户在创建多路径设备后更改了 uid_attribute
,然后删除了设备,multipathd
会尝试访问空闲的内存和崩溃。在这个版本中,在多路径设备中使用多路径时,multipathd
不再允许更改路径的 WWID。因此,multipathd
不再会在这种情况下崩溃。(BZ#1323429)
重命名设备时多路径不再失败
在以前的版本中,多路径使用函数中未初始化的变量来重命名设备。这会导致多路径在重命名设备时出现偶尔失败,因为变量被设置为无效的值。在这个版本中,多路径会在重命名设备时初始化此变量。(BZ#1363830)
systemd 不再报告 multipath.pid
文件不可读取
在以前的版本中,systemd 报告在
multipathd
命令返回后无法读取 multipathd.pid
文件。这是因为 multipathd
命令在编译守护进程后立即返回,守护进程在配置完成后不会写入 pid
文件。在这个版本中,multipathd
命令会等待 multipathd
守护进程写入 pid
文件,或在返回前传递 3 秒,守护进程会在启动时写入 pid
文件。因此,systemd
不再报告 multipath.pid
文件不可读。(BZ#1253913)
多路径现在指出路径不是不属于块设备的路径的有效参数
在以前的版本中,如果您使用了到不是有效块设备的某个路径,则多路径会通知您
它需要一个路径来检查
,这是不方便的。这是因为多路径将任何不是块设备路径或 major:minor 号视为多路径别名。在这个版本中,多路径不会将任何不是块设备的完全限定路径视为多路径别名。因此,多路径会指出该路径 不是
不属于块设备的路径的有效参数。(BZ#1319853)
多路径设备的所有 /dev/mapper
条目现在是 udev
创建的符号链接
在以前的版本中,多路径设备的一些
/dev/mapper
条目是符号链接(symlinks),有些是块设备,因为多路径没有正确等待 udev
创建 /dev/mapper/
符号链接。在这个版本中,多路径会在每个事务后等待 udev
。因此,多路径设备的所有 /dev/mapper
条目现在都是 udev
创建的符号链接。(BZ#1255885)
现在,当多路径在它们之上创建一个多路径设备时,多路径会立即声明新设备
在以前的版本中,第一次多路径认为设备,它不会由
udev
规则中的多路径声明,因为多路径不会在 udev
中声明设备,除非 WWID 在处理 uevent
时位于 /etc/multipath/wwids
文件中。在这个版本中,当多路径向 wwids
文件添加新设备 WWID 时,它会在该设备中发出一个更改事件,以便它在 udev
规则中声明它。现在,当多路径在多路径上创建多路径设备时,多路径会立即声明新设备。(BZ#1299600)
在某些设备中失败不再使多路径创建其他设备
在以前的版本中,multipath 命令可能会因为不相关的设备失败而无法设置工作设备,因为如果无法获取它正在创建的任何设备的信息,它会很快退出。在这个版本中,如果多路径无法获取某些设备的信息,且在某些设备中失败不再使多路径创建其他设备,则多路径不再会提前退出。(BZ#1313324)
多路径不再丢失 uevent
信息,它现在添加了所有适当的设备
在以前的版本中,多路径并不总是正确添加所有路径设备,因为它没有正确检查是否存在
libudev
功能,以编译支持重新定义 uevent
套接字的大小。因此,多路径不会调整 uevent
套接字的大小,它可能会溢出。这会导致多路径丢失必要的事件。在这个版本中,多路径会检查正确的 libudev
功能,并编译支持重新定义 uevent
套接字大小。因此,多路径不再丢失 uevent
信息,它现在添加了所有适当的设备。(BZ#1296979)
在创建设备前,kpartx
工具不再返回
在以前的版本中,默认情况下,
kpartx
工具会在不等待创建设备的情况下返回。这是用户在返回 kpartx
后立即存在设备的用户的混淆来源。在这个版本中,kpartx
在返回前等待创建设备。(BZ#1299648)
对设备重新定义大小的多个调用将在每次尝试重新定义设备大小,并正确报告结果
在以前的版本中,如果
multipathd
无法重新定义设备大小,它仍然认为该设备有新的大小。后续调用重新定义设备大小会报告成功,且不会调整设备大小,因为 multipathd
认为它没有保留。在这个版本中,如果调整大小失败,multipathd
会将设备大小重置为原始大小。因此,对设备重新定义大小的多次调用每次会尝试重新定义设备大小,并将正确报告结果。(BZ#1333492)
多路径现在为带有大于 2TB 的 DOS 分区正确为 4k 块设备创建分区设备
在以前的版本中,
kpartx
工具为大于 2TB 的 DOS 分区创建错误的大小分区。这是因为 kpartx
存储了扇区数量,以及从原生扇区大小转换为 32 位未签名的整数所需的 multiplier。如果两个数字大于 2^32,则会导致滚动。在这个版本中,多路径现在为扇区大小的倍数使用 64 位未签名的整数,因此当数字乘以一起时,结果不会滚动。现在,多路径可以正确地创建分区。(BZ#1311463)
多路径不再删除正在使用的分区,并在添加路径时恢复分区
在以前的版本中,如果设备的所有路径都丢失,多路径会删除所有没有使用的分区,永远不会恢复它们。这是因为当多路径试图删除分区时,即使它们正在使用分区,也会删除它们,一旦删除它们永远不会恢复它们。在这个版本中,多路径会在尝试删除前检查任何分区是否正在使用,如果删除失败,它会在添加路径时恢复分区。(BZ#1292599)
当新设备名称与现有设备匹配时,kpartx
工具不再覆盖现有的分区设备
在以前的版本中,当潜在的新设备的名称与现有设备名称匹配时,
kpartx
会静默地覆盖带有新设备的现有分区设备。这会导致 kpartx
设备在存在命名冲突时意外地改变它们。在这个版本中,kpartx
会检查 UUID,以确保它不会覆盖属于不同整个设备的分区设备。如果存在名称 clash,kpartx
现在将失败,并显示出错信息,而不是更改现有分区设备指向的位置。(BZ#1283750)
mpathconf --allow 命令现在创建一个带有允许节点引导的正确设备的配置文件
在以前的版本中,对于某些设置,mpathconf --allow 命令会创建一个不允许节点引导的配置文件。这是因为 mpathconf --allow 是从配置文件的
blacklist_exceptions
部分中删除现有条目,这可能会导致某些允许的设备列入黑名单。它还会在 blacklist_exceptions
部分打印重复的 WWID 条目。在这个版本中,mpath conf --allow 不再删除现有 blacklist_exceptions
条目,并只打印 WWID 条目。现在,这个命令总是创建一个带有允许节点引导的正确设备的配置文件。(BZ#1288660)
多路径设备现在被正确识别为 LVM 物理卷
在以前的版本中,LVM 有时无法识别多路径 PV。这是因为
multipathd
可以在为其到达创建 uevent
时重新载入设备。LVM udev
规则不允许处理当前暂停的设备,这会在重新载入过程中发生。在这个版本中,multipathd
延迟设备会重新加载,直到它收到创建 uevent
。(BZ#1304687)
multipathd
守护进程不再打印路径在实际停机时启动
在以前的版本中,
multipathd
守护进程可能会打印路径在实际停机时启动。如果 multipathd
在调用路径检查程序之前检测到路径已停机,它永远不会清除最后一个路径检查器消息,并打印出该消息。在这个版本中,如果在检查程序运行前确定路径,multipathd
会清除路径检查程序的信息。(BZ#1280524)
如果 udev
同时处理分区设备,multipathd
设备不再无法被创建
在以前的版本中,当
udev
在路径设备上有锁定时,multipathd
无法创建多路径设备。这是因为 multipathd
在创建多路径设备和 udev
在处理其分区设备时,multipathd grabbed 在路径设备上有一个专用锁定。在这个版本中,multipathd
也会获取一个共享锁定,以便它可以与 udev
同时运行。(BZ#1347769)
systemd
不再打印缺少依赖项的警告信息
在以前的版本中,当
multipathd
systemd
服务单元文件需要 initramfs
中不可用的单元文件时,systemd 会输出缺少依赖项的警告信息。在这个版本中,multipathd
单元文件使用 Wants 而不是 Requires,因为它可以在没有 blk-availability
单元文件的情况下运行。(BZ#1269293)
kpartx
生成的设备现在与实际分区号相同
在以前的版本中,
kpartx
生成的设备分区号与实际分区号不匹配。这是因为 kpartx
在决定分区号时没有扇区计算 sun 分区。在这个版本中,kpartx
在决定分区号时没有扇区的 sun 分区,kpartx
生成的设备现在与实际分区号相同。(BZ#1241774)
MTX 不再失败并显示大型磁带存储阵列失败
在使用大型磁带存储驱动器阵列配置的系统上,MTX 工具之前会失败,并显示错误。因此,无法管理磁带存储。这个版本改进了对较大的磁带存储阵列的支持,现在 MTX 可以如预期管理大型磁带存储。(BZ#1298647)
dmraid
和其他 设备映射器
子系统之间不再发生差异
在以前的版本中,dmraid 软件包使用不正确的测试选项编译。因此,
dmraid
工具意外扫描所有设备,包括 LVM 等任何其他 设备映射器
子系统,这可能会干扰其它子系统,并在引导过程中造成各种故障。在这个版本中,在 dmraid
中禁用了测试模式,所有设备都在引导时不会被扫描。因此,不再发生 dmraid
和其他设备映射器子系统间的干扰。(BZ#1348289)
卸载后,systemd
不再警告 dmraid-activation.service
缺少的单元 dmraid
在此次更新之前,
/etc/systemd/system/sysinit.target.wants/dmraid-activation.service
符号链接在卸载 dmraid 软件包后保留在系统中,这会导致 systemd
服务警告 dmraid-activation.service
中缺少单元。在这个版本中,卸载 dmraid
时会删除上述符号链接。(BZ#1315644)
mdadm
不再无法在重塑过程中停止 IMSM RAID 阵列
由于一个程序错误,在恢复之前尝试停止 Intel Matrix Storage Manager (IMSM) RAID 阵列失败。现在,底层源代码已被修改来修复这个程序错误,现在
mdadm
工具会在上述情况下正确停止阵列。(BZ#1312837)
在运行 I/O 操作时,使用 mdadm
为降级阵列分配热备用不再失败
在以前的版本中,当在 MD Array 上运行 I/O 操作时,为降级阵列分配一个热备用可能会失败,而
mdadm
工具会返回错误消息,例如:
mdadm: /dev/md1 has failed so using --add cannot work and might destroy mdadm: data on /dev/sdd1. You should stop the array and re-assemble it
现在,应用了一个补丁来解决这个问题,并在降级阵列中添加热备用阵列现在如上述情况一样完成。(BZ#1300579)
重启后,使用 mdadm
创建的降级 RAID1 阵列不再显示为不活跃状态
在以前的版本中,在重启系统后,使用
mdadm
工具创建的降级 RAID1 阵列可能会显示为不活跃的 RAID0 阵列。在这个版本中,阵列会在系统重启后正确启动。(BZ#1290494)
尝试重新定义包含位映射到 RAID0 阵列的 RAID1 阵列不再破坏 RAID1 阵列
不支持使用
mdadm
工具调整包含位映射到 RAID0 阵列的 RAID1 阵列。在以前的版本中,当尝试重新定义包含 RAID0 阵列位映射的 RAID1 阵列时,操作将被拒绝,但 RAID1 阵列已损坏。在这个版本中,reshape 被拒绝,但 RAID1 阵列可以按预期工作。(BZ#1174622)
运行 mdadm
reshape 操作的 IMSM RAID 阵列不再发生竞争条件
运行
mdadm
reshape 操作的 Intel Matrix Storage Manager (IMSM) RAID 阵列之前,竞争条件可能允许在第一次操作完成前在同一阵列上启动第二个重塑,且重塑操作没有正确完成。在这个版本中,竞争条件不再发生,在完成第一次操作前无法启动第二个 reshape 操作。(BZ#1347762)
mdadm
现在可以编译使用设备名称超过 15 个字符的数组
在以前的版本中,当尝试编译包含设备名称超过 15 个字符的设备的数组时,
mdadm
工具可能会意外终止并出现分段错误。在这个版本中,即使阵列使用大于 15 个字符的设备名称,mdadm
也会正确编译阵列。(BZ#1347749)