RAID | 更新驅動


RAID | 更新驅動

背景

聯想SR650服務器采用的RAID卡 Ubuntu16不支持且PXE裝機環境也不支持,導致PXE無法自動裝機,即使ISO掛載方式裝Ubuntu16,也導致Ubuntu16無法開機掛載磁盤。

需要做如下2步:

  1. 先搞定PXE裝機環境驅動,這樣可以進行裝機操作;(自己編譯)
  2. 搞定Ubuntu16驅動,這樣裝機后可以正常掛載磁盤;(自己編譯或找廠商要)

因此需要在PXE系統版本的環境下編譯一個RAID驅動然后打上。
涉及機器2台:

  • 機器A:PXE裝機環境,基於busybox,運行在內存中,模塊基於centos7.5編譯的;
  • 機器B:臨時機器,用於搭建編譯環境,然后將編譯好的模塊拷貝到A上裝機。

操作步驟

查看RAID卡信息

lspci -nn | grep "SAS"

然后從官網或廠商查找相關驅動包

查看當前RAID驅動版本

# modinfo megaraid_sas
filename:       /lib/modules/3.10.0-862.el7.x86_64/kernel/drivers/scsi/megaraid/megaraid_sas.ko.xz
description:    Avago MegaRAID SAS Driver
author:         megaraidlinux.pdl@avagotech.com
version:        07.702.06.00-rh2 #當前版本
license:        GPL
retpoline:      Y
rhelversion:    7.5 #編譯的系統centos7.5
srcversion:     A19DC3530FA946F3FE5CCAD
alias:          pci:v00001000d0000001Csv*sd*bc*sc*i*
alias:          pci:v00001000d0000001Bsv*sd*bc*sc*i*
alias:          pci:v00001000d00000017sv*sd*bc*sc*i*
alias:          pci:v00001000d00000016sv*sd*bc*sc*i*
alias:          pci:v00001000d00000014sv*sd*bc*sc*i*
alias:          pci:v00001000d00000053sv*sd*bc*sc*i*
alias:          pci:v00001000d00000052sv*sd*bc*sc*i*
alias:          pci:v00001000d000000CFsv*sd*bc*sc*i*
alias:          pci:v00001000d000000CEsv*sd*bc*sc*i*
alias:          pci:v00001000d0000005Fsv*sd*bc*sc*i*
alias:          pci:v00001000d0000005Dsv*sd*bc*sc*i*
alias:          pci:v00001000d0000002Fsv*sd*bc*sc*i*
alias:          pci:v00001000d0000005Bsv*sd*bc*sc*i*
alias:          pci:v00001028d00000015sv*sd*bc*sc*i*
alias:          pci:v00001000d00000413sv*sd*bc*sc*i*
alias:          pci:v00001000d00000071sv*sd*bc*sc*i*
alias:          pci:v00001000d00000073sv*sd*bc*sc*i*
alias:          pci:v00001000d00000079sv*sd*bc*sc*i*
alias:          pci:v00001000d00000078sv*sd*bc*sc*i*
alias:          pci:v00001000d0000007Csv*sd*bc*sc*i*
alias:          pci:v00001000d00000060sv*sd*bc*sc*i*
alias:          pci:v00001000d00000411sv*sd*bc*sc*i*
depends:
intree:         Y
vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload #內核版本 modversions
signer:         CentOS Linux kernel signing key
sig_key:        3A:F3:CE:8A:74:69:6E:F1:BD:0F:37:E5:52:62:7B:71:09:E3:2B:96
sig_hashalgo:   sha256
parm:           lb_pending_cmds:Change raid-1 load balancing outstanding threshold. Valid Values are 1-128. Default: 4 (int)
parm:           max_sectors:Maximum number of sectors per IO command (int)
parm:           msix_disable:Disable MSI-X interrupt handling. Default: 0 (int)
parm:           msix_vectors:MSI-X max vector count. Default: Set by FW (int)
parm:           allow_vf_ioctls:Allow ioctls in SR-IOV VF mode. Default: 0 (int)
parm:           throttlequeuedepth:Adapter queue depth when throttled due to I/O timeout. Default: 16 (int)
parm:           resetwaittime:Wait time in seconds after I/O timeout before resetting adapter. Default: 180 (int)
parm:           smp_affinity_enable:SMP affinity feature enable/disbale Default: enable(1) (int)
parm:           rdpq_enable: Allocate reply queue in chunks for large queue depth enable/disable Default: disable(0) (int)
parm:           dual_qdepth_disable:Disable dual queue depth feature. Default: 0 (int)
parm:           scmd_timeout:scsi command timeout (10-90s), default 90s. See megasas_reset_timer. (int)

搭建對應的編譯環境

  1. 查看當前內核版本uname -r
    3.10.0-514.el7.x86_64
  2. 下載內核:
    • kernel-3.10.0-862.el7.centos.x86_64.rpm
    • kernel-devel-3.10.0-862.el7.x86_64.rpm
  3. 更新內核
    yum install kernel-3.10.0-862.el7.centos.x86_64.rpm
  4. 安裝完畢后檢查
    rpm -qa | grep kernel
kernel-tools-3.10.0-514.el7.x86_64
kernel-devel-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.el7.x86_64
kernel-headers-3.10.0-514.el7.x86_64
kernel-3.10.0-862.el7.centos.x86_64
  1. 查看grub啟動項awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.10.0-862.el7.centos.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-caa20f35d41640498c092c1c844ef4c9) 7 (Core)

862的版本位於位置0,因此修改vim /etc/default/grub
然后找到GRUB_DEFAULT=saved,將saved修改為內核位置,此處為0,則改為GRUB_DEFAULT=0

  1. 重建grubgrub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.centos.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.centos.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-caa20f35d41640498c092c1c844ef4c9
Found initrd image: /boot/initramfs-0-rescue-caa20f35d41640498c092c1c844ef4c9.img
  1. 重啟驗證uname -r

編譯驅動

  1. 解壓驅動包tar -zxvf megaraid_sas-07.712.02.00-src.tar.gz
  2. 進入目錄后執行./compile.sh
  3. 查看編譯好的megaraid_sas.ko文件
#modinfo ~/megaraid_sas.ko
filename:       /root/megaraid_sas.ko
description:    Broadcom MegaRAID SAS Driver
author:         megaraidlinux.pdl@broadcom.com
version:        07.712.02.00
license:        GPL
rhelversion:    7.5
srcversion:     C8328C2E3BFC8F1D2E39CC6
alias:          pci:v00001000d000010E7sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E4sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E3sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E0sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E6sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E5sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E2sv*sd*bc*sc*i*
alias:          pci:v00001000d000010E1sv*sd*bc*sc*i*
alias:          pci:v00001000d0000001Csv*sd*bc*sc*i*
alias:          pci:v00001000d0000001Bsv*sd*bc*sc*i*
alias:          pci:v00001000d00000017sv*sd*bc*sc*i*
alias:          pci:v00001000d00000016sv*sd*bc*sc*i*
alias:          pci:v00001000d00000015sv*sd*bc*sc*i*
alias:          pci:v00001000d00000014sv*sd*bc*sc*i*
alias:          pci:v00001000d00000053sv*sd*bc*sc*i*
alias:          pci:v00001000d00000052sv*sd*bc*sc*i*
alias:          pci:v00001000d000000CFsv*sd*bc*sc*i*
alias:          pci:v00001000d000000CEsv*sd*bc*sc*i*
alias:          pci:v00001000d0000005Fsv*sd*bc*sc*i*
alias:          pci:v00001000d0000005Dsv*sd*bc*sc*i*
alias:          pci:v00001000d0000002Fsv*sd*bc*sc*i*
alias:          pci:v00001000d0000005Bsv*sd*bc*sc*i*
alias:          pci:v00001028d00000015sv*sd*bc*sc*i*
alias:          pci:v00001000d00000413sv*sd*bc*sc*i*
alias:          pci:v00001000d00000071sv*sd*bc*sc*i*
alias:          pci:v00001000d00000073sv*sd*bc*sc*i*
alias:          pci:v00001000d00000079sv*sd*bc*sc*i*
alias:          pci:v00001000d00000078sv*sd*bc*sc*i*
alias:          pci:v00001000d0000007Csv*sd*bc*sc*i*
alias:          pci:v00001000d00000060sv*sd*bc*sc*i*
alias:          pci:v00001000d00000411sv*sd*bc*sc*i*
depends:
vermagic:       3.10.0-862.el7.x86_64 SMP mod_unload modversions
parm:           lb_pending_cmds:Change raid-1 load balancing outstanding threshold. Valid Values are 1-128. Default: 4 (int)
parm:           max_sectors:Maximum number of sectors per IO command (int)
parm:           msix_disable:Disable MSI-X interrupt handling. Default: 0 (int)
parm:           msix_vectors:MSI-X max vector count. Default: Set by FW (int)
parm:           allow_vf_ioctls:Allow ioctls in SR-IOV VF mode. Default: 0 (int)
parm:           throttlequeuedepth:Adapter queue depth when throttled due to I/O timeout. Default: 16 (int)
parm:           resetwaittime:Wait time in (1-180s) after I/O timeout before resetting adapter. Default: 180s (int)
parm:           smp_affinity_enable:SMP affinity feature enable/disable Default: enable(1) (int)
parm:           rdpq_enable:Allocate reply queue in chunks for large queue depth enable/disable Default: enable(1) (int)
parm:           dual_qdepth_disable:Disable dual queue depth feature. Default: 0 (int)
parm:           scmd_timeout:scsi command timeout (10-90s), default 90s. See megasas_reset_timer. (int)
parm:           crashdump_enable:Firmware Crash dump feature enable/disbale Default: enable(1) (int)
parm:           perf_mode:Performance mode (only for Aero adapters), options:
		0 - balanced: High iops and low latency queues are allocated &
		interrupt coalescing is enabled only on high iops queues
		1 - iops: High iops queues are not allocated &
		interrupt coalescing is enabled on all queues
		2 - latency: High iops queues are not allocated &
		interrupt coalescing is disabled on all queues
		default mode is 'balanced' (int)
parm:           event_log_level:Asynchronous event logging level- range is: -2(CLASS_DEBUG) to 4(CLASS_DEAD), Default: 2(CLASS_CRITICAL) (int)
parm:           disable_ext_io:Disable 1M IO support Default: 0(1M IO enabled) (int)
parm:           enable_sdev_max_qd:Enable sdev max qd as can_queue. Default: 0 (int)

此時可將該文件拷貝到A機器系統中進行驗證,可用insmod megaraid_sas.ko來查看

至此PXE自動裝機環境驅動搞定;

更新OS鏡像

將老的Ubuntu16裝機鏡像安裝到機器B上,然后將RAID驅動(非上面編譯的那個用於centos的驅動)打上

  1. 拷貝到系統驅動目錄
    cp megaraid_sas.ko /lib/modules/3.10.0-862.el7.x86_64/kernel/drivers/scsi/megaraid

  2. 更新內核模塊依賴關系depmod -a

  3. 然后PXE啟動進入無盤環境,將機器B上的系統刪減后重新打包tarball。

  4. 在機器A上進行安裝Ubuntu16進行測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM