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
● bastionf347internal
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
├─kubepodsslice
│ ├─kubepods-pod3881728a_f2af_11e8_af77_06af52f87498slice
│ │ ├─docker-88b27385f4bae77bba834fbd60a61d19026bae13d18eb147783ae27819c34967scope
│ │ │ └─23860 /opt/bridge/bin/bridge --public-dir=/opt/bridge/static --config=/var/console-config/console-c
│ │ └─docker-a4433f0d523c7e5bc772ee4db1861e4fa56c4e63a2d48f6bc831458c2ce9fd2dscope
│ │ └─23639 /usr/bin/pod
2深入研究多个日志
dmesg让你可以搞清楚内核的最新信息中的错误和警示内容。比如说,这是dmesg | more命令的输出结果:
# dmesg | more
[ 1539027419] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 1539042726] IPv6: ADDRCONF(NETDEV_UP): veth61f37018: link is not ready
[ 1539048706] IPv6: ADDRCONF(NETDEV_CHANGE): veth61f37018: link becomes ready
[ 1539055034] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 1539098550] device veth61f37018 entered promiscuous mode
[ 1541450207] device veth61f37018 left promiscuous mode
[ 1542493266] SELinux: mount invalid Same superblock, different security settings for (dev mqueue, type mqueue)
[ 9965292788] SELinux: mount invalid Same superblock, different security settings for (dev mqueue, type mqueue)
[ 9965449401] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 9965462738] IPv6: ADDRCONF(NETDEV_UP): vetheacc333c: link is not ready
[ 9965468942] 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 127001#53 for domain in-addrarpa
Dec 1 13:20:33 bastion dnsmasq[30201]: using nameserver 127001#53 for domain clusterlocal
Dec 1 13:21:03 bastion dnsmasq[30201]: setting upstream servers from DBus
Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 19219902#53
Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 127001#53 for domain in-addrarpa
Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 127001#53 for domain clusterlocal
Dec 1 13:21:33 bastion dnsmasq[30201]: setting upstream servers from DBus
Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 19219902#53
Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 127001#53 for domain in-addrarpa
Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 127001#53 for domain clusterlocal
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 127001/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 1921990169/24 brd 1921990255 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 1721701/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自带的软件工具virt-manager。
本文阐述的镜像制作方法, 简称本方法。主要是针对国产化 *** 作系统的镜像制作,制作出来的镜像供国产化云平台使用,也可以在其他云平台使用。镜像制作过程大致包含以下几个步骤:
1 获取 *** 作系统文件
2 使用国产 *** 作系统创建虚拟机
3 系统安装
4 网络配置
5 云平台所需软件包安装
6 镜像压缩及保存
系统不同,设置默认用户、系统分区、网络配置的顺序略有不同,以实际 *** 作为准。本文以统信UOS 20 sp1版本为例,讲述国产云平台虚拟机的镜像制作方法。
1 获取 *** 作系统文件
获取 *** 作系统文件需注意根据系统cpu架构选择对应架构的 *** 作系统。目前国产化支持的架构有ARM、X86、MIPS、Alpha, 其中ARM/MIPS/Power/ALPHA均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构。本文所述的国产化云平台采用的是寄居架构的虚拟化技术,即在 *** 作系统之上安装和运行虚拟化程序,这样虚拟机的系统依赖于物理机的 *** 作系统虚拟机的 *** 作系统需与物理机兼容,如果架构不一致,无法正常运行。
2 使用国产 *** 作系统创建虚拟机
加载 *** 作系统的安装CD或者DVD ISO文件。如下图所示,安装方式选择本地镜像源。
选中所需要的ISO文件为启动镜像,需设置系统版本。
设置内存、CPU和虚拟机根磁盘的大小。内存建议1024 即1G, cpu建议1, 根磁盘建议20G, 磁盘类型设置为VirtIO。 这里设置的内存、cpu和根磁盘大小就是云平台虚拟机支持的最小配置,所以不建议太大。不然会造成诸多资源的浪费。
对虚拟机进行自定义配置。未其配置输入(键盘、鼠标和tablet),vnc以及video 、设置启动顺序,如下图
设置虚拟机的启动顺序为从虚拟光驱引导启动:
设置完毕后点击“Begin Installation”后开始安装。
3 系统安装
以统信uos系统制作为例:
Uos系统设置主要是指系统语言设置、安装环境选择、安装位置选择等。出现引导界面,选择安装uos
等待加载文件,可能需要1分钟左右,稍作等待。
选择安装语言,建议选择简体中文(银河麒麟由于编解码问题建议选择英文):
根据需要选择安装基本环境。云平台虚拟机建议选择最小安装或图形化服务器。 最小 化 安装 就是, 安装 最基本的程序,使之可以运行,但有些扩展模块不 安装 。图形化服务器预装了图形化界面gui以及服务器需要的必要软件。桌面服务器供终端使用,预制了gui界面。
到安装位置处,选择手动安装。添加分区。选择盘,点击右侧加号开始设置分区。
选择分区属性。文件系统、挂载点以及大小。大小可以手动输入。设置完毕后点击新建。
最终设置分区如下图所示。Vda1类型 为ext4,挂载点为/boot, 建议大小300MB。 Vda2类型 为efi, 建议大小300MB。 Vda3类型 为交换空间,
, 建议大小2048MB 。 Vda4类型 为ext4, 挂载/ 。交换空间可以不要,根分区必须在最后,方便云平台的虚拟机创建后自动进行根目录扩容。分区类型建议不要选择lvm, 选择lvm后需要手动进行磁盘扩容,适合少量的虚拟机。国产系统多采用UEFI引导系统需要增加分区/boot/efi分区。
安装位置确定后选择开始安装。
等待安装完成。
安装完成,点击立即体验, 系统开始重启。
关闭虚机。修改启动方式为从磁盘启动,再启动虚机
选择时区
设置登录用户名和密码。
等待优化系统配置
之后使用设置的用户名密码登录。
登录系统后需进行系统配置,检查防火墙和selinux是否关闭,如果没有关闭需关闭。关闭命令:
sed -i's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
为保障虚拟机可通过密码访问,需修改ssh配置文件。允许密码访问和允许root管理员登录。修改/etc/ssh/sshd_config 修改以下参数后重启sshd服务。
PermitRootLogin yes
PasswordAuthentication yes
4 网络配置
为下一步安装软件的需要,虚机需要联通网络,所以需要配置网络,主要包括配置 ip地址、网关、掩码和dns服务器。UOS启动后自动获取了地址和DNS服务器。如下图。如果虚机不能上网, 可以跳过本步骤。配置成功的网络如下图:
Ping 是否通
5 安装云平台软件
云平台需要的软件有cloud-init,cloud-guest-utils 和qemu-guest-agent
(1)镜像源设置
#统信uos镜像源地址:
#修改/etc/apt/sourceslist文件,
deb [by-hash=force] >为了远程解决电脑问题的需要,找到了TeamViewer这个远程协助神器,用了好几年,表现非常优秀,我使用它为朋友和客户安装软件、设置路由器、配置NAS或是处理各类软件使用问题,表现让人满意,哪怕是3G手机或传统拨号猫的小带宽的环境,都可以顺畅地完成远程协助 *** 作,百度里面也有详细介绍。概述
关于如何安装部署openstack,各个大小公司纷纷推出自己的方案和产品,例如fuel、trippleO、RDO、devstack等等。试用了RDO等工具后,也萌生了实现一个自研工具的想法(顺便弥补这一块知识的空白),现将思路及过程记录如下。
需求
1、支持灵活的安装部署方式(单台host或者批量host)和多种安装介质(物理机或者虚拟机)
2、安装部署过程用户体验好
(1)安装工时短
(2)并发安装服务器数量多
(3)用户参与环节尽量少
3、兼容性好
(1)可以支持业界主流服务器
(2)跨vlan部署
总体思路
步骤 备选方案 技术点
制作安装源
备选1:标准cd/dvd形式linux系统iso文件+RPM包形式openstack源(例如centosiso+yum openstack源)
备选2:livced形式iso,openstack已安装到iso中
本方案选择备选2, *** 作系统采用centos 65,openstack采用H版本
1、openstack rpm包制作:复用rdo h版本openstack的spec文件,制作openstack的rpm包
2、制作livecd:livecd-tools开源工具、kickstart文件定制( *** 作系统裁剪)
iso安装
livecd的安装不能使用anaconda安装工具,需要自行写作脚本程序(shell或python等),脚本大致流程如下:
(1)执行安装脚本,入参为目的安装磁盘(例如/dev/sda)
(2)安装脚本完成清理磁盘工作,物理卷(pv)、卷组(vg)、逻辑卷(lv)、磁盘分区等
(3)安装脚本完成创建分区的工作(例如创建两个分区/dev/sda1、/dev/sda2,磁盘分区选择mbr类型,/dev/sda1设置为boot类型分区)
(4)安装脚本找到根文件系统文件所绑定的loop设备(例如/dev/loop3),将其内容复制到/dev/sda1
(5)安装脚本生成启动引导程序(例如extlinux),确保后续系统可以从硬盘启动
(6)安装脚本完成其他工作,例如设置root账户密码,将剩余磁盘空间生成vg等
1、脚本实现参考ovirt-node开源软件代码
2、系统引导相关知识
(1)启动引导程序,grub、extlinux
(2)磁盘分区格式,mbr、gpt、EFI
3、磁盘相关工具,parted、fdisk、blkid、pvcreate等
pxe安装
pxe服务器搭建
备选1:使用tftp、dhcp等自行搭建pxe服务器
备选2:选择一个业界成熟的具备pxe能力的安装配置工具
本方案选择cobbler开源工具
制作的livcecd能够支持pxe流程
备选1:使用livecd-iso-to-pxe工具将iso封装成vmlinuz和initrdimg(200多MB)两个文件,可以通过标准pxe流程引导
备选2:制作一个mini镜像(50MB以内)用于pxe引导,mini镜像中植入安装脚本,安装脚本启动后,再将真正的镜像文件下载到光盘镜像环境并安装
本方案当前已实现备选1,后续会尝试备选2
pxe能支持大规模批量部署,可靠性好
1、使用以上“制作的livcecd能够支持pxe流程”备选1时,initrdimg大概200-300MB,pxe使用tftp协议不可靠,故需要使用gpxe
2、使用以上“制作的livcecd能够支持pxe流程”备选2时,需要下载镜像到本地,可以引入p2p技术,加速下载过程
pxe能够跨vlan部署服务器
交换机配置dhcp中继、dhcp服务配置为不同vlan服务器分配对应网段ip
1、cobbler的配置和使用
2、mini镜像的运行机制
3、gpxe机制及配置
4、p2p功能(bittorrent开源软件)的引入
5、交换机dhcp配置
配置 本方案需求是解决第一次openstack节点的配置问题,使用业界成熟的配置工具即可,例如puppet、salt等 salt开源软件
关键技术点
1、制作livecd
介绍:
livecd是redhat体系提供的一种镜像格式,制作的iso可以直接启动,当然也可以安装到硬盘上。现在centos、fedora每个版本发布的repo都包含了已编译出的livecd iso。例如CentOS-64-x86_64-LiveCDiso。也可以到其官方网站下载
步骤:
(1)执行以下命令,安装redhat openstack Grizlly的yum文件
yum install -y >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)