wiki/运维/Linux/笔记/3.硬件管理.md
2026-04-08 19:40:00 +08:00

215 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 1、硬件管理概览
在 Linux 中查看硬件信息,常见关注点主要有三类:
- CPU核心数、线程数、架构、缓存、是否虚拟化
- 内存总量、可用量、缓存、Swap 使用情况
- 磁盘:设备、分区、文件系统类型、挂载点
做系统巡检或排障时,通常也是按这个顺序查看。
## 2、查看 CPU 信息
### 2.1 使用 `lscpu`
`lscpu` 是查看 CPU 信息最直观的命令,适合快速了解当前机器的处理器概况。
```shell
[root@tencentos ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) Platinum 8255C CPU @ 2.50GHz
CPU MHz: 2494.140
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
L3 cache: 36608K
```
### 2.2 重点字段说明
- `Architecture`CPU 架构,例如 `x86_64` 表示 64 位架构
- `CPU op-mode(s)`CPU 支持运行 32 位和 64 位操作系统
- `CPU(s)`:逻辑 CPU 数量,不一定等于物理核心数
- `Thread(s) per core`:每个核心的线程数,开启超线程时通常大于 1
- `Core(s) per socket`:每个物理 CPU 的核心数
- `Socket(s)`:物理 CPU 颗数
- `Model name`CPU 型号
- `Hypervisor vendor`:当前是否运行在虚拟化环境中,例如 KVM
- `L1/L2/L3 cache`:不同层级的 CPU 缓存大小
### 2.3 使用 `/proc/cpuinfo`
如果你想看更底层、更详细的信息,可以直接查看:
```shell
[root@tencentos ~]# cat /proc/cpuinfo
```
这个文件会按每个逻辑 CPU 分别列出详细参数,例如:
- `processor`:逻辑 CPU 编号
- `vendor_id`CPU 厂商
- `model name`CPU 型号名称
- `cpu MHz`:当前频率
- `cache size`:缓存大小
- `flags`CPU 支持的指令集特性
- `bugs`:已知 CPU 漏洞或风险标记
- `address sizes`:物理地址和虚拟地址位数
### 2.4 使用场景建议
- **快速巡检**:优先用 `lscpu`
- **查看更细节的 CPU 参数**:使用 `/proc/cpuinfo`
- **判断是否是虚拟机**:关注 `Hypervisor vendor`
- **判断核心、线程、物理 CPU 数**:结合 `CPU(s)``Thread(s) per core``Core(s) per socket``Socket(s)` 一起看
## 3、查看内存信息
### 3.1 使用 `free -h`
`free` 是查看内存最常用的命令,`-h` 可以用更适合阅读的单位显示。
```shell
[root@tencentos ~]# free -h
total used free shared buff/cache available
Mem: 1.7Gi 323Mi 341Mi 35Mi 1.0Gi 1.2Gi
Swap: 0B 0B 0B
```
### 3.2 重点字段说明
- `total`:内存总量
- `used`:已使用内存
- `free`:完全空闲的内存
- `shared`:共享内存
- `buff/cache`:被缓冲区和页缓存占用的内存
- `available`:当前可供应用程序使用的内存,通常比 `free` 更有参考价值
- `Swap`:交换分区使用情况
### 3.3 使用 `/proc/meminfo`
如果需要更完整的内存明细,可以查看:
```shell
[root@tencentos ~]# cat /proc/meminfo
```
其中比较常见的字段有:
- `MemTotal`:物理内存总量
- `MemFree`:当前空闲内存
- `MemAvailable`:当前可用内存
- `Buffers`:块设备缓冲区使用量
- `Cached`:页缓存使用量
- `SwapTotal`Swap 总量
- `SwapFree`Swap 剩余量
- `Slab`:内核 slab 缓存占用
- `Dirty`:等待写回磁盘的数据量
### 3.4 排障时怎么看内存
- 日常巡检时优先看 `free -h`
- 不要只盯着 `free`,应重点关注 `available`
- 如果 `Swap` 持续上升,通常需要关注内存压力
- 如果想进一步排查缓存、页表、HugePages 等问题,再看 `/proc/meminfo`
## 4、查看磁盘与分区信息
### 4.1 使用 `lsblk`
`lsblk` 用于查看块设备、分区和挂载关系,是查看磁盘结构时最常用的命令之一。
```shell
[root@tencentos ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
```
### 4.2 重点字段说明
- `NAME`:设备名称
- `MAJ:MIN`:主设备号和次设备号
- `RM`:是否可移动设备,`1` 表示是,`0` 表示否
- `SIZE`:设备或分区大小
- `RO`:是否只读
- `TYPE`:设备类型,例如 `disk``part`
- `MOUNTPOINT`:挂载点
### 4.3 使用 `/proc/partitions`
```shell
[root@tencentos ~]# cat /proc/partitions
major minor #blocks name
253 0 52428800 vda
253 1 52427759 vda1
```
这个文件更偏底层,适合查看系统识别到的块设备和分区情况。
### 4.4 使用 `blkid`
`blkid` 可以查看设备的文件系统类型、UUID、分区 UUID 等信息。
```shell
[root@tencentos ~]# blkid
/dev/vda1: UUID="ded6c45d-0699-43e5-bc44-f31c21449dcc" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="5f3d9d70-01"
```
### 4.5 `blkid` 常见用途
- 查看文件系统类型,例如 `ext4``xfs`
- 获取 `UUID`,便于写入 `/etc/fstab`
- 排查磁盘挂载失败、设备识别异常等问题
## 5、常用巡检思路
如果只是做一次简单的硬件巡检,通常可以按下面的顺序:
### 5.1 看 CPU
```shell
lscpu
```
关注:架构、核心数、线程数、虚拟化信息。
### 5.2 看内存
```shell
free -h
```
关注总量、可用内存、Swap 是否被使用。
### 5.3 看磁盘
```shell
lsblk
blkid
```
关注:磁盘和分区结构、挂载点、文件系统类型。
## 6、小结
- `lscpu` 适合快速查看 CPU 总体情况
- `/proc/cpuinfo` 更详细,适合深入分析 CPU 参数
- `free -h` 是查看内存使用最常用的命令
- `/proc/meminfo` 提供更细的内存统计信息
- `lsblk` 适合看块设备和挂载关系
- `blkid` 适合看 UUID 和文件系统类型
这几个命令已经能覆盖 Linux 中大部分基础硬件巡检场景。