笔记本服务器改造踩坑

栏目: 服务器 · 发布时间: 6年前

内容简介:公司入职发了台 16G 内存的惠普笔记本,买了 Mac 之后一直闲置,在拖延许久之后终于抽时间将其换成 CentOS,来搞一些自己的服务放上面,毕竟 16G 内存还是很可观的配置。本篇讲述折腾过程。安装过程就不多说了,需要注意的就是关闭安全启动,启用传统模式(事实上启用之后是 UEFI 和传统模式混用,这种情况下 CentOS 会自动以 UEFI 模式进行安装)。这里有一个坑点在于如果在安装过程中选择无线连接,在安装完之后该连接无法启用。因为选择了最小化安装,网络管理相关的依赖是残缺的,所以需要在安装之后

公司入职发了台 16G 内存的惠普笔记本,买了 Mac 之后一直闲置,在拖延许久之后终于抽时间将其换成 CentOS,来搞一些自己的服务放上面,毕竟 16G 内存还是很可观的配置。本篇讲述折腾过程。

安装 CentOS

安装过程就不多说了,需要注意的就是关闭安全启动,启用传统模式(事实上启用之后是 UEFI 和传统模式混用,这种情况下 CentOS 会自动以 UEFI 模式进行安装)。这里有一个坑点在于如果在安装过程中选择无线连接,在安装完之后该连接无法启用。因为选择了最小化安装,网络管理相关的依赖是残缺的,所以需要在安装之后手动修复。

命令行模式下的网络连接

首先查看网络设备:

[root@localhost ~]# nmcli dev status
DEVICE  TYPE      STATE        CONNECTION
wlp2s0  wifi      unmanaged    --
enp1s0  ethernet  unavailable  --
lo      loopback  unmanaged    --

证明无线网卡没有被管理,需要将其纳入网络管理。

安装 NetworkManager-wifi 包重启即可,由于在安装过程中连接过无线网,那么在 /etc/sysconfig/network-scripts 目录下可以看到 ifcfg-[SSID] 的配置文件,那么重启之后会用该文件连接 wifi 网络。

没有网络怎么安装依赖包呢?挂安装光盘起本地镜像就好,在 /etc/yum.repos.d/CentOS-Media.repo 中指定了本地镜像源的挂载位置,挂在到相应位置启用即可。

设置公网访问

电信提供公网 IP,在路由器中将该电脑设备设置为 DMZ 区设备即可利用公网 IP 访问,需要注意的是启用 DHCP 的话内网 IP 可能变化,要在路由器配置中将特定的固定 IP 地址与设备 MAC 进行绑定,如此便确保 DMZ 区的设备始终为该电脑设备。

休眠问题

笔记本电脑合盖之后会自动休眠,需要进行配置,使其在合盖操作时依然保持运行状态。

编辑 /etc/systemd/logind.conf 文件,找到如下部分:

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
HandlePowerKey=ignore # 按电源键时不做任何处理
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
HandleLidSwitch=ignore # 合上盖子时不做任何处理
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=no
#UserTasksMax=

这里对该文件有详细的描述: https://www.freedesktop.org/software/systemd/man/logind.conf.html

到这里应该已经 OK 了,但是合上盖子后发现,即使通过局域网内进行 ssh 连接操作,都异常卡顿,网络连接非常慢。然而确实是可以连接上去的,服务器并没有休眠。这就让我开始怀疑除了上述控制休眠的设定之外,还有其他配置,猜测是由于电源管理的问题引起的。

由电源管理着手,搜寻资料,找到了一份 《Red Hat Enterprise Linux 7 电源管理指南》 。在其中发现了管理无线设备的工具,RFKill。此处引用原文介绍:

很多计算机系统包含无线电传输,其中包括 Wi-Fi、蓝牙和 3G 设备。这些设备消耗电源,在不使用这些设备时是一种浪费。

RFKill 是 Linux kernel 中的一个子系统,它可提供一个界面,在此界面中可查询、激活并取消激活计算机系统中的无线电传输。当取消激活传输时,可使其处于可被软件重新激活的状态(即“软锁定”)或者将其放在软件无法重新激活的位置(即“硬锁定”)。

刚开始以为这就是原因,后来才发现该软件包和 BIOS 设定中的启用硬件设备一样,都是为了在电脑运行时停止启用某些设备。

[root@localhost yum.repos.d]# rfkill list
0: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
2: hp-wifi: Wireless LAN
	Soft blocked: no
	Hard blocked: no

要么启用,要么禁用。这跟合上盖子启用网卡节能的现象不太相符。后来同样在该手册中,我发现了ASPM(Active-State Power Management,活动状态电源管理)。

ASPM(Active-State Power Management,活动状态电源管理)能节省 PCI Express(PCIe,Peripheral Component Interconnect Express)子系统的电量,其原理为当 PCIe 连接没有处于使用状态时将其设定为低功率状态。ASPM 可以同时控制连接两端的电源状态,并且在连接终端的设备处于满电状态的情况下,仍然可以节电。

看描述和我遇到的问题比较相符,在如下文件中可以看到 ASPM 的策略配置。

[root@localhost yum.repos.d]# cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave

在默认情况下,ASPM 是默认状态(default),即根据固件设置设定 PCIe 连接的状态。在上述文件中去直接更改设置是不可以的,修改的话系统会报写保护,手册中提到可以在启动时作为内核参数配置,参考 《在 CentOS 7 上设置 grub2》 尝试之:

[root@localhost yum.repos.d]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet pcie_aspm=off"
GRUB_DISABLE_RECOVERY="true"

核心参数就是 pcie_aspm=off 。重启之后测试,立竿见影,当我觉得问题解决的时候。过了一个小时,又歇菜了,又开始陷入了卡顿。

这时考虑,可能默认的固件设置还是会生效,只是相比较系统的设置而言没那么严格,遂决定尝试更改策略,而不是完全禁用。将 GRUB 配置中改为:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet pcie_aspm.policy=performance"

一切运行 OK,只能说服务器发行版运行于个人 PC 时,还是有或多或少的水土不服的。

配置免密登录

事实上 CentOS 7.4 之后,使用了 ssh 2.0 版本的协议,无需手动配置 sshd_config 来启用免密登录,默认是启用的。如果像之前那样配置 RSAAuthentication yes 选项,会在 /var/log/secure 记录中看到如下提示:

Nov 17 14:47:06 localhost sshd[11773]: reprocess config line 43: Deprecated option RSAAuthentication

此次设置公钥之后,仍然无法登录,搜索资料有说是 SELinux 引起的,关闭 SELinux 仍然无法免密登录。查找许久后发现是我本地的 ssh 连接配置出现了问题。

Host 192.168.1.*
  HostName %h
  User root
  IdentityFile ~/.ssh/xxx

我的局域网连接恰好和该 ip 段重复,所以一直使用错误的密钥文件进行连接。

添加了一条特殊的 ip 配置之后,问题解决,由此也说明 ssh 的 config 文件配置具体 ip 的优先级要高于表达式匹配,无所谓配置在文件中的先后顺序。

至此,便可以快乐的玩耍这台小鸡了。

-EOF-


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Android群英传

Android群英传

徐宜生 / 电子工业出版社 / 2015-9 / 69.00元

《Android群英传》对具有一定Android开发基础的读者,以通俗易懂的语言介绍了Android开发的进阶技巧。《Android群英传》共分为13章,讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用技巧、Activi......一起来看看 《Android群英传》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具