Linux 4.0 不再需要重启

Linux 4.0 里,你可能再也不需要重启你的操作系统。

在大多数的服务器或者数据中心里,喜欢用linux的一个原因是你不需要频繁的进行重启操作。诚然,某些关键性的补丁必须要进行重启,但你也可以等到数月后再做此操作。现在,得益于 linux 内核的最新更新 你也许可以数年间都不用重启。

感谢 Ksplice 项目,使得这一特性在2009年就可以实现。此项目在对原始和打过补丁的内核进行比较后,使用一个定制的内核模块将新的代码加入到运行内核中。在支持Ksplice的内核中,每个将被修补的功能都携带有一套特殊标志用以进行区分。Ksplice进程会监视正在修补该函数的代码是不是当前不在使用,当当,打上补丁,你的服务器上继续运行。

Oracle 在 2011 年收购了 Ksplice 项目,并将其作为 RHEL 的一项可选服务,使其应用于它自己的Oracle Linux 中(一个 RHEL(Red Hat Enterprise Linux ) 的克隆版本)。这将此项技术隔离于其他企业版和服务器版 Linux 之外。

后来 KemelCare 为大部分企业发行版 Linux 发布了一项提供非启动式补丁服务。此程序作为专利软件,只能通过按月支付来享有此服务。这从而很难满足大多数Linux系统管理员。

所以,Red Hat 和 SUSE 开始着手完全开源的为 Linux 安装严重补丁的非重启方案。Red Had 的项目命名为 kpatch, SUSE的项目命名为 kGraft.

两个公司采用了不同的途径。Kpatch 发布了一个 stop_machine() 命令。之后,它着眼于现有的栈处理去使用ftrace,如果打补丁可以被做得很安全,它会重定向运行着的代码到补丁函数,而后就删除现在过时的代码。

比过去好的是,数据中心被运行在世界各处,但是它们中的许多都需要一个21世纪式的重启。今天的数据中心必须更有效率,更有鲁棒性和灵活性,这超过以往任何时候。我们检查怎样才能运行好你的数据中心,与之相对的是外包到一个云或者一个服务提供商,或是采取混合的方式。

Kgraft 一直使用ftrace,尽管它是工作在线程级的。当一个老的函数被调用,它会定位到线程的一个点,然后将其切换到新的函数。

虽然最终结果相同,即操作系统在打补丁的时候保持运行,但还是有显著的性能差异的。当kGraft可能花费数分钟的时候,Kpatch可以只需要1到40毫秒,但他们从不会停机。
在2014年10月召开的linux 开发者大会上,两个小组合二为一并且开始致力于联合最好的程序使linux打补丁时不再重启。实际上,他们最终是把kpatch和kGraft都丢进了Linux内核。

Jiri Kosina,一位SUSE软件工程师和Linux内核开发者解释说,Linux内核的热补丁将会“为函数提供一个基本基础设施”  热补丁(例如:代码重定向),包括为了包含实际补丁的内核模块的API(应用程序接口),和为了在用户空间可以操作补丁的API/ABI(应用二进制接口),这是“相对简单和简约的,因为它尽可能多的利用了已有的内核基础(名为ftrace)。它也是自包含的,在某种意义上说,它不在任何其他的内核子系统中调用自身(它甚至不接触其他任何代码)”

Linux 4.0 RC 版现在已经放出,Kosina 声称:”现在实施的x86架构只是作为一个参考架构,对于powerpc, s390 和 arm 的支持工作已经在进行中了“。确实,对于这些架构的支持源代码已经在 Live Patching Git code 上了。
简单的代码仅仅只是开始,你的发行版将通过补丁来支持和使用它。随着 Red Hat 和 SUSE 的支持,live 补丁将很快默认在所有商业Linux发行版中。

以上所述就是本文的全部内容了,希望大家能够喜欢。

(0)

相关推荐

  • linux自动重启tomcat脚本分享

    复制代码 代码如下: #!/bin/bash##chkconfig: 35 88 14#description: tomcat auto start script#script by okhelpercase "$1" instart)echo "Here is start script..."JAVA_HOME=/usr/jdk1.6.0_13;export JAVA_HOMEJRE_HOME=$JAVA_HOME/jre;export JRE_HOMEexpor

  • win2003或linux服务器一般多久重启一次

    win2003 server服务器多久重启一次 得根据服务器的负载量来确定,数据量大的话,每次启动时间间隔就需要短些,反之就可以长一些.如果机器维护的比较好,启动时间间隔也可以延长些,只要客户访问速度不慢就好. 在服务器没有问题的情况下: Windows 2003系统的内存管理已经改进的很大了 一般半个月~两个月重新启动一次就可以了. Linux 需要重新启动的时间间隔就可以比较长了.一般3个月到5个月. 这些都得根据你的实际使用情况来看,如果客户访问速度慢了,或者服务器出问题了.就需要重新启动

  • php控制linux服务器常用功能 关机 重启 开新站点等

    php 里面有个 system 方法, 可以调用系统命令. 先建立一个脚本(比喻 /root/reboot_server.sh ),重启用的. 复制代码 代码如下: #!/bin/bash reboot 再给他赋予权限 4755 chown root:root /root/reboot_server.sh chmod 4755 /root/reboot_server.sh chmod 4777 /sbin/reboot 再在 php 里, 想办法做如下调用 复制代码 代码如下: <?php sy

  • linux下通过脚本实现自动重启程序

    无论什么程序都不可能完美无缺,理论上,任何程序都有Core Dump的一天,正式运营的程序,尤其是服务器程序,一旦Core Dump,后果不堪设想,有过服务器开发经验的朋友,一定都经历过深夜美梦中,被电话惊醒的惨痛经历,手忙脚乱把服务器重新启动,第二天上班还要被老板一顿狠批.所以,程序发生错误时自动重启变得很重要.这里集中讨论linux实现自动重启程序的方法. linux下实现程序的自动重启有很多方法,这里我们介绍的是通过自己写脚本来实现, 自动重启脚本 假定需要实现重启的程序名为 test ,

  • linux下监视进程 崩溃挂掉后自动重启的shell脚本

    ================================================= 本文为khler原作,转载必须确保本文完整并完整保留原作者信息及本文原始链接 Author: HeYuanHui E-mail: khler@163.com QQ: 23381103 MSN: pragmac@hotmail.com ================================================= 如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务

  • linux正确重启MySQL的方法

    由于是从源码包安装的Mysql,所以系统中是没有红帽常用的servcie mysqld restart这个脚本 只好手工重启 有人建议Killall mysql.这种野蛮的方法其实是不行的,强制终止的话,如果造成表损坏,损失是巨大的. 这里推荐安全的重启方法 $mysql_dir/bin/mysqladmin -u root -p shutdown $mysql_dir/bin/safe_mysqld & mysqladmin和mysqld_safe位于Mysql安装目录的bin目录下,很容易找

  • Linux 4.0 不再需要重启

    Linux 4.0 里,你可能再也不需要重启你的操作系统. 在大多数的服务器或者数据中心里,喜欢用linux的一个原因是你不需要频繁的进行重启操作.诚然,某些关键性的补丁必须要进行重启,但你也可以等到数月后再做此操作.现在,得益于 linux 内核的最新更新 你也许可以数年间都不用重启. 感谢 Ksplice 项目,使得这一特性在2009年就可以实现.此项目在对原始和打过补丁的内核进行比较后,使用一个定制的内核模块将新的代码加入到运行内核中.在支持Ksplice的内核中,每个将被修补的功能都携带

  • 红旗Linux桌面版 4.0光盘启动安装过程图解(Red Flag Linux 4.0)

    一,准备工作:    1,购买或下载红旗Linux桌面版 4.0的安装光盘或镜像文件.下载地址:http://www.redflag-linux.com/xiazai/xiazai.php?id=1325    2,在硬盘中至少留2个分区给安装系统用,挂载点所用分区推荐4G以上,交换区不用太大在200M-600M左右比较适合,文件系统格式不论,反正安装过程会重新格式化.    3,记录下你电脑中下列设备型号∶鼠标.键盘.显卡.网卡.显示器.及网络设置用到的IP地址.子网掩码.默认网关和DNS名称

  • 详解 Linux中的关机和重启命令

    详解 Linux中的关机和重启命令 一 shutdown命令 shutdown [选项] 时间 选项: -c:取消前一次关机命令 -h:关机 -r:重启 二 shutdown实战 [root@localhost tmp]# date Sat Jul 15 09:28:35 CST 2017 [root@localhost tmp]# shutdown -r 05:30 Shutdown scheduled for Sun 2017-07-16 05:30:00 CST, use 'shutdow

  • RedHat linux 8.0下内核编译步骤和说明

    ************************************************************************以下步骤有很多都是很初级的命令或解释,因为偶是linux新手,*在编译过程中走了很多弯路,花了大量时间找各种解决办法,所以*把相应的命令都写了出来,希望对跟偶一样的才入门不久而又想*编译内核的新手有所帮助!** kilvon 05-Mar-2003******************************************************

  • CentOS8 Linux 8.0.1905的安装过程(图解)

    截止目前为止CentOS的最新版本为CentOS 8版本,接下来就介绍CentOS Linux 8.0.1905的安装过程 1. 安装CentOS 8 成功引导系统会显示如上图的界面: # 界面说明 Install CentOS Linux 8.8.1905: 安装CentOS Linux 8.0.1905 Test this media & install CentOS Linux 8.0.1995:测试并安装CentOS Linux 8.0.1995 Troubleshooting : 故障

  • Linux系统上实现定时重启Tomcat服务脚本介绍

    目录 一.创建Shell脚本 二.修改文件权限 三.建立定时任务 四.定时任务描述语法 1. 星号(*) 2. 逗号(,) 3. 斜杠(/) 4. 横杠(-) 五.其他 因为使用阿里云部署服务器应用时,Tomcat服务经常由于内存不足出现OutOfMemoryError异常的情况.经常过几天就需要重启一次服务器,更要命的是不知道什么时候会由于内存不足导致无法访问,如果重启不及时严重影响系统体验. 为了解决上述问题,一方面是对tomcat配置做一些优化,网上有很多文章讲解如何优化Tomcat内存设

  • 解决Linux Tensorflow2.0安装问题

    conda update conda pip install tf-nightly-gpu-2.0-preview conda install https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/cudnn-7.3.1-cuda10.0_0.tar.bz2 conda install https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/cud

  • linux进程监控与自动重启的简单实现方法

    目的: linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能. 实现原理: 由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志. crontab修改 # crontab -e */5 * * * * /mnt/bindmonitor.sh /mnt/bindmonitor.sh 的实现 #! /bin/sh host_dir=`echo ~` # 当前用户根目录 proc_name="/home/wkubu

  • mysql8.0.23 linux(centos7)安装完整超详细教程

    上篇文章给大家介绍了MySQL 8.0.23 主要更新一览(新特征解读) ,感兴趣的朋友点击查看吧! 最新版windows mysql-8.0.23-winx64,点击下载 mysql8.0.23 linux(centos7)安装教程(附:配置外网连接用户授权 与 不区分大小写配置) (博主在这里叨叨几句,稍后进入正题.在使用开发过程中,有时候数据库结合使用,会成倍提高程序效率) 什么是关系型数据库? 常见的关系型数据库: (其实博主也只使用过 MySQL Oracle sqlServer) O

随机推荐