Linux里面一些关于硬件方面的知识整理

发布于:2025-03-25 ⋅ 阅读:(29) ⋅ 点赞:(0)
服务器硬件核心组件与功能

电源:冗余设计(如双电源、UPS电池)确保供电稳定,防止断电导致数据丢失

CPU:处理运算任务,需关注路数(单路/双路)和核数(并行处理能力),散热风扇需定期维护

内存:临时存储数据,读写效率高但断电易丢失,需注意缓冲(写入内存)与缓存(读取内存)机制

磁盘:永久存储设备,机械硬盘需避免物理碰撞,SSD关注寿命监控,RAID技术提升冗余

主板:整合硬件组件,需定期检查接口氧化或损坏。

服务器厂商与型号:常见厂商包括戴尔(PowerEdge系列)、惠普(ProLiant系列)、华为等,不同厂商的硬件接口和管理工具(如iDRAC、iLO)需适配

/proc/cpuinfo --》里面包含CPU的信息,比如说CPU的核数

lscpu --》查看CPU的详细信息,如厂商、核心数等

nproc --》显示逻辑CPU总数

uname -r --》查看内核版本 3.10.0-1160.el7.x86_64

uname -a --》显示所有系统信息 Linux snat-router 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

/proc 文件系统的作用

  1. 系统信息/proc 提供了关于系统硬件、内核参数、进程状态等信息。
  2. 实时监控:用户可以通过读取 /proc 中的文件来获取实时的系统运行状态。
  3. 配置管理:某些 /proc 文件可以被写入,从而动态修改内核参数。

常见的 /proc 文件和目录

1. /proc/cpuinfo
  • 用途:包含有关系统 CPU 的详细信息。
  • 内容:CPU 的型号、核心数、线程数、频率等。
2. /proc/meminfo
  • 用途:包含有关系统内存的信息。
  • 内容:总内存、可用内存、缓存、交换空间等。
3. /proc/version
  • 用途:显示内核版本信息。
  • 内容:内核版本、编译时间、编译用户等。
4. /proc/loadavg
  • 用途:显示系统的平均负载。
  • 内容:1分钟、5分钟、15分钟的平均负载值,以及当前运行的进程数和总进程数。
5. /proc/stat
  • 用途:包含系统的统计信息。
  • 内容:CPU 使用率、中断、上下文切换等。

ulimit

ulimit 是一个在类 Unix 系统(如 Linux 和 macOS)中常用的命令,用于查看和设置系统对用户或进程的资源限制。这些资源限制可以包括文件大小、内存使用量、打开文件的数量、进程数量等。

ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited --》设置单个文件的最大大小

pending signals (-i) 14989 --》设置当前用户可以挂起的最大信号数

max locked memory (kbytes, -l) 64 --》设置用户可以锁定的最大内存大小

max memory size (kbytes, -m) unlimited --》设置进程可以使用的最大物理内存大小

open files (-n) 1024 --》设置每个进程可以打开的最大文件数量

pipe size (512 bytes, -p) 8 --》设置管道(pipe)缓冲区的大小

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0 --》设置实时进程的最大优先级

stack size (kbytes, -s) 8192 --》设置每个进程的栈大小

cpu time (seconds, -t) unlimited --》设置每个进程可以使用的最大 CPU 时间

max user processes (-u) 14989 --》设置每个用户可以创建的最大进程数

virtual memory (kbytes, -v) unlimited --》设置每个进程可以使用的最大虚拟内存大小

file locks (-x) unlimited

ulimit -f 1024 --》将文件大小限制设置为 1024 块(1 块 = 512 字节)。

ulimit -n 2048 --》将打开文件的数量限制设置为 2048

ulimit -u 1024 --》将用户可以创建的最大进程数限制设置为 1024

ulimit -s 4096 --》将栈大小限制设置为 4096 KB

常用选项
  • -a:显示所有当前的资源限制。
  • -c:显示或设置核心文件大小限制(单位:512字节块)。
  • -d:显示或设置数据段大小限制(单位:KB)。
  • -f:显示或设置文件大小限制(单位:512字节块)。
  • -l:显示或设置最大锁定内存大小(单位:KB)。
  • -m:显示或设置最大物理内存大小(单位:KB)。
  • -n显示或设置每个进程可以打开的最大文件数量。
  • -p:显示或设置管道缓冲区大小(单位:512字节块)。
  • -q:显示或设置 POSIX 消息队列的最大字节数。
  • -s:显示或设置栈大小(单位:KB)。
  • -t:显示或设置每个进程可以使用的最大 CPU 时间(单位:秒)。
  • -u显示或设置每个用户可以创建的最大进程数
  • -v:显示或设置每个进程可以使用的最大虚拟内存大小(单位:KB)。
  • -x:显示或设置每个进程可以持有的最大文件锁数量。
  • -i:显示或设置当前用户可以挂起的最大信号数。
硬限制和软限制
  • 软限制:是当前生效的限制值,用户可以将其设置为小于或等于硬限制的值。
  • 硬限制:是软限制的最大值,用户不能将其设置为高于当前硬限制的值。
临时限制和永久限制

临时限制:通过 ulimit 命令设置的限制仅对当前 shell 会话有效,关闭终端或退出登录后,这些设置将失效。

永久限制:要永久修改资源限制,需要编辑配置文件,如 /etc/security/limits.conf 或 /etc/security/limits.d/* 文件

top

top -H --》显示线程信息

top -p [pid] --》查看某个特定进程的信息

top -u [uid] --》查看某个特定用户的所有进程

top -c --》查看运行特定命令的进程

top -d [秒数] --》调整刷新频率

top -bn 1 --》运行一次并立即退出

top 进去后按1 --》显示每个 CPU 核心的详细信息

ps -eo pid,args,psr --》显示所有进程及其对应的 CPU 核编号

  • pid:进程 ID。
  • args:进程的命令行参数。
  • psr:分配给进程的 CPU 核编号。
  • -e:显示所有用户的进程
  • o:自定义输出格式

日志分析与硬件监控
  • 关键日志类型:

日志类型

路径/命令

用途

系统日志

/var/log/messages

硬件驱动加载失败、内核OOM事件

内核日志

dmesg

硬件中断错误(如硬盘I/O超时)

应用日志

/var/log/nginx/access.log

高并发请求导致的线程阻塞

硬件健康日志

smartctl -a /dev/sda

硬盘SMART属性(坏道、温度)

服务器传感器数据

ipmitool sensor list

CPU温度、风扇转速、电源状态

  • 硬件问题排查:
    • 高Ping值:通过ping -c 5 <IP>检测延迟,结合tcpdump抓包分析网络拥塞 89。
    • 硬件故障:
      • 检查/var/log/kern.log中的EDAC内存错误日志 71。
      • 使用lm-sensors监控CPU温度,若超过阈值(如95°C)需检查散热 58。

CPU异常与硬件问题区分
  • 网络问题特征:
    • 高延迟(Ping值>100ms)、丢包率>5%(pingmtr检测)。
    • 网络带宽饱和(iftopnload监控) 89。
  • 硬件问题特征:
    • CPU过热:sensors显示核心温度持续高于90°C 58。
    • 内存故障:dmesg中提示EDAC MC0: UE memory read error 71。
    • 硬盘故障:smartctlReallocated_Sector_Ct值增长 1。
Nginx负载均衡配置

nginx.conf中通过upstream块定义后端服务器组:

  1. 基础配置
upstream backend {
    server 10.0.6.108:7080 weight=5;  # 权重分配
    server 10.0.0.85:8980 max_fails=3 fail_timeout=30s;  # 失败检测
    server 10.0.0.11:7070 backup;  # 备用节点
    ip_hash;  # 基于IP哈希保持会话
}
开机启动流程
  1. Power On(开机)
    • 按下电源按钮,计算机通电启动。
  1. POST(Power-On Self-Test,开机自检)
    • 计算机进行硬件自检,确保内存、CPU、显卡等关键硬件正常。
  1. BIOS(Basic Input/Output System,基本输入输出系统)检测硬件
    • BIOS初始化硬件设备,建立内存地址映射表,使系统识别硬件。
  1. Boot 启动顺序检查(第1启动顺序)
    • BIOS根据预设顺序(如硬盘、光驱、U盘等)查找可引导设备。
  1. 硬盘
    • 从硬盘启动,硬盘中包含操作系统和引导程序。
  1. MBR(Master Boot Record,主引导记录)
    • 读取硬盘的MBR,MBR包含引导程序、分区表和结束标志。
  1. GRUB2引导程序
    • MBR中的引导程序加载GRUB2,GRUB2支持多操作系统启动选项。
  1. /boot里的文件系统驱动
    • GRUB2加载文件系统驱动,识别/boot分区内的文件。
  1. 内核文件(vmlinuz和initramfs)
    • 加载vmlinuz(Linux内核镜像)和initramfs(初始虚拟文件系统)到内存。
  1. systemd进程
    • 启动第一个真正的进程systemd,负责管理系统中的进程、服务、设备等。
  1. 启动对应的运行级别里的服务
    • systemd根据配置启动对应运行级别(如多用户模式)的服务程序。
  1. Multi-User(多用户模式)
    • 进入多用户模式,系统准备供多个用户登录使用。
  1. /etc/rc.local和/etc/fstab
    • 执行/etc/rc.local(自定义启动脚本)和/etc/fstab(文件系统挂载信息)。
  1. Login(登录)
    • 用户在登录界面输入用户名和密码,系统根据/etc/passwd和/etc/shadow验证信息。
  1. 运行用户环境变量初始化文件
    • 登录成功后,系统运行用户家目录下的环境变量初始化文件(如~/.bashrc、~/.bash_profile等)。
  1. 显示Bash提示符
    • 显示Bash提示符,用户可输入命令操作,开机启动流程完成。