首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多线程和mdadm隐藏/dev/sdX设备。

多线程和mdadm隐藏/dev/sdX设备。
EN

Unix & Linux用户
提问于 2018-06-13 14:33:22
回答 1查看 769关注 0票数 1

我们有使用多线程的linux服务器。

我们有一些我认为是多刀阔斧和mdadm之间的竞赛条件。

如果我们在powerpath设备上构建raid,比如/dev/mapper/mpathab。重新启动后,raid要么降级,要么在/dev/sdX等设备中降级,因此由于某种原因,它不保留初始配置。

我们安装了emc powerpath,因为san是一个vnx,并创建了如下所示的raid:

代码语言:javascript
运行
复制
mdadm --verbose --create /dev/md0 --level=mirror --raid-devices=2  /dev/emcpowera /dev/emcpowerb

但是在重新启动之后,这是raid的状态:

代码语言:javascript
运行
复制
# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Jun 11 15:14:47 2018
        Raid Level : raid1
        Array Size : 419298304 (399.87 GiB 429.36 GB)
     Used Dev Size : 419298304 (399.87 GiB 429.36 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Tue Jun 12 15:25:02 2018
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : unknown

              Name : cjlnwp01:0  (local to host cjlnwp01)
              UUID : d2779403:bd8d370b:bdea907e:bb0e3c72
            Events : 567

    Number   Major   Minor   RaidDevice State
       0      65        0        0      active sync   /dev/sdq
       1       8      160        1      active sync   /dev/sdk

看起来像mdadm在重启时会找到第一个设备吗?

如何确保当设备是多路径的一部分时,它不会显示为单独的/dev/sdX设备。

在下面的lsblk输出中,每个安装设备sdc到sdq不应该出现。

代码语言:javascript
运行
复制
sdc                   8:32   0   400G  0 disk
sde                   8:64   0   400G  0 disk
sdg                   8:96   0   400G  0 disk
sdi                   8:128  0   400G  0 disk
sdk                   8:160  0   400G  0 disk
sdm                   8:192  0   400G  0 disk
sdo                   8:224  0   400G  0 disk
sdq                  65:0    0   400G  0 disk
emcpowera           120:0    0   400G  0 disk
└─md0                 9:0    0 399.9G  0 raid1
emcpowerb           120:16   0   400G  0 disk
└─md0                 9:0    0 399.9G  0 raid1

mdadm和multipathing之间是否存在某种可以通过在systemd中添加依赖项来安排的竞赛条件?

作为记录,操作系统在HPE proliant DL380 G9服务器上为OEL7.5。

EN

回答 1

Unix & Linux用户

发布于 2018-06-13 16:02:51

您可以使用mdadm.conf中的D1条目使其只考虑特定的设备名称,而忽略其他所有内容。默认情况下,mdadm接受/proc/partitions中列出的所有块设备。

代码语言:javascript
运行
复制
DEVICE /dev/emc*

不幸的是,这只能被认为是一个糟糕的解决办法。这仍然是一个巨大的混乱,因为有许多情况下,可能最终使用错误的设备。

这也是循环设备遇到的一个问题:

代码语言:javascript
运行
复制
# losetup --find --show /dev/sdi2
/dev/loop4

现在,/dev/loop4/dev/sdc3是相同的,这也意味着它们共享相同的UUID:

代码语言:javascript
运行
复制
# blkid /dev/sdi2 /dev/loop4
/dev/sdi2: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
/dev/loop4: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"

现在,当您使用mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe时,应该使用哪个设备?

代码语言:javascript
运行
复制
# mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe /mnt/tmp
# df -h /mnt/tmp
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop4      2.0G  490M  1.4G  26% /mnt/tmp

在这种情况下,它最终选择了循环设备,这可能是我的意图,也可能不是我的意图。

复制像这样的设备是一个巨大的问题,因为突然之间,应该是唯一的UUID不再是唯一的,因此错误的设备可能会被使用。

LVM也在努力解决这个问题,在这里将详细描述:https://access.redhat.com/documentation/en-us/red_帽子_企业_linux/7/html/逻辑_体积_经理_行政/复本_光伏_多径

不幸的是,这个文档也没有提供适当的解决方案,它只是建议一个设备过滤器的解决方案。

对于适当的解决方案,最好完全避免使用两个不同的块设备来表示相同的数据。通常情况下,这涉及到将数据放在偏移量处。我不知道默认情况下多路径是否具有偏移功能。

对于分区表mdadm、LUKS、LVM,您通常可以免费获得偏移量,因为这些表在父设备的开头有一个标头,并且它们提供的子块设备与此相抵消。

因此,在/dev/sdx上,您只看到分区表,/dev/sdx 1只看到mdadm头,/dev/md1只看到LUKS头,/dev/mapper/cryptomd1 1只看到LVM报头,而/dev/VG/LV只看到文件系统,因为这些设备都与其父数据相偏移。

如果您为您的多路径设置做了同样的事情,mdadm元数据只能在/dev/emcpowera上可见,而在/dev/sdk上是不可见的,而后者不可能错误地被组装成RAID。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/449568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档