麒麟(kylin)服务器硬件配置及管理

这篇稿子是同事总结的,自己存下来学习下,也分享给大家

目录

1 准备工作

2 探测OS运行环境

3 操作系统相关信息

4 服务器信息

5 BIOS信息

6 CPU信息

6.1 lscpu示例

6.2 具体每个flag缩写代表什么意思

7 内存信息

7.1 内存容量及插槽数

7.2 内存信息

8 存储信息

9 PCI设备信息

9.1 Ethernet网卡信息

9.2 FC-HBA信息

9.3 RAID信息

9.4 SATA信息

9.5 SAS控制器信息

9.6 USB控制器信息


1 准备工作

设置环境变量LANG,修改语言为英文:

export LANG=C

2 探测OS运行环境

使用systemd-detect-virt确定不是虚拟化环境。
已知的虚拟化技术(systemd 243):

      ┌──────────┬────────────────┬────────────────────────────────────────────┐
      │Type      │ ID             │ Product                                    │
      ├──────────┼────────────────┼────────────────────────────────────────────┤
      │VM        │ qemu           │ QEMU software virtualization, without KVM  │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ kvm            │ Linux KVM kernel virtual machine, with     │
      │          │                │ whatever software, except Oracle           │
      │          │                │ Virtualbox                                 │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ zvm            │ s390 z/VM                                  │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ vmware         │ VMware Workstation or Server, and related  │
      │          │                │ products                                   │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ microsoft      │ Hyper-V, also known as Viridian or Windows │
      │          │                │ Server Virtualization                      │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ oracle         │ Oracle VM VirtualBox (historically         │
      │          │                │ marketed by innotek and Sun Microsystems), │
      │          │                │ for legacy and KVM hypervisor              │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ xen            │ Xen hypervisor (only domU, not dom0)       │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ bochs          │ Bochs Emulator                             │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ uml            │ User-mode Linux                            │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ parallels      │ Parallels Desktop, Parallels Server        │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ bhyve          │ bhyve, FreeBSD hypervisor                  │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ qnx            │ QNX hypervisor                             │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ acrn           │ ACRN hypervisor[1]                         │
      ├──────────┼────────────────┼────────────────────────────────────────────┤
      │Container │ openvz         │ OpenVZ/Virtuozzo                           │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ lxc            │ Linux container implementation by LXC      │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ lxc-libvirt    │ Linux container implementation by libvirt  │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ systemd-nspawn │ systemd's minimal container                │
      │          │                │ implementation, see systemd-nspawn(1)      │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ docker         │ Docker container manager                   │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ podman         │ Podman[2] container manager                │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ rkt            │ rkt app container runtime                  │
      │          ├────────────────┼────────────────────────────────────────────┤
      │          │ wsl            │ Windows Subsystem for Linux[3]             │
      └──────────┴────────────────┴────────────────────────────────────────────┘

物理机输出如下:

# systemd-detect-virt
none

3 操作系统相关信息

  • 内核发行版本:
#uname -a
Linux localhost.localdomain 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
  • 产品名称:
#cat /etc/.productinfo
Kylin Linux Advanced Server
release V10 (SP2) /(Sword)-aarch64-Build09/20210524
  • 架构(以下方法中任意一种):
#uname -m
aarch64
#uname -p
aarch64
#arch
aarch64

4 服务器信息

针对服务器基本信息,包括BIOS、system、baseboard、chassis等信息都可以通过DMI信息获取。

  • 制造商:
#dmidecode -s system-manufacturer
Huawei
  • 型号:
#dmidecode -s system-product-name
TaiShan 200K (Model 2280K)
  • 机箱形态:
#dmidecode -s chassis-type
Main Server Chassis
  • 高度:
#dmidecode -t chassis | grep Height | tr -d '\t'
Height: 2 U

5 BIOS信息

  • 厂商:
#dmidecode -s bios-vendor
Huawei Corp.
  • 版本:
#dmidecode -s bios-version
1.32.K
  • 发布日期:
#dmidecode -s bios-release-date
04/03/2020

6 CPU信息

CPU信息获取通过多种方式,可以使用lscpu(也使用/proc/cpuinfo)或者dmidecode -t processor获取。
ARM很多cpuinfo相关的寄存器是implement defined(实现定义的行为是由编译器设计者决定采取何种行动,并写入实用手册),另外很多bit都是保留的,因此各个厂家实现不一致,另外就是将来的变化会导致ABI的变化。所以在不同ARM平台获取的信息也不完全一致。

6.1 lscpu示例

以下是Intel CPU使用lscpu的输出:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                48
On-line CPU(s) list:   0-47
Thread(s) per core:    2
Core(s) per socket:    6
Socket(s):             4
NUMA node(s):          4
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 47
Model name:            Intel(R) Xeon(R) CPU E7- 4807  @ 1.87GHz
Stepping:              2
CPU MHz:               1862.000
CPU max MHz:           1862.0000
CPU min MHz:           1064.0000
BogoMIPS:              3723.98
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              18432K
NUMA node0 CPU(s):     0-5,24-29
NUMA node1 CPU(s):     6-11,30-35
NUMA node2 CPU(s):     12-17,36-41
NUMA node3 CPU(s):     18-23,42-47
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt aes lahf_lm ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid dtherm arat spec_ctrl intel_stibp flush_l1d

6.2 具体每个flag缩写代表什么意思

在内核源代码里(arch/x86/include/asm/cpufeatures.h)找到了每个flag的相关注释,通过这些注释可以很方便我们理解这些 flags 缩写:

/* Intel-defined CPU features, CPUID level 0x00000001 (EDX), word 0 */
#define X86_FEATURE_FPU                 ( 0*32+ 0) /* Onboard FPU */
#define X86_FEATURE_VME                 ( 0*32+ 1) /* Virtual Mode Extensions */
#define X86_FEATURE_DE                  ( 0*32+ 2) /* Debugging Extensions */
#define X86_FEATURE_PSE                 ( 0*32+ 3) /* Page Size Extensions */
#define X86_FEATURE_TSC                 ( 0*32+ 4) /* Time Stamp Counter */
#define X86_FEATURE_MSR                 ( 0*32+ 5) /* Model-Specific Registers */
#define X86_FEATURE_PAE                 ( 0*32+ 6) /* Physical Address Extensions */
#define X86_FEATURE_MCE                 ( 0*32+ 7) /* Machine Check Exception */
#define X86_FEATURE_CX8                 ( 0*32+ 8) /* CMPXCHG8 instruction */
#define X86_FEATURE_APIC                ( 0*32+ 9) /* Onboard APIC */
#define X86_FEATURE_SEP                 ( 0*32+11) /* SYSENTER/SYSEXIT */
#define X86_FEATURE_MTRR                ( 0*32+12) /* Memory Type Range Registers */
#define X86_FEATURE_PGE                 ( 0*32+13) /* Page Global Enable */
#define X86_FEATURE_MCA                 ( 0*32+14) /* Machine Check Architecture */
#define X86_FEATURE_CMOV                ( 0*32+15) /* CMOV instructions (plus FCMOVcc, FCOMI with FPU) */
#define X86_FEATURE_PAT                 ( 0*32+16) /* Page Attribute Table */
#define X86_FEATURE_PSE36               ( 0*32+17) /* 36-bit PSEs */
#define X86_FEATURE_PN                  ( 0*32+18) /* Processor serial number */
#define X86_FEATURE_CLFLUSH             ( 0*32+19) /* CLFLUSH instruction */
#define X86_FEATURE_DS                  ( 0*32+21) /* "dts" Debug Store */
#define X86_FEATURE_ACPI                ( 0*32+22) /* ACPI via MSR */

7 内存信息

7.1 内存容量及插槽数

[root@localhost ~]# dmidecode -t 16
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 3.2.0 present.

Handle 0x0006, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: Multi-bit ECC
        Maximum Capacity: 8 TB
        Error Information Handle: Not Provided
        Number Of Devices: 32

Maximum Capacity和Number Of Devices分别标识内存最大容量和可以插入内存个数。


  1. 问题1:dmidecode -t 16中的16 是什么参数?

-t表示按照DMI的类别进行显示。
-t后面可以加DMI type number也可以加keyword( bios, system, baseboard, chassis, processor, memory, cache, connector, slot)。
16表示Physical Memory Array。详见SMBIOS的规范https://www.dmtf.org/dsp/DSP0134

7.2 内存信息

由于服务器可以插入几十根甚至数百根内存条,一般为了保证兼容,也都会插入相同型号的内存。
我们分两步进行内存信息的收集:

  1. 通过dmidecode -t 17获取所有内存设备(不管是否插入内存都会输出),在所有内存设备中找到确定插了内存的handle ID(16-bit integer)
  2. 通过dmidecode -H <handle id>获取单根内存信息                   上图0xA handle的详细信息可以使用dmidecode -H 0xA获取

8 存储信息

通过smartctl可以获取SCSI Disk的基本信息。
思考:服务器上插入的是希捷的ST1200MM0009盘并组的RAID0,为什么smartctl获取到的厂商、型号都不一致?

[root@localhost ~]# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [aarch64-linux-4.19.90-24.4.v2101.ky10.aarch64] (l                                                                                              ocal build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              HW-SAS3508
Revision:             5.06
Compliance:           SPC-3
User Capacity:        13,188,994,170,880 bytes [13.1 TB]
Logical block size:   512 bytes
Logical Unit id:      0x6d47c44d13dae000275c728169566c37
Serial number:        00376c566981725c2700e0da134dc447
Device type:          disk
Local Time is:        Sat Aug  7 15:35:51 2021 CST
SMART support is:     Unavailable - device lacks SMART capability.

服务器上存储环境比较复杂,不单独讲,后面会融合到RAID、HBA等一块讲解。

9 PCI设备信息

因为Ethernet controller、Fibre Channel、RAID bus controller、SATA controller、Serial Attached SCSI controller、USB controller等都是通过PCI总线连接。
PCI设备分类可以通过PCI Device Classes 获取。

9.1 Ethernet网卡信息

通过Ethernet controller类(0200)获取

[root@localhost ~]# lspci -d ::0200
07:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
08:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
09:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
0a:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45)
7d:00.0 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
7d:00.1 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)
7d:00.2 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE RDMA Network Controller (rev 21)
7d:00.3 Ethernet controller: Huawei Technologies Co., Ltd. HNS GE/10GE/25GE Network Controller (rev 21)

9.2 FC-HBA信息

通过Fibre Channel类(0c04)获取

[root@localhost ~]# lspci -d ::0c04
03:00.0 Fibre Channel: Huawei Technologies Co., Ltd. Hi1822 Family (2*8G FC) (rev 45)
04:00.0 Fibre Channel: Huawei Technologies Co., Ltd. Hi1822 Family (2*8G FC) (rev 45)

9.3 RAID信息

通过RAID bus controller类(0104)获取

[root@localhost ~]# lspci -d ::0104
0b:00.0 RAID bus controller: Broadcom / LSI MegaRAID Tri-Mode SAS3508 (rev 01)
78:01.0 RAID bus controller: Huawei Technologies Co., Ltd. HiSilicon RDE Engine (rev 21)
b8:01.0 RAID bus controller: Huawei Technologies Co., Ltd. HiSilicon RDE Engine (rev 21)

9.4 SATA信息

通过SATA controller类(0106)获取

[root@localhost ~]# lspci -d ::0106
74:03.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 21)
b4:03.0 SATA controller: Huawei Technologies Co., Ltd. HiSilicon AHCI HBA (rev 21)

9.5 SAS控制器信息

通过Serial Attached SCSI controller类(0107)获取

[root@localhost ~]# lspci -d ::0107
74:02.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
74:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
b4:02.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)
b4:04.0 Serial Attached SCSI controller: Huawei Technologies Co., Ltd. HiSilicon SAS 3.0 HBA (rev 21)

9.6 USB控制器信息

通过USB controller类(0c03)获取

[root@localhost ~]# lspci -d ::0c03
7a:00.0 USB controller [0c03]: Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller [19e5:a23b] (rev 21)
7a:01.0 USB controller [0c03]: Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller [19e5:a239] (rev 21)
7a:02.0 USB controller [0c03]: Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller [19e5:a238] (rev 21)
ba:00.0 USB controller [0c03]: Huawei Technologies Co., Ltd. HiSilicon USB 1.1 Host Controller [19e5:a23b] (rev 21)
ba:01.0 USB controller [0c03]: Huawei Technologies Co., Ltd. HiSilicon USB 2.0 2-port Host Controller [19e5:a239] (rev 21)
ba:02.0 USB controller [0c03]: Huawei Technologies Co., Ltd. HiSilicon USB 3.0 Host Controller [19e5:a238] (rev 21)

思考:怎么确定一个RAID卡的驱动是否正常加载?
思考:lspci看到的设备名为什么不正确?与厂商提供的设备型号不匹配?比如下面的例子

# lspci -v -s 04:00.0
04:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
        Subsystem: IBM Device 03b5
        Flags: bus master, fast devsel, latency 0, IRQ 24, NUMA node 0
        Memory at 92000000 (64-bit, non-prefetchable) [size=32M]
        Capabilities: [48] Power Management version 3
        Capabilities: [50] Vital Product Data
        Capabilities: [58] MSI: Enable- Count=1/16 Maskable- 64bit+
        Capabilities: [a0] MSI-X: Enable+ Count=9 Masked-
        Capabilities: [ac] Express Endpoint, MSI 00
        Capabilities: [100] Device Serial Number 5c-f3-fc-ff-fe-db-89-7c
        Capabilities: [110] Advanced Error Reporting
        Capabilities: [150] Power Budgeting <?>
        Capabilities: [160] Virtual Channel
        Kernel driver in use: bnx2
        Kernel modules: bnx2
  • 2
    点赞
  • 11
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

php_wanggang

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值