linux服务器硬件,服务器架构

这篇文章给大家聊聊关于linux服务器硬件,以及服务器架构对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

如何三招帮你排查Linux中的硬件问题

下列贴士帮助你更快速更轻松地为 Linux中的硬件排查故障。许多不同的因素可能导致Linux硬件出现问题;在你开始尝试诊断之前,了解最常见的问题以及最有可能找到原因的环节是明智之举。

Linux服务器在许多不同类型的基础架构中运行关键任务型业务应用程序,包括物理机、虚拟机、私有云、公共云和混合云。对于 Linux系统管理员来说,了解如何管理Linux硬件基础架构很重要,包括与网络和存储有关的软件定义功能、Linux容器和Linux服务器上的多个工具。

排查并解决Linux上与硬件有关的问题可能需要一些时间。连经验丰富的系统管理员有时也要花几小时来解决莫名其妙的软硬件问题。

下列贴士帮助你更快速更轻松地为Linux中的硬件排查故障。许多不同的因素可能导致Linux硬件出现问题;在你开始尝试诊断之前,了解最常见的问题以及最有可能找到原因的环节是明智之举。

1.快速诊断设备、模块和驱动程序

故障排查的第一步通常是显示Linux服务器上安装的硬件列表。你可以使用ls命令获取硬件的详细信息,比如lspci、lsblk、lscpu和lsscsi。比如说,这是lsblk命令的输出结果:

# lsblk

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

xvda    202:0    0  50G  0 disk

├─xvda1 202:1    0   1M  0 part

└─xvda2 202:2    0  50G  0 part /

xvdb    202:16   0  20G  0 disk

└─xvdb1 202:17   0  20G  0 part

如果ls命令没有显示任何错误,使用初始化进程(比如systemd)查看Linux服务器的运行状况。systemd是启动用户空间、控制多个系统进程的最流行的初始化进程。比如说,这是systemctl status命令的输出结果:

# systemctl status

● bastion.f347.internal

    State: running

     Jobs: 0 queued

   Failed: 0 units

    Since: Wed 2018-11-28 01:29:05 UTC; 2 days ago

   CGroup: /

           ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

           ├─kubepods.slice

           │ ├─kubepods-pod3881728a_f2af_11e8_af77_06af52f87498.slice

           │ │ ├─docker-88b27385f4bae77bba834fbd60a61d19026bae13d18eb147783ae27819c34967.scope

           │ │ │ └─23860 /opt/bridge/bin/bridge --public-dir=/opt/bridge/static --config=/var/console-config/console-c

           │ │ └─docker-a4433f0d523c7e5bc772ee4db1861e4fa56c4e63a2d48f6bc831458c2ce9fd2d.scope

           │ │   └─23639 /usr/bin/pod

2.深入研究多个日志

dmesg让你可以搞清楚内核的最新信息中的错误和警示内容。比如说,这是dmesg| more命令的输出结果:

# dmesg | more

....

[ 1539.027419] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

[ 1539.042726] IPv6: ADDRCONF(NETDEV_UP): veth61f37018: link is not ready

[ 1539.048706] IPv6: ADDRCONF(NETDEV_CHANGE): veth61f37018: link becomes ready

[ 1539.055034] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

[ 1539.098550] device veth61f37018 entered promiscuous mode

[ 1541.450207] device veth61f37018 left promiscuous mode

[ 1542.493266] SELinux: mount invalid.  Same superblock, different security settings for (dev mqueue, type mqueue)

[ 9965.292788] SELinux: mount invalid.  Same superblock, different security settings for (dev mqueue, type mqueue)

[ 9965.449401] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

[ 9965.462738] IPv6: ADDRCONF(NETDEV_UP): vetheacc333c: link is not ready

[ 9965.468942] IPv6: ADDRCONF(NETDEV_CHANGE): vetheacc333c: link becomes ready

....

你还可以查看/var/log/messages文件中的所有Linux系统日志,在这里找到与特定问题有关的错误。如果你对硬件进行改动,比如挂载额外磁盘或添加以太网网卡,有必要通过tail命令实时密切关注信息。比如说,这是tail-f/var/log/messages命令的输出结果:

# tail -f /var/log/messages

Dec  1 13:20:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa

Dec  1 13:20:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local

Dec  1 13:21:03 bastion dnsmasq[30201]: setting upstream servers from DBus

Dec  1 13:21:03 bastion dnsmasq[30201]: using nameserver 192.199.0.2#53

Dec  1 13:21:03 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa

Dec  1 13:21:03 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local

Dec  1 13:21:33 bastion dnsmasq[30201]: setting upstream servers from DBus

Dec  1 13:21:33 bastion dnsmasq[30201]: using nameserver 192.199.0.2#53

Dec  1 13:21:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa

Dec  1 13:21:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local

3.分析网络功能

你可能在复杂的网络环境中有成千上万个云原生应用程序为业务服务提供服务;这些可能包括虚拟化、多云和混合云。这意味着你应该分析网络连接是否正常运行,这是故障排查的一部分。分析Linux服务器中网络功能的实用命令包括ip addr、traceroute、nslookup、dig和ping等。比如说,这是ip addr show命令的输出结果:

# ip addr show

1:

lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2:

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000

    link/ether 06:af:52:f8:74:98 brd ff:ff:ff:ff:ff:ff

    inet 192.199.0.169/24 brd 192.199.0.255 scope global noprefixroute dynamic eth0

       valid_lft 3096sec preferred_lft 3096sec

    inet6 fe80::4af:52ff:fef8:7498/64 scope link

       valid_lft forever preferred_lft forever

3:

docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default

    link/ether 02:42:67:fb:1a:a2 brd ff:ff:ff:ff:ff:ff

    inet 172.17.0.1/16 scope global docker0

       valid_lft forever preferred_lft forever

    inet6 fe80::42:67ff:fefb:1aa2/64 scope link

       valid_lft forever preferred_lft forever

....

结束语

Linux硬件故障排查需要具备相当扎实的知识,包括如何使用功能强大的命令行工具、解读系统日志。你还应该知道如何诊断内核空间,可以在内核空间找到许多硬件问题的根本原因。请记住,Linux中的硬件问题可能由许多不同的方面引起,包括设备、模块、驱动程序、BIOS、网络,甚至是旧硬件故障。

如何查看linux服务器的配置

Linux大部分操作是通过命令实现的,并不像windows那么直观。linux查看硬件信息也是需要通过linux查看硬件信息命令查询的

系统

# uname-a#查看内核/操作系统/CPU信息

# head-n 1/etc/issue#查看操作系统版本

# cat/proc/cpuinfo#查看CPU信息

# hostname#查看计算机名

# lspci-tv#列出所有PCI设备

# lsusb-tv#列出所有USB设备

# lsmod#列出加载的内核模块

# env#查看环境变量

资源

# free-m#查看内存使用量和交换区使用量

# df-h#查看各分区使用情况

# du-sh<目录名>#查看指定目录的大小

# grep MemTotal/proc/meminfo#查看内存总量

# grep MemFree/proc/meminfo#查看空闲内存量

# uptime#查看系统运行时间、用户数、负载

# cat/proc/loadavg#查看系统负载

磁盘和分区

# mount| column-t#查看挂接的分区状态

# fdisk-l#查看所有分区

# swapon-s#查看所有交换分区

# hdparm-i/dev/hda#查看磁盘参数(仅适用于IDE设备)

# dmesg| grep IDE#查看启动时IDE设备检测状况

网络

# ifconfig#查看所有网络接口的属性

# iptables-L#查看防火墙设置

# route-n#查看路由表

# netstat-lntp#查看所有监听端口

# netstat-antp#查看所有已经建立的连接

# netstat-s#查看网络统计信息

进程

# ps-ef#查看所有进程

# top#实时显示进程状态

用户

# w#查看活动用户

# id<用户名>#查看指定用户信息

# last#查看用户登录日志

# cut-d:-f1/etc/passwd#查看系统所有用户

# cut-d:-f1/etc/group#查看系统所有组

# crontab-l#查看当前用户的计划任务

服务

# chkconfig--list#列出所有系统服务

# chkconfig--list| grep on#列出所有启动的系统服务

程序

# rpm-qa#查看所有安装的包

其他常用命令整理如下:

查看主板的:dmidecode| grep-i'serial number'

用硬件检测程序kuduz探测新硬件:service kudzu start( or restart)

查看CPU信息:cat/proc/cpuinfo [dmesg| grep-i'cpu'][dmidecode-t processor]

查看内存信息:cat/proc/meminfo [free-m][vmstat]

查看板卡信息:cat/proc/pci

查看显卡/声卡信息:lspci|grep-i'VGA'[dmesg| grep-i'VGA']

查看网卡信息:dmesg| grep-i'eth'[cat/etc/sysconfig/hwconf| grep-i eth][lspci| grep-i'eth']

查看PCI信息:lspci(相比cat/proc/pci更直观)

查看USB设备:cat/proc/bus/usb/devices

查看键盘和鼠标:cat/proc/bus/input/devices

查看系统硬盘信息和使用情况:fdisk disk– l df

查看各设备的中断请求(IRQ):cat/proc/interrupts

查看系统体系结构:uname-a

查看及启动系统的32位或64位内核模式:isalist–v [isainfo–v][isainfo–b]

查看硬件信息,包括bios、cpu、内存等信息:dmidecode

测定当前的显示器刷新频率:/usr/sbin/ffbconfig–rev?

查看系统配置:/usr/platform/sun4u/sbin/prtdiag–v

查看当前系统中已经应用的补丁:showrev–p

显示当前的运行级别:who–rH

查看当前的bind版本信息:nslookup–class=chaos–q=txt version.bind

查看硬件信息:dmesg| more

显示外设信息,如usb,网卡等信息:lspci

查看已加载的驱动:

lsnod

lshw

查看当前处理器的类型和速度(主频):psrinfo-v

打印当前的OBP版本号:prtconf-v

查看硬盘物理信息(vendor, RPM, Capacity):iostat–E

查看磁盘的几何参数和分区信息:prtvtoc/dev/rdsk/c0t0d0s

显示已经使用和未使用的i-node数目:

df–F ufs–o i

isalist–v

对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

主机CPU信息:Cpuinfo

主机DMA通道信息:Dma

文件系统信息:Filesystems

主机中断信息:Interrupts

主机I/O端口号信息:Ioprots

主机内存信息:Meninfo

Linux内存版本信息:Version

备注: proc– process information pseudo-filesystem进程信息伪装文件系统

在linux 下怎么查看服务器的cpu和内存的硬件信息

free,显示内存cpu的使用情况

fdisk-l,查看硬盘分区

常用的命令

ls,列出当前目录下的文件,ls-l是列出详细信息,ls-a列出隐藏文件。

cd,更改目录。clear,清屏命令。reset,重置终端。

startx,启动图形界面。fdisk-l,查看硬盘分区。

ps aux,列出系统进程。cat,显示文本。tac,逆序显示文本。

od,二进制格式显示文本。wc,判断文件的大小行数和字符数等等。

aspell,检查文件中的拼写错误。less,分页读取文件。more,与less类似,但是功能不及less。

reboot,重启系统。poweroff,关机。halt,也是关机,但是需要手动切断电源,不推荐使用。shutdown-h now,立即关机,后面的now可以替换成时间,可以指定关机时间的指令,据说良好的系统管理员应该使用这个命令。shutdown-r now,与上一条类似,只不过是重启。sync,同步硬盘数据,重启或关机前应该多次使用。

locate,查询文件位置,每隔一段时间应该使用updatedb命令以提供搜索范围。find,强大的查询命令,参数众多。find/-name*,这是查询/下所有文件的意思。

whereis,我用他来判断命令的所在位置,如whereis ls。

sudo,在普通帐户的情况下使用root权限,不过需要修改/etc/sudoers文件才可以。

mv,移动文件或者重命名。mv/etc/*/home/tom,是将/etc所有文件移动到tom目录下的意思。mv a b,把a重命名为b.当然,这只是个例子,具体操作的时候需要看具体情况进行判定。

cp,于mv类似,也是相同的格式,只不过不是移动,是复制。如果复制的是目录的话,需使用-r参数,cp-r***.

rm,这是删除指令,与cp类似,删除目录添加-r,提示删除使用-i

useradd,添加一个新帐户。userdel,删除一个帐户。

passwd,为一个帐户设置密码。都有许多参数来实现其他功能。

chown,更改文件所属。如chown tom.tom文件名,将文件改为所属组tom,所属者也是tom。

chmod,更改文件的权限,只说简单的改法,chmod 777文件名,文件将有所有的权限。

chkconfig--list,用来观察服务状态,chkconfig--level?服务名 on/off,打开或者关闭服务,?代表运行级别。

init(1,2,3,4,5,6)用来在6个运行级别切换。

runlevel查看现在的运行级别。

bc,一个计算器。date,显示时间。cal显示日历。

如果是redhat的话,还有setup,用来设置一些系统相关,ntsysv,专门用来设置服务,这样就不用chkconfig了。

tr,压缩或者替换字符。dh,计算目录的大小。df,显示文件系统的信息。

free,显示内存cpu的时用情况。top,动态观察进程。

tar-czvf,创建*.tar.gz压缩包,tar-xzvf,解压这种压缩包。

tar-cjvf,创建的是*.tar.bz2,解压是tar-xjvf

rpm-ivh,安装rpm包,rpm-e卸载rpm包

who,观察登录情况。whoami,who am i,两条命令有一些区别,不过差不多。id,用来查看帐户的信息。w,也是查看登录情况的,更加详细。

echo,用来显示环境变量等等,例子echo$LANG。

history,显示命令历史。mount挂在设备。umount,卸载设备。dmesg,显示启动信息。yum,更新时用的命令。

ssh,ssh登录。telnet,telnet登录。还有ftp命令。

gcc,g++,java,javac,都是编程用的命令。make,如果有makefile的话,可以用他编译。

阅读剩余
THE END