首先晒一下机器:
IBM x3850 X5, CPU 共 32 核心 64 线程,内存 128G,300G 10k rpm SAS 两块,外接光纤通道存储,分配了 1TB。
我用 openSUSE 的目的: KVM 虚拟化,因为我能通过 Build Services 拿到较新/最新的内核。
从光盘启动后,看到的菜单与一般使用 BIOS 的计算机不同,只有三项,没有内存检测。
以下是详细内容:
1. 分区:选择 LVM 管理分区,默认配置下来,到了 Boot Loader 这一步,告诉我“Because of the partitioning, the boot loader cannot be installed properly.”。
默认配置的分区是这样的:156M 的 EFI Boot 挂载在 /boot/efi ,剩余空间新建了一个 280GB+ 的 VG,其中 root LV 给了 20G。
一路安装下来,进到系统里面,开 YaST 的 Boot Loader,问题依旧。其实也不影响正常使用,就是不爽。
遂重装,多次试验之后,LVM 之外单独划分 /boot 分区,问题消失。
2. 换内核:上面说到我是为了新内核采用 openSUSE 的,找到 Kernel::Stable,执行以下命令添加 repo
zypper ar --refresh http://download.opensuse.org/repositories/Kernel:/stable/standard Kernel:stable
为了给自己留条后路,万一新装的内核不好用呢?
参考 doc.opensuse.org/documentation/html/openSUSE/opensuse-tuning/cha.tuning.multikernel.html 开启多内核支持
列出所有内核:
zypper se -s kernel-default
安装新内核:
zypper in kernel-default-3.8.5-1.1
重启后自动使用新内核,验证:
uname -a
输出:Linux xxxxxx.xxx.edu.cn 3.8.5-1-default #1 SMP Thu Mar 28 23:15:30 UTC 2013 (2178322) x86_64 x86_64 x86_64 GNU/Linux
3. 光纤存储的多路径配置:
首先载入多路径的内核模块:
modprobe dm-multipath
查看系统中可配置的多路径设备:
multipath -v2 -d
参数释义:verbosity 2,dry-run
上面命令的输出:
# multipath -v2 -d
create: 3xxxxxxxxxxxxxxxxxxx undef IBM ,ServeRAID M5015
size=278G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef
`- 0:2:0:0 sda 8:0 undef ready running
create: 3xxxxxxxxxxxxxxxxxxx undef IBM ,ServeRAID M5015
size=929G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef
`- 0:2:1:0 sdb 8:16 undef ready running
create: 1HITACHI_XXXXXXXXXXX undef HITACHI ,DF600F
size=1000G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
|- 3:0:0:0 sdc 8:32 active ready running
`- 4:0:0:0 sdd 8:48 active ready running
结合系统实际情况和上述输出,sda 和 sdb 都是机内 RAID 硬盘,sdc 和 sdd 是外接存储的两条路径(multipath的由来),远程设备是日立 DF600F 阵列。
如果直接启用 multipath,比如说在系统安装分区时启用,则会造成混乱,包括两个机内硬盘也会作为 multipath 设备配置。我们并不想让这样的事情发生,所以要将两个硬盘加入 multipath.conf 中定义的“黑名单”中。
在 /etc 创建 multipath.conf 文件,仅包含以下内容,使用前请根据自己机器配置更改:
blacklist {
device {
vendor "IBM"
product "ServeRAID M5015"
}
}
详细的配置参考在 /usr/share/doc/packages/multipath-tools/multipath.conf.annotated
运行 multipath -v3 -d,在输出中可以看到:Apr 04 06:33:58 | (null): (IBM :ServeRAID M5015 ) vendor/product blacklisted。说明机内 RAID 卡上的硬盘已经被加入黑名单,不会对我们的配置产生干扰。
要使多路径服务正常运行,需要启用 multipathd 服务。步骤如下:
# systemctl enable multipathd # 下次开机自动启动服务
# systemctl start multipathd # 现在启动服务
# systemctl restart multipathd # 更改配置后需要重启服务
要使系统开机时能正确识别 multipath 设备,需要加载驱动到 initrd 中,有两种方法:
一 官方说明是在 /etc/sysconfig/kernel 中 INITRD_MODULES 中添加 dm-multipath,执行 mkinitrd
二 经过试验,完成上述配置后直接执行 mkinitrd 即可。要观察其输出的 Kernel Modules 中是否包含 dm-multipath 模块。
如果重启后出现 Found duplicate PV 字样,可修改 /etc/lvm/lvm.conf 中的 filter,我改成了这个样子:
filter = "a|/dev/sda.*|", "a|/dev/sdb|", "a|/dev/mapper/.*|", "r/.*/" ]
需要提醒的是,改了之后要运行 pvscan 和 lvscan,而且这个错误提示可以安全地忽略,不会影响系统运行。