linux查看系统硬件信息


服务器硬件数据的收集

回到顶部
『工欲善其事,必先利其器』,这是一句大家耳熟能详的古人名言,在我们的信息设备上面也是一样 的啊! 在现在 (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: DIMMSet: None
            Locator: DIMM 0
            Bank Locator: Not Specified
            Type: RAM
            Type Detail: None
            
因为我们的系统是虚拟机,否则的话,你的主板型号、每一只安插的内存容量等等,都会被列出来在 上述的画面中喔! 这样可以让你了解系统的所有主要硬件配备为何!
因为某些缘故,鸟哥获得了一部机架式的服务器,不过该服务器就是内存不够。又因 Tips 为某些缘故有朋友要送 ECC 的低电压内存给鸟哥!太开心了! 不过为了担心内存与主板不兼容,所以就使用了 dmidecode 去查主板型号,再到原厂网站查询相关主板规格,这才确认可以使用!感谢各位亲爱的朋友啊!
!

硬件资源的收集与分析

回到顶部
现在我们知道系统硬件是由操作系统核心所管理的,由第十九章的开机流程分析中,我们也知道 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

回到顶部
            [root@study ~]# lspci [-vvn]
            
选项与参数:
-v :显示更多的 PCI 接口装置的详细信息;
-vv :比 -v 还要更详细的细部信息;
-n :直接观察 PCI 的 ID 而不是厂商名称
范例一:查阅您系统内的 PCI 总线相关装置:
            [root@study ~]# lspci
            00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
            00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
            00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
            00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
            00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
            00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
            00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
            00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
            00:05.0 RAM memory: Red Hat, Inc Virtio memory balloon
            00:06.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio
            Controller (rev 01)
            00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
            00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
            00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
            00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
            
# 不必加任何的参数,就能够显示出目前主机上面的各个 PCI 接口的装置呢!
不必加上任何选项,就能够显示出目前的硬件配备为何。上面就是鸟哥的测试机所使用的主机配备。
包括使用 Intel 芯片的仿真主板、南桥使用 ICH9 的控制芯片、附挂 QXL 的显示适配器、使用虚 拟化的 Virtio 网络卡等等。 您瞧瞧!很清楚,不是嘛。
如果你还想要了解某个设备的详细信息时,可以加上 -v 或 -vv 来显示更多的信息喔!
举例来说, 鸟哥想要知道那个以太网络卡更详细的信息时,可以使用如下的选项来处理:
            [root@study ~]# lspci -s 00:03.0 -vv-s
            
后面接的那个怪东西每个设备的总线、插槽与相关函数功能啦!那个是我们硬件侦测所得到的数 据啰! 你可以对照底下这个文件来了解该串数据的意义:
 /usr/share/hwdata/pci.ids
其实那个就是 PCI 的标准 ID 与厂牌名称的对应表啦!此外,刚刚我们使用 lspci 时,其实所有的 数据都是由 /proc/bus/pci/ 目录下的数据所取出的呢!了解了吧! ^_^!
不过,由于硬件的发展太过 迅速,所以你的 pci.ids 文件可能会落伍了~那怎办? 没关系~可以使用底下的方式来在线更新你 的对应档:
            [root@study ~]# update-pciids
            

lsusb

回到顶部
刚刚谈到的是 PCI 接口装置,如果是想要知道系统接了多少个 USB 装置呢?那就使用 lsusb 吧!
这个指令也是很简单的!
            [root@study ~]# lsusb [-t]
            
选项与参数: -t :使用类似树状目录来显示各个 USB 端口口的相关性 范例一:列出目前鸟哥的测试用主机 USB 各端口口状态
            [root@study ~]# lsusb
            Bus 002 Device 002: ID 0627:0001 Adomax Technology Co., Ltd
            Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
            Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
            
# 如上所示,鸟哥的主机在 Bus 002 有接了一个设备,
# 该设备的 ID 是 0627:0001,对应的厂商与产品为 Adomax 的设备。
确实非常清楚吧!其中比较有趣的就属那个 ID 号码与厂商型号对照了!那也是写入在 /usr/share/hwdata/pci.ids 的东西,你也可以自行去查询一下喔!

iostat

回到顶部
刚刚那个 lspci 找到的是目前主机上面的硬件配备,那么整部机器的储存设备, 主要是磁盘对吧! 请问,您磁盘由开机到现在,已经存取多少数据呢?这个时候就得要 iostat 这个指令的帮忙了!
Tips 默认 CentOS 并没有安装这个软件,因此你必须要先安装他才行!如果你已经有网络 了, 那么使用『 yum install sysstat 』先来安装此软件吧!否则无法进行如下的测试喔!
            [root@study ~]# iostat [-c|-d] [-k|-m] [-t] [间隔秒数]
            
[侦测次数] 选项与参数:
-c :仅显示 CPU 的状态;
-d :仅显示储存设备的状态,不可与 -c 一起用;
-k :默认显示的是 block ,这里可以改成 K bytes 的大小来显示;
-m :与 -k 类似,只是以 MB 的单位来显示结果。
-t :显示日期出来;
范例一:显示一下目前整个系统的 CPU 与储存设备的状态
            [root@study ~]# iostat
            Linux 3.10.0-229.el7.x86_64 (study.centos.vbird) 09/02/2015
            avg-cpu: %steal %idle
            0.01 99.88
            %user
            0.08
            Device:
            %nice %system %iowait
            0.01
            0.02
            0.00
            _x86_64_
            tps kB_read/s kB_wrtn/s kB_read kB_wrtn
            vda 0.46 5.42 3.16 973670 568007
            scd0 0.00 0.00 0.00 154 0
            sda 0.01 0.03 0.00 4826 0
            dm-0 0.23 4.59 3.09 825092 555621
            (4 CPU)
            
# 瞧!上面数据总共分为上下两部分,上半部显示的是 CPU 的当下信息;
# 下面数据则是显示储存装置包括 /dev/vda 的相关数据,他的数据意义:
# tps
:平均每秒钟的传送次数!与数据传输『次数』有关,非容量!
# kB_read/s :开机到现在平均的读取单位;
# kB_wrtn/s :开机到现在平均的写入单位;
# kB_read :开机到现在,总共读出来的文件单位;
# kB_wrtn :开机到现在,总共写入的文件单位;
范例二:仅针对 vda ,每两秒钟侦测一次,并且共侦测三次储存装置
            [root@study ~]# iostat -d 2 3 vda
            Linux 3.10.0-229.el7.x86_64 (study.centos.vbird)
            Device:
            vda
            Device:
            vda
            Device:
            vda
            09/02/2015 _x86_64_
            tps kB_read/s kB_wrtn/s kB_read kB_wrtn
            0.46 5.41 3.16 973682 568148
            tps kB_read/s kB_wrtn/s kB_read kB_wrtn
            1.00 0.00 0.50 0 1
            tps kB_read/s kB_wrtn/s kB_read kB_wrtn
            0.00 0.00 0.00 0 0
            (4 CPU)
            
# 仔细看一下,如果是有侦测次数的情况,那么第一次显示的是『从开机到现在的数据』,
# 第二次以后所显示的数据则代表两次侦测之间的系统传输值!举例来说,上面的信息中,
# 第二次显示的数据,则是两秒钟内(本案例)系统的总传输量与平均值。透过 lspci 及 iostat 可以约略的了解到目前系统的状态还有目前的主机硬件数据呢!

了解磁盘的健康状态

回到顶部
其实 Linux server 最重要的就是『数据安全』了!而数据都是放在磁盘当中的,所以啰,无时无刻了 解一下你的磁盘健康状况,应该是个好习惯吧! 问题是,你怎么知道你的磁盘是好是坏啊?这时就 得要来谈一个 smartd 的服务了!
SMART 其实是『 Self-Monitoring, Analysis and Reporting Technology System 』的缩写,主要用来监 测目前常见的 ATA 与 SCSI 界面的磁盘, 只是,要被监测的磁盘也必须要支持 SMART 的协议 才行!否则 smartd 就无法去下达指令,让磁盘进行自我健康检查~ 比较可惜的是,我们虚拟机的 磁盘格式并不支持 smartd,所以无法用来作为测试!不过刚刚好鸟哥还有另外一颗用作 IDE 界面的 2G 磁盘, 这个就能够用来作为测试了! (/dev/sda)!
smartd 提供一只指令名为 smartctl,这个指令功能非常多!不过我们底下只想要介绍数个基本的操作, 让各位了解一下如何确认你的磁盘是好是坏!
# 1. 用 smartctl 来显示完整的 /dev/sda 的信息
            [root@study ~]# smartctl -a /dev/sda
            smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-229.el7.x86_64] (local build)
            Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
            

            # 首先来输出一下这部磁盘的整体信息状况!包括制造商、序号、格式、SMART 支持度等等!
=== START OF INFORMATION SECTION === Device Model: QEMU HARDDISK Serial Number: QM00002 Firmware Version: 0.12.1 User Capacity: 2,148,073,472 bytes [2.14 GB] Sector Size: 512 bytes logical/physical Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000 Local Time is: Wed Sep 2 18:10:38 2015 CST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED # 接下来则是一堆基础说明!鸟哥这里先略过这段资料喔! General SMART Values: Offline data collection status: (0x82) Offline data collection activity was completed without error. Auto Offline Data Collection: Enabled. .....(中间省略).....# 再来则是有没有曾经发生过磁盘错乱的问题登录! SMART Error Log Version: 1 No Errors Logged # 当你下达过磁盘自我检测的过程,就会被记录在这里了! SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 4660 - # 2 Short offline Completed without error 00% 4660 - # 2. 命令磁盘进行一次自我检测的动作,然后再次观察磁盘状态! [root@study ~]# smartctl -t short /dev/sda [root@study ~]# smartctl -a /dev/sda .....(前面省略)..... # 底下会多出一个第三笔的测试信息!看一下 Status 的状态,没有问题就是好消息! SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 4660 - # 2 Short offline Completed without error 00% 4660 - # 3 Short offline Completed without error 00% 4660 -
不过要特别强调的是,因为进行磁盘自我检查时,可能磁盘的 I/O 状态会比较频繁,因此不建议在 系统忙碌的时候进行喔! 否则系统的效能是可能会被影响的哩!要注意!要注意!

ifconfig列出系统中的网卡信息

回到顶部

没有任何参数选项,显示当前所有网络状态

peter@peter-VirtualBox:~$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::1db0:20ae:4993:2b5f prefixlen 64 scopeid 0x20 <link>
ether 08:00:27:bd:23:a5 txqueuelen 1000 (Ethernet)
RX packets 89623 bytes 69256556 (69.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 75817 bytes 13227494 (13.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 14740 bytes 1400245 (1.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14740 bytes 1400245 (1.4 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
显示指定网卡状态:
ifconfig eth0
关闭eth0:
ifconfig eth0 down
开启eth0:
ifconfig eth0 up

Usage:
ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
[add <address>[/<prefixlen>]]
[del <address>[/<prefixlen>]]
[[-]broadcast [<address>]] [[-]pointopoint [<address>]]
[netmask <address>] [dstaddr <address>] [tunnel <address>]
[outfill <NN>] [keepalive <NN>]
[hw <HW>
<address>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down] ...

<HW>=Hardware Type.
List of possible hardware types:
loop (Local Loopback) slip (Serial Line IP) cslip (VJ Serial Line IP)
slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial Line IP)
ash (Ash) ether (Ethernet) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (IPIP Tunnel)
ppp (Point-to-Point Protocol) hdlc ((Cisco)-HDLC) lapb (LAPB)
arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Frame Relay Access Device)
sit (IPv6-in-IPv4) fddi (Fiber Distributed Data Interface) hippi (HIPPI)
irda (IrLAP) ec (Econet) x25 (generic X.25)
eui64 (Generic EUI-64)
<AF>=Address family. Default: inet
List of possible address families:
unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6)
ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE)
ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet)
ash (Ash) x25 (CCITT X.25)

ping常用来测试网络连通性

回到顶部

Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
[-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
[-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
[-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
[-l preload] [-m mark] [-M pmtudisc_option]
[-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
[-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
[-W timeout] destination

相关阅读:
linux基础
centos安装
linux mint(ubuntu)安装
什么是linux
linux学习方法建议和学习路线图
本文由initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读