分类 主机系统 下的文章

  linux配置网卡聚合,之前写过一篇文章,但是需要手动配置,Redhat和Centos操作系统双网卡绑定,现在我花时间写了一个脚本,内置各种逻辑判断,大家在使用过程中遇到问题,或者有什么建议请加我微信(微信二维码在文章页面底部),互相交流学习!

Linux下交互式多路径自动化配置脚本发布

备注:如果你下载了之前的脚本,请删除,下载最新的!

脚本功能:

    1,支持中英文选择
    2,支持CentOS 6.x/7.x/8.x RedHat 6.x/7.x/8.x
    3,支持bond和team两种绑定模式
    4,更多支持,等你发现!

3月14日更新:

1,增加网卡选择逻辑,如果选择不存在的网卡,则给出提示,并退出!
2,美化部分界面及提示!

判断逻辑很多,我只提供了部分截图:

初始配置bond聚合时:

78221-rk4dg6n5o1.png

13684-m28j7w8zwwl.png

62751-b8tl4j1qtzo.png

系统已有聚合时:

16725-k4f6bn5fj9g.png

存在bond聚合时配置team聚合

62022-zke999lbzgl.png

54918-lh4hjc2u4o.png

[scode type="blue"]创作脚本不易,打赏后获取脚本下载链接!获取后加我微信,后续更新版本,会通过微信传递[/scode]

System X及ThinkServer驱动及微码

1 https://www-945.ibm.com/support/fixcentral
2 http://support.lenovo.com/us/zh/GlobalProductSelector?C=1&TabName&linkTrack#
3 http://support.lenovo.com.cn/lenovo/wsi/es/x86.html
4 https://filedownload.lenovo.com/supportdata/index.htmThinkServer
5 http://support.lenovo.com.cn/lenovo/wsi/Modules/DriverDownLoadServer.aspx

System X及ThinkServer保修查询

System X

1 http://support.lenovo.com.cn/lenovo/wsi/es/x86.html
2 https://support.lenovo.com/us/zh/systemxwarrantylookup
3 http://support.lenovo.com.cn/EsWeb/

ThinkServer

1 http://support.lenovo.com.cn/lenovo/wsi/Modules/newbxpz.aspx#

联想企业级DCSC在线配置

http://dcsc.lenovo.com

ThinkServer 手册参考网站

http://psref.lenovo.com/

Fod授权申请地址

https://fod.lenovo.com/lkms/angular/app/pages/index.htm#/welcome

联想服务器操作系统支持列表

https://datacentersupport.lenovo.com/cn/zh/solutions/server-os

联想Linux yum库

https://linux.lenovo.com/yum/

联想服务器电源配置

1 https://support.lenovo.com/us/zh/documents/lnvo-powinf
2 https://datacentersupport.lenovo.com/us/zh/solutions/ht504651

联想企业级产品安装与维护指南

System X          http://systemx.lenovofiles.com/help/index.jsp
Flex system        http://flexsystem.lenovofiles.com/help/index.jsp
NextScale         http://nextscale.lenovofiles.com/help/index.jsp
Toolscenter        http://toolscenter.lenovofiles.com/help/index.jsp
Thinksystem        http://thinksystem.lenovofiles.com/help/index.jsp?topic=%2Fcom.lenovo.thinksystem.common.nav.doc%2Fic-homepage.html
Systems Management    http://sysmgt.lenovofiles.com/help/index.jsp

联想硬件兼容性地址

https://static.lenovo.com/us/en/serverproven/index.shtml

ServerGuide引导盘

1 https://support.lenovo.com/us/zh/solutions/HT115046
2 https://www.ibm.com/support/home/docdisplay?lndocid=SERV-GUIDE

联想bomc程序下载地址

https://support.lenovo.com/us/zh/solutions/HT115048

联想Xclarity下载地址

服务器端:https://datacentersupport.lenovo.com/us/zh/products/solutions-and-software/software/lenovo-xclarity/solutions/HT116184
手机客户端:https://www.lenovo.com/us/en/data-center/software/systems-management/XClarity-Administrator/p/WMD00000366.

联想服务器工具中心

https://support.lenovo.com/us/zh/solutions/lnvo-center

MegaRAID存储管理器(MRSM)

https://support.lenovo.com/us/zh/solutions/migr-5073015

环境:ONTAP 9.6 AD:Windows 2016

  要求:公司购买一台dm3000h,跑nas存放资料,三个部门,每个部门都需要单独的文件夹,部门之间无法互相访问,并且部门成员只有使用共享文件夹的权限,无共享配置权限。部门内部,不同的成员权限不同。

存储初始化以及创建SVM参考博客内的文章,此次主要以权限配置为主。

CIFS如何加域,参考这里LenovoNetapp ONTAP Select系列教程(四)之配置SMB/CIFS

一,配置基本环境

1,创建部门组织单位,分别是:Finance DepartmentSales DepartmentTechnology Department,每个组织单位包含一个组,每个组下有不同人数的成员。各部门的成员加入各自组织单位下的组。

12429-aioxtt0yt9.png

财务部成员

36207-yi9o8yldmz.png

销售部成员

03723-5bk5uc6abu.png

技术部成员

28585-m9tfaj2i5d.png

2,创建各部门的共享文件夹,分别是financesalestechnology

27852-d95261h2kf.png

3,打开域控用户管理器,点击Computers,选中CIFS服务器,右键,点击管理。

08928-5u9l6rlgjvu.png

出现cifs服务器上配置的3个共享文件夹

68861-csys82y1l4i.png

4,右键单击finance文件夹,点击属性,点击安全标签,单击右下角高级,弹出高级安全设置窗口,

61829-a4vchi405v.png

点击左下角添加,单击选择主体,输入组名称:Administrator,单击确定,

98360-jfybyg220qp.png

在基本权限中,单击完全控制,点击确定

51330-mcpxlgvdes.png

删除Everyone的权限,点击确定。这样域控的管理员有了对共享文件夹的完全控制权限

37734-fhqz9m5r407.png

5,单击共享权限标签,取消Everyone的完全控制权限

93600-41poo28gx4c.png

重复上述4-5步,配置其他共享文件夹权限

二,配置各部门的权限

1,在CIFS服务器管理界面中,打开finance文件夹属性,点击安全标签,单击高级,点击左下角添加,点击选择主体,输入:财务部,单击确定

70852-3b9si73jmjr.png

2,在权限配置栏中,选择相应的权限,此处,我给了除读取权限更改权限取得所有权之外的其他权限,正式环境中,根据需求选择即可,如需细分用户权限,看第三部分。

49380-5xuia5tbyd9.png

重复上述步骤设置salestechnology的权限

3,测试文件夹权限,由于篇幅关系,我只测试一个组。

登录财务部门的fduser002用户,在浏览器中打开\\cifs,出现三个部门的共享文件夹。

25858-847v85wtf1p.png

可以正常打开财务部所属的共享文件夹,正常新建,编辑,删除文件,正常新建,删除文件夹。

54566-p99y50ld84h.png

测试打开销售部门文件夹,提示无权限

82191-nylouf3ga1t.png

测试打开技术部门文件夹,提示无权限

91780-sw5l5w94bsf.png

测试用fduser002用户编辑文件夹权限,提示无权限

85515-6zxfvufi86d.png

三,配置独立用户权限

根据上述配置只能统一配置各部门权限,现在要求部门领导可以更改权限,某些用户无法删除文件等等要求。

要求:sduser001是部门领导,需要能更改权限,sduser002是实习生,不能随意删除文件。

1,在sales文件夹的权限中添加sduser001的权限为完全控制

64423-ua92zqnwpsa.png

2,在sales文件夹的权限中删除销售组,添加sduser002用户,取消删除权限,因为组的权限级别优先于用户,不删除组,用户权限继承于组,我这里用户就两个,如果用户较多,那么相同的权限放到同一组,不同的权限建立不同的组,这样只加入组即可,不用一个一个的添加用户设置权限

47232-dexv4osij9a.png

3,在共享权限标签中,添加sduser001,权限为完全控制

94234-mopkde5wbte.png

4,测试权限

sduser001可以正常编辑权限,赋予user001账号所有权限。

48683-qfs7bcgjhr.png

sduser002 无法删除文件和文件夹

34269-ptgcyekg6xo.png

  200台服务器,已经安装完系统了,现在需要配置每台服务器的带外硬件管理地址。200台服务器分发到100个站点,每个站点的IP地址、掩码、网关都不一样,手工改的话,一台平均下来至少需要10分钟。此文基于服务器已经安装好操作系统的前提下,系统Centos7.6,本地yum已配置,因为这200台是用脚本批量安装的,都用脚本配置好了本地yum。

这里分享我的思路,用到的工具包括expect,ipmitool。用expect无人交互工具,把配置BMC地址的脚本批量上传到所有服务器,然后再批量登录每台主机,执行脚本,脚本会根据当前服务器的序列号,查找预定义的IP信息,自动配置IP地址。

1,统计所有主机序列号以及每个站点的bmc 地址信息,文件名称自定义bmcip,内容格式如下:

#主机序列号    地址 掩码 网关    每一项之间用空格隔开。
419203764 172.16.125.2 255.255.255.240 172.16.125.1
419203769 172.16.125.1 255.255.255.240 172.16.125.1
419203751 172.16.126.178 255.255.255.240 172.16.126.177
419203811 172.16.126.179 255.255.255.240 172.16.126.177
419203755 172.16.125.18 255.255.255.240 172.16.125.17

2,编写在每台主机上要执行的脚本,需要安装修改bmc地址用到的ipmitool。然后根据本机的序列号来筛选预定义的IP信息,再进行配置。ipmi.sh内容如下:

#!/bin/bash
#通过yum安装ipmitool
yum install -y ipmitool
#定义当前主机的序列号变量
SN=`dmidecode -t 1 |grep "Serial Number" |awk -F ": " '{print $2}'`
#根据当前主机的序列号在bmcip中筛选查找所对应的ip地址
ip=`cat /tmp/bmcip |grep $SN |awk -F " " '{print $2}'`
#根据当前主机的序列号在bmcip中筛选查找所对应的掩码
netmask=`cat /tmp/bmcip |grep $SN |awk -F " " '{print $3}'`
#根据当前主机的序列号在bmcip中筛选查找所对应的网关
gateway=`cat /tmp/bmcip |grep $SN |awk -F " " '{print $4}'`
#配置bmc为静态模式
ipmitool lan set 1 ipsrc static
#配置bmc地址
ipmitool lan set 1 ipaddr $ip
#配置bmc掩码
ipmitool lan set 1 netmask $netmask
#配置bmc网关
ipmitool lan set 1 defgw ipaddr $gateway

3,在管理机器上安装expect 和nmap工具,然后用nmap 扫描在线的主机,形成host_ip文件,记得排除管理机IP和交换机等IP

nmap -sP 192.168.70.1/24 > host_ip

host_ip内容格式如下:

192.168.70.11
192.168.70.12
192.168.70.13
192.168.70.14
192.168.70.15
192.168.70.16
192.168.70.17
192.168.70.18
192.168.70.19
192.168.70.22
192.168.70.23
192.168.70.24

4,编写批量上传文件的脚本和执行命令的脚本bmc.sh内容如下

#!/bin/bash
#在host_ip中循环列出所有的目标IP
for row in `cat host_ip | awk -F " " '{print $1}'`
  do
#定义IP变量
ip=`echo ${row} | awk -F " " '{print $1}'`
#上传ipmi.sh到所有目标主机
/usr/bin/expect <<-EOF
spawn scp /var/www/html/script/ipmi.sh $ip:/tmp/
expect {
        "yes/no" {send "yes\r";exp_continue}
        "password: " {send "admin@123\r";exp_continue}
    }
EOF
 done
for row in `cat host_ip | awk -F " " '{print $1}'`
  do
#定义IP变量
ip=`echo ${row} | awk -F " " '{print $1}'`
#上传bmcip到所有目标主机
/usr/bin/expect <<-EOF
spawn scp /var/www/html/script/bmcip $ip:/tmp/
expect {
        "yes/no" {send "yes\r";exp_continue}
        "password: " {send "admin@123\r";exp_continue}
        }
EOF
done
    for row in `cat host_ip | awk -F " " '{print $1}'`
  do
#定义IP变量
ip=`echo ${row} | awk -F " " '{print $1}'`
#在host_ip中的每个主机中依次执行下面的命令,无需人工干预,全部无交互
/usr/bin/expect <<-EOF
spawn ssh root@$ip
expect {
        "yes/no" {send "yes\r";exp_continue}
        "password: " {send "admin@123\r";exp_continue}
         }
set timeout -1
expect "*#"
send "chmod +x /tmp/ipmi.sh\r"
expect "*#"
send "/tmp/ipmi.sh\r"
expect "*#"
send "exit\r"
expect eof
EOF
done

在管理机上执行bmc.sh即可,bmc.shhost_ip须在同一目录下

  客户采购200台联想服务器,现在需要安装系统, 一台一台的用优盘安装,显然不是最佳办法,PXE安装肯定是首选,但是还是得一台一台配置阵列,这样,明显效率不高。我百度、谷歌了下,发现pxe下可以配置阵列,但是都比较复杂,大致思路都是先用一个类似于live os引导进去,先执行相应的命令,然后再重启。再次引导pxe 进行安装,这显然也很麻烦,我整理了一套非常简单的方法。

原理:利用kickstart文件中的pre执行命令,在安装前调用阵列卡的配置程序,用命令配置阵列。配置完阵列,然后安装系统,都不用重启,也不用引导精简版的Linux。

安装PXE服务器的文档,充斥在全网的各个角落,我就不写了,我这里只贴出我的配置文件作为参考

1,dhcp配置文件

option space PXE;
option PXE.mtftp-ip    code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option client-system-arch code 93 = unsigned integer 16;
allow booting;
allow bootp;
default-lease-time 3600;
max-lease-time 21600;
subnet 192.168.70.0 netmask 255.255.255.0{
    range 192.168.70.10 192.168.70.200;
    option routers 192.168.70.1;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.70.2;
if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
filename "uefi/bootx64.efi";
} else {
filename "pxelinux.0";
}
}
}

2,kickstart配置文件

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use network installation
url --url="http://192.168.70.1/centos76/"
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard 'us'
# System language
lang zh_CN.UTF-8
#config raid
%pre
wget http://192.168.70.1/rdconfig/rdconfig.sh
cp rdconfig.sh /tmp/
chmod a+x /tmp/rdconfig.sh
/tmp/rdconfig.sh
sleep 12
%end
# Network information
network  --bootproto=dhcp --onboot=on --noipv6
network  --hostname=server
# Reboot after installation
reboot
# Root password
rootpw --iscrypted $6$sgwDN64lfSiJ2b01$Q3k/pI26guRqkmTu14gn1T6auyqYSPTvxQJUValIdAQv7eHEiXbjjBgpMahTJbUCr1sGC3sq0DQnTPp985IUd1
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai
user --name=admin --password=$6$Co8MpRTqRc1LZ2CY$hWwoGvJ1xzFmYDPeZPTx9HIY/zrXpud6LMRLYfbg..RhMSYybpB8Y2Pz/qRlu4MOl3Q1h68OSfFsXnP.eTU6Z. --iscrypted --gecos="admin"
# X Window System configuration information
xconfig  --startxonboot
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot/efi --fstype="efi" --ondisk=sda --size=500 --fsoptions="umask=0077,shortname=winnt"
part /boot --fstype="xfs" --ondisk=sda --size=1024
part pv.168 --fstype="lvmpv" --ondisk=sda --grow --size=1
volgroup centos --pesize=4096 pv.168
logvol swap  --fstype="swap" --size=20480 --name=swap --vgname=centos
logvol /  --fstype="xfs" --size=204800 --name=root --vgname=centos
logvol /data  --fstype="xfs" --name=data --vgname=centos --grow --size=1
#Accept license
eula --agreed
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
#config yum
%post
wget http://192.168.70.1/script/script.sh
cp script.sh /tmp/
chmod a+x /tmp/script.sh
/tmp/script.sh
rm -fr /tmp/script.sh
%end

3,rdconfig配置文件 配置raid

wget http://192.168.70.1/rdconfig/storcli /
sleep 3
cp /storcli /usr/bin
chmod +x /usr/bin/storcli
sleep 3
storcli /c0 add vd type=raid5 size=all names=raid5 drive=62:0-6
sleep 3
storcli /c0/e62/s7 add hotsparedrive

4,自动配置yum脚本

#!/bin/bash
#mount nfs
mkdir /yumdata
mkdir /tmp/nfs
mount -t nfs 192.168.70.1:/iso /tmp/nfs
cp -vr /tmp/nfs/centos76/* /yumdata
#config yum
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak
> local.repo
cat >> local.repo << "EOF"
[local]
name=local
baseurl=file:///yumdata
enabled=1
gpgcheck=0
EOF
umount /tmp/nfs

5,grub.cfg 配置文件

set default="0"
function load_video {
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod all_video
}
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=10
### END /etc/grub.d/00_header ###
search --no-floppy --set=root -l 'CentOS 7 x86_64'
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install CentOS 7.6' --class fedora --class gnu-linux --class gnu --class os {
    linuxefi uefi/vmlinuz inst.repo=http://192.168.70.1/centos76/ inst.ks=http://192.168.70.1/kscfg/ct76ks.cfg 
    initrdefi uefi/initrd.img
    }

备注:配置阵列的命令中用到的eid 和sid 需要提前查看。配置好脚本,服务器开机等着就行,kickstart还能干更多的事,来简化配置工作。

  之前写过 Linux下bcache安装测试的文章 Linux下SSD缓存加速之bcache试用,还是那个重要客户,要求横向对比ssd缓存加速的方案,客户特别钟情于intel cas,但是cas不再更新,无法支持SUSE 12SP4,而cas从去年开始已经开源,我在suse 12sp4 下编译测试开源open cas的时候,出现很多问题,经多方辗转,联系到了intel 官方人员,配合联想后台实验室的高级工程师,共同在suse 12 sp4下编译了open-cas软件,我在这里记录下,防止忘记。

open-cas开源项目地址:https://github.com/Open-CAS/open-cas-linux

在suse 12sp4下正常使用cas 需要升级内核,默认自带的内核不具备cas 所使用的头文件

1,升级内核

内核下载地址:https://mirrors.edge.kernel.org/pub/linux/kernel/

此次下载linux-4.14.125,选用编译安装升级方法

11580-pjvcmuoijh.png

安装升级内核所需的工具

zypper in make gcc* kernel-devel kernel-headers openssl-devel ncurses-devel git-core

将下载的 kernel 源码包拷贝到/usr/src/目录,解压
cd 进入到解压后的目录
将原本 kernel 的 config 文件拷贝到当前目录

cp /boot/config-xxxxxxx-default .config

执行make menuconfig在弹出界面先 load 刚刚拷过来的 .config,然后 save(熟悉kernel 编译的话也可以根据需要调整相关的参数后再 save),然后 exit,exit

22723-2pimo6tl04z.png

执行make -j8 (本次测试用的服务器 lscpu 看到的 cpu 核心数为8,如果不加-j 参数的话使用单线程编译,会很慢)

编译完,然后执行下面的命令

make modules
make modules_install
make install

执行完上述命令以后,重启即可

查看编译好的内核,已经升级到4.14.125

98716-qzc8487vbhd.png

2,编译安装open-cas

git clone https://github.com/Open-CAS/open-cas-linux
cd open-cas-linux
git clone https://github.com/Open-CAS/ocf.git
./configure
make -j8

67401-jdkqdy7mlk.png

编译的结果正常,没有任何报错

68983-ydfzccny1a.png

make install

06401-r4j7bkib2oc.png

根据报错提示,把编译好的 cas_cache.ko cas_disk.ko 两个驱动文件拷到对应的目录,并赋予执行权限

cp modules/cas_cache/cas_cache.ko /lib/modules/4.14.125-94.41-default/
cp modules/cas_disk/cas_disk.ko /lib/modules/4.14.125-94.41-default/
cd /lib/modules/4.14.125-94.41-default/
chmod +x cas_disk.ko cas_cache.ko

37647-tuhc8q4wfji.png

再次make install,编译安装成功

47126-gfkyduisvw4.png

open-cas版本信息

08278-aatxq31zv5o.png

3,配置open-cas

有两种配置cas 的方式,一种是手动,需要手动输入命令,另一种是自动配置,即开机自动初始化cas。

A,手动配置

先查看casadm 帮助命令

61479-p4jfxwff9z.png

查看磁盘

79025-jvhmte30c8.png

nvme作为缓存,sdb作为数据盘,open-cas方案中,缓存盘是cache,数据盘是core

配置缓存盘

casadm -S -i 1 -d /dev/nvme0n1 -c wb

上述命令是把/dev/nvme0n1这块SSD作为cas缓存实例id为1的缓存盘,cache-mode是write-back

29468-0fp4ohvzfpl.png

casadm -A -i 1 -d /dev/sdb

上述命令是把/dev/sdb这块数据盘添加到实例id 为1的cas 缓存下

81906-8fq8pox3jow.png

查看当前配置好的缓存实例

79392-6m836zme0cl.png

继续添加一块数据盘

casadm -A -i 1 -d /dev/sdc

40807-32730yrxzto.png

查看当前缓存实例的运行状态,可以查看缓存命中率,以及缓存中的数据量

casadm -P -i 1

62033-8l2cqpz5flt.png

10046-bzbmdsp3h2a.png

查看当前磁盘分区结构,使用也很简单,格式化cas1-1 cas1-2即可,然后挂载。

82097-jug32jgxscn.png

70584-kbtvcpetacd.png

fio 测试结果,性能提升的数据相当漂亮

fio -filename=/dev/cas1-1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=20G -numjobs=10 -runtime=60 -group_reporting -name=mytest

04908-p03y4kauozn.png

上述的使用过程都是手动创建,服务器重启以后配置就会丢失,如果需要开机自动配置且配置不丢失则需要配置cas 的全局配置文件

B,开机自动配置

查看磁盘wwn id

ll /dev/disk/by-id

99679-sh6hhjapoe.png

cd /etc/opencas
ls

59242-veu7r9o29dc.png

vi opencas.conf

83553-lr1q8yun38.png

casctl init 初始化cas,提示下面的报错信息,经查证,得知需要python3.6.7及以上的版本,而系统自带的是3.4.6

62084-e20bxdkv6x.png

升级系统默认自带的python3到python3.6.9

先编译安装python3需要的zlib文件

linux-strt:~ # 
linux-strt:~ # cd zlib-1.2.11/
linux-strt:~/zlib-1.2.11 # ./configure
linux-strt:~/zlib-1.2.11 # make
linux-strt:~/zlib-1.2.11 # make install
linux-strt:~/zlib-1.2.11 # 

然后编译安装python3.6.9

mkdir /usr/local/python369
tar -zxvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --prefix=/usr/local/python369
make
make install

备份系统自带的python3,然后链接新的文件

mv /usr/bin/python3 /usr/bin/python3.bak
ln -s /usr/local/python369/bin/python3 /usr/bin/python3

81280-qjs8rd3kt5a.png

继续初始化casctl init

73797-403cdub6x9n.png

参考链接:https://open-cas.github.io/guide_installing.html

  最近接触一台联想的高密度服务器,D2机箱里面有四个sd530节点,通过D2机箱后置的管理口登录,只能管理随机的一个节点,因为四个节点的管理IP地址都是192.168.70.125,如果通过关机等办法,也能确定每个节点,但是这样耗时耗力,也不是IT人干的事,好在D2机箱自带统一管理功能,但是出厂默认是禁用的,需要手动开启,我在这里记录下。

D2机箱的统一管理模块叫SMM,类似于刀箱Flex的CMM。

61425-hy1c8wrsu8f.png

SMM的管理协议默认是关闭的,开启它需要用到ipmitool。

有关命令如下

• 查询:

ipmitool -I lanplus -H <XCC’s IP> -U USERID -P PASSW0RD raw 0x3A 0xF1 0x00

• 启用:

ipmitool -I lanplus -H <XCC’s IP> -U USERID -P PASSW0RD raw 0x3A 0xF1 0x01

• 禁用:

ipmitool -I lanplus -H <XCC’s IP> -U USERID -P PASSW0RD raw 0x3A 0xF1 0x02

只需要用到第二条开启的命令

78905-rbw25p8s2f.png

SMM端口首次DHCP,如果 SMM 无法在2分钟内从DHCP服务器获取IP,它将使用静态IP

SMM的缺省静态IP是192.168.70.100 和flex 的CMM一样

92075-jz5ojujzve.png

浏览器中打开https://192.168.70.100

51794-3xo4vc20c62.png

更改默认密码

缺省密码复杂性规则:
• 长度至少为 10 个字符
• 必须包含至少一个数字(0 到 9)
• 必须包含以下三个类别中的至少两个类别:
– 大写字母(A 到 Z)
– 小写字母(a 到 z)
– 非字母字符,例如 !@#$%^*-_+=().:`|?"\

06896-fef8izzs83.png

登录到SMM管理界面,在这里可以很方便的打开任何一个节点的管理界面。

00477-tuau80g669.png

共有六个功能选项卡:
• Summary(摘要)
• Power(电源)
• Cooling(散热)
• System Information(系统信息)
• Event Log(事件日志)
• Configuration(配置)

79249-7pai9i3oo6v.png

一重要客户,要求投标方提供SSD做缓存加速的方案,并提供测试报告。刚开始选择INTEL CAS,客户要求是SUSE系统,而INTEL CAS从去年8月就不再更新,只能支持到SUSE 12SP3,而客户要求操作系统必须是SUSE 12 SP4,所以不得不重新选择方案。

INTEL CAS软件支持的操作系统版本:

22692-2meethye62y.png

在Linux下,使用SSD为HDD加速,目前较为成熟的方案有:flashcache,enhanceIO,dm-cache,bcache等,多方面比较以后最终选择了bcache。

bcache 是一个 Linux 内核块层超速缓存。它允许使用一个或多个高速磁盘驱动器(例如 SSD)作为一个或多个速度低得多的硬盘的超速缓存。bcache 支持直写和写回,不受所用文件系统的约束。默认情况下,它只超速缓存随机读取和写入,这也是 SSD 的强项。它还适合用于台式机、服务器和高端储存阵列

主要功能:

1,可以使用单个超速缓存设备来超速缓存任意数量的后备设备。在运行时可以挂接和分离已装入及使用中的后备设备。
2,在非正常关机后恢复 - 只有在超速缓存与后备设备一致后才完成写入。
3,SSD 拥塞时限制传至 SSD 的流量。
4,高效的写回实施方案。脏数据始终按排序顺序写出。
5,稳定可靠,可在生产环境中使用。

关于bcache的更多介绍都在这里

https://bcache.evilpiepirate.org/
https://wiki.archlinux.org/index.php/Bcache
https://www.suse.com/zh-cn/documentation/sles-12/stor_admin/data/sec_multitiercache_bcache.html

CentOS和Ubuntu都可以使用bcache。我是在suse下安装的,记录下,防止忘记。

1,配置suse 下的zypper本地安装源

zypper ar file:///yumdata local
ar :添加安装源
file:///yumdata suse安装镜像的路径
local zypper安装源的名称

zypper更多参数介绍:

lr 列出所有定义的安装源。
ar 添加一个新的安装源。
rr 删除指定的安装源。
nr 重命名指定的安装源。
mr 修改指定的安装源。
ref 刷新所有安装源。
clean 清除本地缓存。

04377-d6hy4gouqoj.png

查看zypper安装源

91835-jvw3v83pg1.png

2,安装bcache软件

zypper install bcache-tools

71845-0crdy73q3e9w.png

3,加载内核

modprobe bcache
lsmod |grep bcache

有如下输出内容,说明内核加载成功

27438-rsk9t7hln3c.png

查看当前磁盘:三个2TB HDD,一个400GB NVME SSD

31740-tkdttgv6kb.png

4,绑定SSD和HDD

bcache有两种设备,一个是backing,一个是cache,backing指的就是存放数据的后端磁盘,cache很好理解,就是高速缓存盘SSD
bcache 可以支持将用来做缓存的ssd和做数据存放的hdd一次性注册,而不需要手动连接挂载ssd和hdd

make-bcache -B /dev/sdb /dev/sdc /dev/sdd -C /dev/nvme0n1

57261-aswtdc31ev5.png

5,查看bcache相关信息

lsblk

82255-ydvgoycymgh.png

cat /sys/block/bcache0/bcache/state
no cache:该backing device没有attach任何caching device
clean:一切正常,缓存是干净的
dirty:一切正常,已启用回写,缓存是脏的
inconsistent:遇到问题,后台设备与缓存设备不同步

49969-bkys5c3wn1j.png

查看缓存数据量

cat /sys/block/bcache0/bcache/dirty_data

81559-sitz99x9c.png

查看缓存模式,默认情况下是直通超速缓存模式

cat /sys/block/bcache0/bcache/cache_mode

28766-3pbpdfh1d63.png

6,为了提高写的性能,需要修改缓存模式为写回

echo writeback > /sys/block/bcache0/bcache/cache_mode

36891-bf043px9oh8.png

7,格式化使用

mkfs.xfs /dev/bcache0
mkdir /cache
mount /dev/bcache0 /cache

8,开机自动挂载

由于bcache设备在每次重启后,N的值并不是固定的,有可能重启后,原先的bcahe0变为bcache1,而bcache1却变成了bcache0,。所以,不能将/dev/bcache作为磁盘挂载,需要使用该磁盘的UUID进行挂载,通过以下命令可以获取磁盘的UUID

blkid /dev/bcache0

00213-00fv9ya05jnnv.png

然后将uuid写入/etc/fstab 实现开机自动挂载

9,使用fio测试性能

先安装编译工具。

zypper install make gcc* kernel-devel kernel-headers

53161-nghlkwarb5h.png

下载fio 编译安装。fio下载连接:http://brick.kernel.dk/snaps/

linux-be3v:~ # cd fio-3.15/
linux-be3v:~/fio-3.15 # ./configure
linux-be3v:~/fio-3.15 # make
linux-be3v:~/fio-3.15 # make install

10,测试有缓存

fio -filename=/dev/bcache0 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=200G -numjobs=10 -runtime=60 -group_reporting -name=mytest

86413-2h2uu2vtbsv.png

11,测试无缓存

fio -filename=/dev/sdb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=200G -numjobs=10 -runtime=60 -group_reporting -name=mytest

16572-pl1767ln86.png

后附常用bcache命令

1,查看cache 缓存盘的CACHE_SET_UUID

    ll /sys/fs/bcache

2,注销缓存盘

通过缓存盘的CACHE_SET_UUID,在/sys/fs/bcache/<cset.uuid>/unregister写入1,即可进行注销

    echo 1 >/sys/fs/bcache/06e33354-7c21-4c52-990d-1a653617ab20/unregister

3,停用后端磁盘

    echo 1 > /sys/block/sdb/bcache/stop
    echo 1 > /sys/block/sdc/bcache/stop

4,把 cache 上面的数据刷到后端磁盘上面

    echo 0 > /sys/block/bcache0/bcache/writeback_percent

5,fio测试工具常用参数说明

filename=/dev/sdb        测试文件名称,通常选择需要测试的盘的data目录。
direct=1                 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite             测试随机写的I/O
rw=randrw                测试随机写和读的I/O
bs=16k                   单次io的块文件大小为16k
bsrange=512-2048         同上,提定数据块的大小范围
size=5g    本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30               本次的测试线程为30.
runtime=1000             测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync           io引擎使用pync方式
rwmixwrite=30            在混合读写的模式下,写占30%
group_reporting          关于显示结果的,汇总每个进程的信息
lockmem=1g               只使用1g内存进行测试。
zero_buffers             用0初始化系统buffer。
nrfiles=8                每个进程生成文件的数量

具体的安装过程参考联想ThinkSystem机器安装2008R2详细教程

这里强调以下注意事项:

2008R2的版本必须是SP1,在集成驱动过程中关闭所有的安全软件
此次阵列卡驱动包含730-8i 2GB 
二代处理器的性能计数器也可以正常驱动

此次驱动包适用于以下阵列卡

ThinkSystem RAID 530-8i PCIe 12Gb Adapter
ThinkSystem RAID 730-8i 1GB Cache PCIe 12Gb Adapter
ThinkSystem RAID 730-8i 2GB Cache PCIe 12Gb Adapter
ThinkSystem RAID 930-8i 2GB Flash PCIe 12Gb Adapter
ThinkSystem RAID 930-16i 4GB Flash PCIe 12Gb Adapter
ThinkSystem RAID 930-24i 4GB Flash PCIe 12Gb Adapter
ThinkSystem RAID 930-8e 4GB Flash PCIe 12Gb Adapter
ThinkSystem RAID 930-4i 2GB Flash Flex Adapter
ThinkSystem RAID 530-4i Flex Adapter
ThinkSystem RAID 530-8i Dense Adapter

安装截图如下:

36242-7mdbv2zo1p3.png

58328-fxis634b92.png

17715-nr1hiwjz8vc.png

[scode type="blue"]打赏后获取驱动,有任何问题,加我微信![/scode]