centos 启动很慢 centos7维护到2024年

大家好,今天来为大家解答centos 启动很慢这个问题的一些问题点,包括centos7维护到2024年也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

【UTC】CentOS7修改时区的正确姿势

整个地球分为二十四时区,每个时区都有自己的本地时间。在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC,Universal Time Coordinated)。

格林威治标准时间(Greenwich Mean Time)指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。(UTC与GMT时间基本相同,本文中不做区分)

中国标准时间(China Standard Time)【GMT + 8 = UTC + 8 = CST】

夏令时(Daylight Saving Time)指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用。(中国不使用)

RTC(Real-Time Clock)或CMOS时钟,一般在主板上靠电池供电,服务器断电后也会继续运行。仅保存日期时间数值,无法保存时区和夏令时设置。

一般在服务器启动时复制RTC时间,之后独立运行,保存了时间、时区和夏令时设置。

在CentOS 6版本,时间设置有date、hwclock命令,从CentOS 7开始,使用了一个新的命令timedatectl。

Centos7修改系统时区timezone ,解决快、慢8小时问题

如果服务器用非 UTC的时间,时区转换很容易不一致,而且对于有 daylight saving的时区,每年多一小时少一小时的那两天,系统就会出现各种诡异现象。

服务器使用UTC时间,如要显示用户所在时区的本地时间,在客户端转化即可。

# timedatectl

我们可以看到,服务器使用的CST时间

# timedatectl set-timezone UTC

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"

# timedatectl

我们可以看到,服务器时间类型更改为UTC了

# ll /etc/locatime

lrwxrwxrwx. 1 root root 25 1月 14 08:30 /etc/localtime->../usr/share/zoneinfo/UTC

实际上是做了一个将 

 文件 /etc/localtime 做了一个软连接到 /usr/share/zoneinfo/UTC

# ln -s /usr/share/zoneinfo/UTC  /etc/localtime

ln:无法创建符号链接"/etc/localtime":文件已存在

# ln -sf /usr/share/zoneinfo/UTC   /etc/localtime

做软连接时,需要加-f参数,强制覆盖,不然会显示软链接已存在

# timedatectl set-time"YYYY-MM-DD HH:MM:SS"

# timedatectl set-time "HH:MM:SS"   //只设置时分秒

# timedatectl

# clock -w

# date -u  //显示UTC时间

CentOS7修改时区的正确姿势

CentOS7上运行Java程序,发现程序生成的时间与当前时间匹配不上,还以为是数据停止更新了,后来发现没有正确使用修改时区的姿势,导致程序时区错误。

正确的修改CentOS7时区的姿势:

#  ln -sf/usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

其他系统的修改文件可能是/var/etc/localtime.

错误的姿势:通过cp命令覆盖/etc/localtime时间

 # cp-f /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

通过cp命令修改时区,通过date, data-R命令显示的时区都是正确的,可是对于java程序而言,是错误的。

具体原因在于Java访问系统时区的方式上,可参见文章:

Java TimeZone和 Linux TimeZone问题

该文章很好的说明了Java访问系统时区的方式:

1.如有环境变量 TZ设置,则用TZ中设置的时区

2.在/etc/sysconfig/clock文件中找“ZONE”的值

3.如何2)都没,就用/etc/localtime和/usr/share/zoneinfo下的时区文件进行匹配,如找到匹配的,就返回对应的路径和文件名。 

问题在于,如果使用cp命令来修改/etc/localtime文件,那么可能就会导致修改的不是/etc/localtime文件,而是原时区的文件内容。

/etc/localtime是通过符号链接链接/usr/share/zoneinfo下的文件,而java是通过文件名来确认时区的,data命令是通过文件内容确认时区的,这样就导致了data命令时区正确,而java的时区是错误的!

如上图所示:CentOS7是通过符号链接到/usr/share/zoneinfo/下的时区文件的,如果通过cp指令只会修改原时区文件内容,这样,通过date的系统命令,查看时间是OK的,可是java是通过读取文件名的方式确认时区信息的。所以时区还是纽约。

CentOS 7 下Tomcat启动超慢的原因及解决方案

CentOS 7系统中安装好openjdk和Tomcat后,启动过程很慢,长达数分钟,日志如下:

tomcat启动耗时278084ms折合278秒,对于刚刚安装的干净tomcat,这肯定是不对劲的。

其中有一条日志引起了笔者的注意:

显然tomcat执行到这里时出问题了,google了一下,经过一番搜索明白了其中的缘由。

在tomcat官方wiki文档的 HowToFasterStartUp章节中,Entropy Source部分有一段这样的说明:

从这里我们得知Tocmat的Session ID是通过SHA1PRNG算法计算得到的,计算Session ID的时候必须有一个密钥,为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥,它强依赖于获取熵池中的随机数来进行创建。

那么什么是/dev/random?什么是熵池?

/dev/random

从维基百科得知,在UNIX操作系统(包括类UNIX系统)中,/dev/random是一个特殊的设备文件,可以用作随机数生成器或伪随机数生成器。

Linux内核中的是第一个以背景噪声产生真正的随机数产生的实现,它允许程序访问来自设备驱动程序或其它来源的背景噪声。

Linux上有两个通用的随机设备:/dev/random和/dev/urandom。其中/dev/random的随机性最好,因为它是一个阻塞的设备。而/dev/random的一个副本是/dev/urandom(“unblocked”,非阻塞的随机数生成器),它会重复使用熵池中的数据以产生伪随机数据。这表示对/dev/urandom的读取操作不会产生阻塞,但其输出的熵可能小于/dev/random的。所以它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

熵池

熵池本质上是若干字节,/proc/sys/kernel/random/entropy_avail中存储了熵池现在的大小,/proc/sys/kernel/random/poolsize是熵池的最大容量,单位都是bit。如果 entropy_avail的值小于要产生的随机数bit数,那么/dev/random就会堵塞。

为什么熵池不够用?

熵池实际上是从各种noice source中获取数据,noice source可能是键盘事件、鼠标事件、设备时钟中等。linux内核从2.4升级到2.6时,处于安全性的考虑,废弃了一些source。source减少了,熵池补给的速度当然也变慢,进而不够用。

其实,通过消耗熵池,可以构造DDOS攻击。原理很简单,熵池空了,依赖随机数的业务(SSL,加密等)就不能正常进行。

通过以上信息,笔者得知该问题是由于熵池不足导致的。怎么解决?

使用非阻塞性的生成器/dev/urandom代替/dev/random。

1、可在JVM环境中配置

通过配置发生器指定熵收集守护进程

修改$JAVA_PATH/jre/lib/security/java.security中参数 securerandom.source为:

2、也可在Tomcat环境中配置

通过配置JRE使用非阻塞的Entropy Source获取熵

在$TOMCAT_HOME/bin/catalina.sh中加入:

这个系统属性egd表示熵收集守护进程(entropy gathering daemon)。

1、[硬件随机数生成器]安装并使用rng-tools作为额外的熵随机数生成器(推荐)

cat/dev/random命令会消耗熵池, rngd守护进程会补充熵池,可使用如下命令来测试随机数生成的情况:

2、[软件随机数生成器]在rng-tools仍不满足的情况下,可使用haveged作为额外的熵随机数生成器

要检查是否需要 Haveged,可使用下面命令查看当前收集到的熵:

如果结果比较低(<1000),建议安装 haveged,否则加密程序会处于等待状态,直到系统有足够的熵。

安装 haveged之后,可以再次查看系统熵看下有无提升。

因为方法一存在一定的不安全性,且需要对环境进行配置,为了满足熵的需要,这里笔者选择了第二种方法,使用rng-tools作为额外的熵随机数生成器,同以上操作后顺利解决了问题。

操作后重启tomcat日志如下,启动速度快了两个数量级:

参考文档:

U盘安装 Centos 解决 could not insert 'floppy' 问题

title: U盘安装 Centos解决 could not insert'floppy'问题 tags: [Linux, Centos] categories: [Linux, Centos]

Centos是当今流行的Linux发行版之一,没有Ubuntu的用户多,但企业级应用很多选择了Centos,胜在稳定,本文记录安装过程。

简介

CentOS是免费的、开源的、可以重新分发的开源操作系统?,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一。

CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于Red Hat Enterprise Linux(RHEL)依照开放源代码(大部分是GPL开源协议?)规定释出的源码所编译而成。

而且Centos天生支持 XFS文件系统,对于文件系统更加可靠

版本分类

CentOS主要分为两个主要版本,CentOS Linux和 CentOS Stream版。

CentOS Linux

Linux版每两年发行一次,每个版本的系统会提供10年的安全维护支持。

CentOS Linux版为传统CentOS系统,系统的基本源代码由RHEL对应版本的开源代码提供,是RHEL的下游。

当RHEL更新后CentOS Linux根据RHEL更新的内容进行更新并修复其中可能的漏洞等。版本略落后于RHEL,更新新特性速度较RHEL慢。提供与CentOS Linux版以前一样的安全服务支持和稳定的服务器操作系统,但CentOS Linux 8服务支持时间被大幅减少,CentOS Linux 7的维护时间暂时没有改变,且官方维护团队的重心已经转移到Stream版本。

CentOS Stream

Stream版为滚动更新版 [4]?,意味着没有固定版本号,是动态更新具体的内容。

CentOS Stream版则为滚动更新版?,系统的基本源代码也由RHEL对应版本的开源代码提供。但代码更加激进,是合并进 RHEL前的一个试验场,比RHEL更新新特性更快。等到相关新代码成熟后由RHEL合并,是RHEL的上游。

下载镜像

下载链接:

可以选择 Linux和 Stream版本的镜像

也可以在 Centos 7和 Centos 8中选择

制作U盘

注意:制作U盘过程中会清除U盘中所有数据,注意备份

下载 Utraiso软件并安装

插入U盘

菜单文件->打开->镜像路径

菜单启动光盘->写入硬盘映像

选择插入的U盘,写入即可

U盘安装启动

进入BIOS设置从U盘启动

从U盘启动后选择安装系统

报错 modprobe: ERROR: could not insert'floppy'……

安装过程中很可能遇到报错 modprobe: ERROR: could not insert'floppy'

出现错误不是操作系统的问题,你以为机器装不上这个Centos7,换成Centos8就可以了?不是的,一样会报这个错误(别问我怎么知道的)

出现的原因是安装引导程序找不到安装镜像了,事实上是找不到自己的U盘是哪个设备了。这很奇怪,引导程序都加载了,但是他忘了自己从哪来的了,需要我们手动告诉他。

重启计算机,重新进入安装界面,不要选择安装系统

按E键,进入命令编辑模式

初始编辑时是这样的(没有拍清楚不好意思):

将第一行核心命令改一下

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 quiet#原始命令#改为vmlinuz initrd=initrd.img linux dd quiet#新命令

此时按下 ctrl+X开始安装系统

还是安装不成功,不过此时会显示我们的磁盘信息:

可以看到,我们插入的U盘设备名称为 sdb4

再次重启,编辑命令

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOSx207x20x86_64 quiet#原始命令#改为vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiet#新命令

此时即可正常进入界面进行系统安装

参考资料

原文:

阅读剩余
THE END