共计 3734 个字符,预计需要花费 10 分钟才能阅读完成。
环境介绍:
存储:华为 S5500T 服务器:华为 RH5885 V2 操作系统:linux RedHat6.4 64bit
问题描述:
在服务器安装好操作系统后,默认情况下本地磁盘是以 sda 开始。在划分为好相应的 lun 并映射到相应的服务器上时,本地磁盘与映射过来的 lun 顺序发生了变化。例如在盘阵上划分 3 个 lun 给相应的服务器,映射到服务器后盘符也是以 sd* 开头且以盘阵的盘符为主(华为存储工程师这样解释的),本地磁盘直接就排到后面去了。
映射前磁盘
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000add9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 66 524288 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 66 458 3145728 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 458 2611 17300480 83 Linux
映射后磁盘
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000add9
Device Boot Start End Blocks Id System
/dev/sda1 * 1 66 524288 83 Linux
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000add9
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 66 524288 83 Linux
Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000add9
Device Boot Start End Blocks Id System
/dev/sdc1 * 1 66 524288 83 Linux
Disk /dev/sdz: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000add9
Device Boot Start End Blocks Id System
/dev/sdz1 * 1 66 524288 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdz2 66 458 3145728 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sdz3 458 2611 17300480 83 Linux
这样会导致什么问题呢?接着后面部署应用程序需要挂载映射磁盘,类似于下面的操作
mount /dev/sda1 /data/a
mount /dev/sdb1 /data/b
mount /dev/sdc1 /data/c
到目前为止,程序都是能正常运行的。突然放服务器的地方关电了,后面却又来电了。现在的这情况是这样的,华为的 RH5885 V2 这款服务器自动启动了,盘阵并没有启时,这时相关人员去启动盘阵,一段时间过后服务器上的应用程序使用不了。
导致上面问题出现的原因是有几点:
第一点:正常情况下应先启动盘阵再启动服务器。当服务器先启动时,可以把服务器正常关机,然后启动盘阵再启动服务器,这样应用能正常使用。
说明:这里为什么说正常关机,当时操作人员是直接按的服务器前关机按钮,然后启动盘阵再启动服务器。结果服务器进入不了系统,因为 grub.conf 文件的丢失了(这种不是经常发生,结果运气好让咱给遇上了, 后面接着修复完 grub.conf,正常进入系统)
第二点:当使用了盘阵的情况下,可以关闭服务器的加电自启动功能,华为的这款 RH5885 V2 服务器,在管理端口上才能关闭这个功能。后面先启动盘阵再启动服务器,这样应用能正常使用。
第三点:多路径映射时是不是能设置映射的盘符,例如映射过来的盘符不要以 sd* 开头(华为工程师当时给的答复不能改,宏杉的盘阵映射后就不是以 sd 开头,所以个人认为是可以改的),后面与华为工程师沟通, 通获取映射盘符的 UUID,在 /etc/fstab 中绑定方式来处理:
1、获取映射盘符的 UUID 与文件系统格式的方式
这里映射盘符为 sda1、sdb1、sdc1,本地磁盘为 sdz
blkid /dev/sda1
8e8265ce-f9cc-46e0-a952-14fa7a36862c
blkid /dev/sdb1
8e8265ce-f9cc-46e0-a952-14fa7a36863c
blkid /dev/sdc1
8e8265ce-f9cc-46e0-a952-14fa7a3686dc
2、在 /etc/fstab 文件中添加映射磁盘的挂载
这样即服务器先启动,盘阵后启动挂载映射磁盘的顺序也不会乱,因为 sda 已经空出来了。
UUID=8e8265ce-f9cc-46e0-a952-14fa7a36862c /dev/sdb1 ext4 defaults 0 0
UUID=8e8265ce-f9cc-46e0-a952-14fa7a36863c /dev/sdc1 ext4 defaults 0 0
UUID=8e8265ce-f9cc-46e0-a952-14fa7a3686dc /dev/sdd1 ext4 defaults 0 0
3、后面部署应用程序挂载映射磁盘到目录
mount /dev/sdb1 /data/a
mount /dev/sdc1 /data/b
mount /dev/sdd1 /data/c
4、也可以直接在 fstab 文件中添加挂载映射磁盘到目录 (未测试)
UUID=8e8265ce-f9cc-46e0-a952-14fa7a36862c /data/a ext4 defaults 0 0
UUID=8e8265ce-f9cc-46e0-a952-14fa7a36863c /data/b ext4 defaults 0 0
UUID=8e8265ce-f9cc-46e0-a952-14fa7a3686dc /data/c ext4 defaults 0 0
更多 RedHat 相关信息见 RedHat 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=10