linux – 使用UDEV使用/ dev / disk / by-path创建持久驱动器标签

我有一个新的BackBlaze Pod( BackBlaze Pod 2.0).

它有45个3TB驱动器,当我第一次设置时,它们通过/ dev / sdz标记为/ dev / sda,通过/ dev / sdas标记为/ dev / sdaa.

我使用mdadm来设置三个非常大的15驱动器RAID6阵列.

但是,自从几周前首次安装以来,我有几个硬盘驱动器失败了.我已经更换了它们,但现在阵列正在抱怨,因为它们找不到丢失的驱动器.当我列出磁盘时……

ls -l /dev/sd*

我看到

/dev/sda
/dev/sdf
/dev/sdk
/dev/sdp

不再出现,现在有4个新的……

/dev/sdau
/dev/sdav
/dev/sdaw
/dev/sdax

我也发现我能做到这一点……

ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:02:04.0-scsi-0:0:0:0 -> ../../sdau
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:1:0:0 -> ../../sdb
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:2:0:0 -> ../../sdc
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:3:0:0 -> ../../sdd
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:4:0:0 -> ../../sde
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:02:04.0-scsi-2:0:0:0 -> ../../sdae
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:1:0:0 -> ../../sdg
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:2:0:0 -> ../../sdh
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:3:0:0 -> ../../sdi
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:4:0:0 -> ../../sdj
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:02:04.0-scsi-3:0:0:0 -> ../../sdav
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:1:0:0 -> ../../sdl
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:2:0:0 -> ../../sdm
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:3:0:0 -> ../../sdn
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:4:0:0 -> ../../sdo
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:04:04.0-scsi-0:0:0:0 -> ../../sdax
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:1:0:0 -> ../../sdq
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:2:0:0 -> ../../sdr
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:3:0:0 -> ../../sds
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:4:0:0 -> ../../sdt
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:0:0:0 -> ../../sdu
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:1:0:0 -> ../../sdv
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:2:0:0 -> ../../sdw
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:3:0:0 -> ../../sdx
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:4:0:0 -> ../../sdy
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-3:0:0:0 -> ../../sdz

我没有列出所有….你可以看到上面的问题.它们按scsi id排序,但是sda丢失了……取而代之的是sdau ……等等……

很明显阵列在抱怨.是否有可能让Linux以正确的顺序重新读取驱动器标签或者我搞砸了?

我最初设计的15个驱动器阵列并不理想.使用3TB驱动器,重建时间需要3或4天……或许更多.我正在废弃整个设计,我想我将使用6 x 7 RAID5磁盘阵列和3个热备件来使阵列更容易管理并缩短重建时间.但我想清理驱动器标签,以免它们出现故障.我还没弄明白怎么做.

有谁知道如何理顺这一点?

谢谢,

马特

解决方法

我的解决方

我不确定这是最好的解决方案,我仍然对其他答案感兴趣,但这就是我所做的.

我无法弄清楚如何根据SCSI路径强制它映射(例如pci-0000:02:04.0-scsi-0:0:0:0).所以我改为基于UUID进行映射,UUID是驱动器型号和序列号.我只需要记住,当我交换驱动器时,我必须更新UDEV条目.

寻找UUID

使用以下命令中的条目来标识当前驱动器名称,它们映射到的SCSI PATH以及它们的UUID.

# ls -l /dev/disk/by-path
# /lib/udev/scsi-id -gu /dev/sdX

创建了UDEV条目

我将这样的条目放入一个名为/etc/udev/rules.d/59-persistent-disk.rules的新文件中.有三排三个背板,所以我做了这样的事情.

# ROW 1 BACKPLANE 1
KERNEL=="sd*",SUBSYstem=="block",PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0076306",SYMLINK+="pci24scsi00"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0073437",SYMLINK+="pci24scsi01"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0073085",SYMLINK+="pci24scsi02"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0072374",SYMLINK+="pci24scsi03"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0071564",SYMLINK+="pci24scsi04" 

# ROW 1 BACKPLANE 2
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0077571",SYMLINK+="pci24scsi20"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0077346",SYMLINK+="pci24scsi21"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0074773",SYMLINK+="pci24scsi22"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0071238",SYMLINK+="pci24scsi23"
KERNEL=="sd*",RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0076264",SYMLINK+="pci24scsi24"
.......etc

创建数组

现在我有持久的设备名称,我创建了五个9驱动器阵列(带有一个备用的RAID5),如下所示.我在每个阵列中使用了每个背板1个驱动器,因此我可能会丢失整个背板(甚至两个),并且阵列将保持运行.这样做可能会影响性能,但我购买了这个用于归档和异地备份,因此性能不是主要考虑因素.

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi00 /dev/pci24scsi20 /dev/pci24scsi30 /dev/pci44scsi00 /dev/pci44scsi20 /dev/pci44scsi30 /dev/pci64scsi00 /dev/pci64scsi20 /dev/pci64scsi30
mdadm --create --verbose /dev/md1 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi01 /dev/pci24scsi21 /dev/pci24scsi31 /dev/pci44scsi01 /dev/pci44scsi21 /dev/pci44scsi31 /dev/pci64scsi01 /dev/pci64scsi21 /dev/pci64scsi31
mdadm --create --verbose /dev/md2 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi02 /dev/pci24scsi22 /dev/pci24scsi32 /dev/pci44scsi02 /dev/pci44scsi22 /dev/pci44scsi32 /dev/pci64scsi02 /dev/pci64scsi22 /dev/pci64scsi32
mdadm --create --verbose /dev/md3 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi03 /dev/pci24scsi23 /dev/pci24scsi33 /dev/pci44scsi03 /dev/pci44scsi23 /dev/pci44scsi33 /dev/pci64scsi03 /dev/pci64scsi23 /dev/pci64scsi33
mdadm --create --verbose /dev/md4 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi04 /dev/pci24scsi24 /dev/pci24scsi34 /dev/pci44scsi04 /dev/pci44scsi24 /dev/pci44scsi34 /dev/pci64scsi04 /dev/pci64scsi24 /dev/pci64scsi34

使用LVM创建VG和LV

这些是我创建卷的LVM步骤,因此可以远程安装iSCSI.

pvcreate将

pvcreate /dev/md0
pvcreate /dev/md1
pvcreate /dev/md2
pvcreate /dev/md3
pvcreate /dev/md4

运行vgcreate

vgcreate VgArr0 /dev/md0
vgcreate VgArr1 /dev/md1
vgcreate VgArr2 /dev/md2
vgcreate VgArr3 /dev/md3
vgcreate VgArr4 /dev/md4
vgcreate VgArr5 /dev/md5

LVCREATE用于iSCSI

创建LV但不格式化或装载卷.它们被远程格式化/安装

lvcreate -L100%FREE VgArr0 -n LvISCSI0

iSCSI的

编辑/etc/iet/ietd.conf和/etc/iet/initiators.conf

在另一台主机上远程映射iSCSI LUN

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...