20.2 服务器硬件数据的收集

“工欲善其事,必先利其器”,这是一句大家耳熟能详的古人名言,在我们的信息设备上面也是一样的啊! 在现在 (2015) 正好是 DDR3 切换到 DDR4 的时间点,假设你的服务器硬件刚刚好内存不太够,想要加内存, 那请教一下,你的主板插槽还够吗?你的内存需要 DDR3 还是 DDR4 呢?你的主机能不能吃到 8G 以上的单条内存? 这就需要检查一下系统啰!不想拆机箱吧?那怎办?用软件去查啦!此外,磁盘会不会出问题?你怎么知道哪一颗磁盘出问题了?这就重要啦!

20.2.1 以系统内置 dmidecode 解析硬件配备

系统有个名为 dmidecode 的软件,这个软件挺有趣的,它可以解析 CPU 型号、主板型号与内存相关的型号等等~ 相当的有帮助!尤其是在升级配备上面!现在让我们来查一查鸟哥的虚拟机里头有啥东西吧!

[root@study ~]# dmidecode -t type
选项与参数:
详细的 type 项目请 man dmidecode 查询更多的数据,这里仅列出比较常用的项目:
1 :详细的系统数据,含主板的型号与硬件的基础数据等
4 :CPU 的相关数据,包括倍频、外频、核心数、核心绪数等
9 :系统的相关插槽格式,包括 PCI, PCI-E 等等的插槽规格说明
17:每一个内存插槽的规格,若内有内存,则列出该内存的容量与型号

范例一:秀出整个系统的硬件信息,例如主板型号等等
[root@study ~]# dmidecode -t 1
# dmidecode 2.12
SMBIOS 2.4 present.

Handle 0x0100, DMI type 1, 27 Bytes
System Information
        Manufacturer: Red Hat
        Product Name: KVM
        Version: RHEL 6.6.0 PC
        Serial Number: Not Specified
        UUID: AA3CB5D1-4F42-45F7-8DBF-575445D3887F
        Wake-up Type: Power Switch
        SKU Number: Not Specified
        Family: Red Hat Enterprise Linux

范例二:那内存相关的数据呢?
[root@study ~]# dmidecode -t 17
# dmidecode 2.12
SMBIOS 2.4 present.

Handle 0x1100, DMI type 17, 21 Bytes
Memory Device
        Array Handle: 0x1000
        Error Information Handle: 0x0000
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 3072 MB
        Form Factor: DIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: Not Specified
        Type: RAM
        Type Detail: None

因为我们的系统是虚拟机,否则的话,你的主板型号、每一只安插的内存容量等等,都会被列出来在上述的画面中喔! 这样可以让你了解系统的所有主要硬件配备为何!

Tips 因为某些缘故,鸟哥获得了一部机架式的服务器,不过该服务器就是内存不够。又因为某些缘故有朋友要送 ECC 的低电压内存给鸟哥!太开心了! 不过为了担心内存与主板不相容,所以就使用了 dmidecode 去查主板型号,再到原厂网站查询相关主板规格,这才确认可以使用!感谢各位亲爱的朋友啊!!

20.2.2 硬件资源的收集与分析

现在我们知道系统硬件是由操作系统核心所管理的,由[第十九章]的开机流程分析中,我们也知道 Linux kernel 在开机时就能够侦测主机硬件并载入适当的模块来驱动硬件了。 而核心所侦测到的各项硬件设备,后来就会被记录在 /proc 与 /sys 当中了。 包括 /proc/cpuinfo, /proc/partitions, /proc/interrupts 等等。 更多的 /proc 内容介绍,先回到[第十六章的程序管理]瞧一瞧先!

Tips 其实核心所侦测到的硬件可能并非完全正确喔!因为他仅是“使用最适当的模块来驱动这个硬件”而已, 所以有时候难免会误判啦 (虽然概率非常之低)!那你可能想要以最新最正确的模块来驱动你的硬件, 此时,重新编译核心是一条可以达成的道路。不过,现在的 Linux 系统并没有很建议你一定要重新编译核心就是了。

那除了直接调用出 /proc 下面的文件内容之外,其实 Linux 有提供几个简单的指令来将核心所侦测到的硬件叫出来的~ 常见的指令有下面这些:

  • [gdisk]:第七章曾经谈过,可以使用 gdisk -l 将分区表列出;

  • [dmesg]:第十六章谈过, 观察核心运行过程当中所显示的各项讯息记录;

  • [vmstat]:第十六章谈过,可分析系统 (CPU/RAM/IO) 目前的状态;

  • lspci:列出整个 PC 系统的 PCI 接口设备!很有用的指令;

  • lsusb:列出目前系统上面各个 USB 端口的状态,与连接的 USB 设备;

  • iostat:与 vmstat 类似,可实时列出整个 CPU 与周边设备的 Input/Output 状态。

lspci, lsusb, iostat 是本章新谈到的指令,尤其如果你想要知道主板与各周边相关设备时,那个 lspci 真是不可多得的好工具!而如果你想要知道目前 USB 插槽的使用情况以及侦测到的 USB 设备, 那个 lsusb 则好用到爆!至于 iostat 则是一个实时分析软件,与 vmstat 有异曲同工之妙!

基本上,想要知道你 Linux 主机的硬件配备,最好的方法还是直接拆开机箱去察看上面的信息 (这也是为何[第零章会谈计概]啊)! 如果环境因素导致您无法直接拆开主机的话,那么直接 lspci 是很棒的一的方法:

  • lspci

不必加上任何选项,就能够显示出目前的硬件配备为何。上面就是鸟哥的测试机所使用的主机配备。 包括使用 Intel 芯片的仿真主板、南桥使用 ICH9 的控制芯片、附挂 QXL 的显卡、使用虚拟化的 Virtio 网卡等等。 您瞧瞧!很清楚,不是嘛。

如果你还想要了解某个设备的详细信息时,可以加上 -v 或 -vv 来显示更多的信息喔! 举例来说,鸟哥想要知道那个以太网卡更详细的信息时,可以使用如下的选项来处理:

-s 后面接的那个怪东西每个设备的总线、插槽与相关函数功能啦!那个是我们硬件侦测所得到的数据啰! 你可以对照下面这个文件来了解该串数据的意义:

  • /usr/share/hwdata/pci.ids

其实那个就是 PCI 的标准 ID 与厂牌名称的对应表啦!此外,刚刚我们使用 lspci 时,其实所有的数据都是由 /proc/bus/pci/ 目录下的数据所取出的呢!了解了吧! ^_^!不过,由于硬件的发展太过迅速,所以你的 pci.ids 文件可能会落伍了~那怎办? 没关系~可以使用下面的方式来线上更新你的对应档:

  • lsusb

刚刚谈到的是 PCI 接口设备,如果是想要知道系统接了多少个 USB 设备呢?那就使用 lsusb 吧!这个指令也是很简单的!

确实非常清楚吧!其中比较有趣的就属那个 ID 号码与厂商型号对照了!那也是写入在 /usr/share/hwdata/pci.ids 的东西,你也可以自行去查询一下喔!

  • iostat

刚刚那个 lspci 找到的是目前主机上面的硬件配备,那么整部机器的储存设备, 主要是磁盘对吧!请问,您磁盘由开机到现在,已经存取多少数据呢?这个时候就得要 iostat 这个指令的帮忙了!

Tips 默认 CentOS 并没有安装这个软件,因此你必须要先安装他才行!如果你已经有网络了, 那么使用“ yum install sysstat ”先来安装此软件吧!否则无法进行如下的测试喔!

通过 lspci 及 iostat 可以约略的了解到目前系统的状态还有目前的主机硬件数据呢!

20.2.3 了解磁盘的健康状态

其实 Linux server 最重要的就是“数据安全”了!而数据都是放在磁盘当中的,所以啰,无时无刻了解一下你的磁盘健康状况,应该是个好习惯吧! 问题是,你怎么知道你的磁盘是好是坏啊?这时就得要来谈一个 smartd 的服务了!

SMART 其实是“ Self-Monitoring, Analysis and Reporting Technology System ”的缩写,主要用来监测目前常见的 ATA 与 SCSI 界面的磁盘, 只是,要被监测的磁盘也必须要支持 SMART 的协定才行!否则 smartd 就无法去下达指令,让磁盘进行自我健康检查~ 比较可惜的是,我们虚拟机的磁盘格式并不支持 smartd,所以无法用来作为测试!不过刚刚好鸟哥还有另外一颗用作 IDE 界面的 2G 磁盘, 这个就能够用来作为测试了! (/dev/sda)!

smartd 提供一只指令名为 smartctl,这个指令功能非常多!不过我们下面只想要介绍数个基本的操作,让各位了解一下如何确认你的磁盘是好是坏!

不过要特别强调的是,因为进行磁盘自我检查时,可能磁盘的 I/O 状态会比较频繁,因此不建议在系统忙碌的时候进行喔! 否则系统的性能是可能会被影响的哩!要注意!要注意!

Last updated