写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文!

本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/8448519.html

我在我写的博客

最全最详细:ubuntu16.04下linux内核编译以及设备驱动程序的编写(针对新手而写)

里面的“虚拟机扩容”这个部分有点问题,本来按照我所描述的步骤去操作是没什么问题的(因为后来我给家里的联想古董一体机安装了linux发现没有出问题),但是可能是第一次给虚拟机挂载硬盘的时候交换区swap没有设置好,导致linux内核不能感知到硬盘交换区的存在,本来不是什么大问题,因为linux默认在90s内如果没有感知到swap交换区就会执行默认引导程序启动操作系统,但是这就使得开机时间增加了90s。这还了得!+90s的续命机会怎么能放弃?于是本文就续命。。。不是,就解决该问题提出解决方案。

  首先我们可以在开机界面发现linux内核的报错语句:

a start job is running for dev-disk-by uuid <disk-partition-uuid>

  这就是万恶之源,linux就是在此处被延时了90s,但是这句话看得人半懂不懂,没关系,90s延时过去后下面还有一条不起眼的语句:

Denpendency failed for Swap

    之前就是因为没有看见这句最关键的警告所以才一直没有找到解决方法,看到这句话之后,恍然大悟,才知道是交换区出了问题。

  那么如何解决呢,自然只好到交换区里面去看看了,执行命令:

swapon --show

  如果你的交换区正常,那么就会是这样:

  不正常就是这样:

  也就是说,你执行了查看swap区命令,但是却找不到交换区,也就是说实际上你的操作系统根本没有交换区。这是很麻烦的事情,因为这样的话操作系统内存与虚拟内存的数据交换就是直接进行的,首先,这会拖慢系统吞吐量,因为虚拟内存在硬盘上,无论是ssd还是机械的温彻斯特硬盘,它们的速度都远不敌dram内存的速度快;其次,离开了交换区的缓冲效果,大量数据直接从内存写入硬盘,硬盘会受不了,造成一定的损伤。总之,长远来看,没有交换区这是一个很严重的问题。尤其对于大型服务器来说,这是致命伤,因为如果访问量过大或者服务器遭受了DDoS攻击的话,服务器硬盘很可能会直接烧坏。

  不过,既然知道了问题所在就好解决了。我们知道,操作系统通过PCB感知进程,通过TCB感知线程,通过JCB感知等待调度的作业,那么操作系统必定会通过一个东东来感知数据交换区,这个东东就是UUID号码。

  先执行以下命令查看现有的硬盘情况:

mount

  结果是:

  上面这是我修复后的结果,如果没有修复我们可以从执行的结果看出swap区并没有挂载。

  输入以下命令查看操作系统预备给交换区的UUID:

sudo blkid

  执行后的结果如下图:

  从第二条信息/dev/sda5可以看到swap区本应该拥有的UUID。

  查看一下我们挂载硬盘失误后实际产生的UUID:

sudo nano /etc/fstab

  执行后发现两个UUID不一致,才知道问题出在UUID上。

  知道了问题那就好办了,更改/etc/fstab文件中swap分区的UUID就可以了。即通过命令打开vim来修改:

sudo vim /etc/fstab

  切记在此一定要用sudo的权限去修改,因为/etc/fstab文件是系统文件,不使用管理员权限的话只能读而不能写。

  修改文件内的swap的UUID为刚刚使用命令sudo blkid查看的swap应持有的UUID即可,下图是修改成功的结果:

  重启操作系统,问题修复。续命+90s。

  

  

TZ@home

2018/2/14

Ubuntu启动时a start job is running for dev-disk-by延时解决的更多相关文章

  1. 如何让ubuntu启动时打印字符信息----字符启动

    一.概述 要想实现字符启动,需要修改grub.cfg(启动配置文件),将“静态启动”改为“字符启动”. 但是grub.cfg通常只作为只读文件,修改它时实际上修改的是其他的文件然后再通过update- ...

  2. Ubuntu启动时直接进入命令行模式

    直接粘命令吧 sudo vim /etc/init/lightdm.conf 注释掉下面的内容 start on ((filesystem and runlevel [!06] and started ...

  3. ubuntu 启动时提示 Failed to load session ubuntu

    启动时候提示 Failed to load session ubuntu 通过 CTRL + ALT + [F1~F6] 进入终端界面登陆进系统, 进去之后执行 sudo apt-get instal ...

  4. ubuntu 启动项创建器 选择不了CD镜像,IOS镜像的解决方法

    自己系统是ubuntu14.04 , 想使用 ubuntu自带的启动项创建器(usb-creator-gtk)做一个CDLinux的U盘启动项, 打开程序后发现U盘识别了, 在添加镜像的时候,发现怎么 ...

  5. 基于WSL2 的 Docker Desktop 启动时 Failed to set version to docker-desktop: exit code: -1的解决方法

    在Windows 10 的 2004 版本  中, 启用 使用Docker Desktop 时 发现  根本无法启动, 偶尔 或者频繁的出错: System.InvalidOperationExcep ...

  6. Eclipse启动时提示fail to create the Java Virtual Machine问题的解决

    今天偶然打开Eclipse.发现无法打开,出现例如以下提示: 后来经过上网查询.发现是eclipse.ini文件的问题,打开eclipse安装文件夹下的eclipse.ini文件: -startup ...

  7. Eclipse启动时提示fail to create the Java Virtual Machine问题的解决办法

    是eclipse.ini文件的问题,打开eclipse安装目录下的eclipse.ini文件: 将其中的256m改为128m,512m改为256m,1024m改为512m即可 修改后如下: -star ...

  8. Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决)

    进入命令行模式,执行下面的命令: rm -rf /etc/X11/xorg.conf cp /etc/X11/xorg.conf.failsafe /etc/X11/xorg.conf 重启电脑. 上 ...

  9. Ubuntu启动停止在checking battery state...

    Ubuntu在“checking battery state...”处停止了,出现这种现象的原因可能有很多种.笔者遇到的是其中的一种. 情景描述: 笔者此前将Ubuntu的图形启动方式修改为了字符界面 ...

随机推荐

  1. Egret里用矢量挖圆形的洞

    项目里需要用到,但是不是用在新手引导上,下面的代码可以绘制一个圆的四分之一,用四个即可拼出一个圆. private createShape(): egret.Shape { let magicNum ...

  2. hdoj:题目分类

    基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1056.1058. ...

  3. c# 使用GDAL处理大图

    注意问题: 1.GDAL 使用官网生成好的dll,必须把Bin目录下的dll一并加到执行目录下去,否则会出错.  2. 用环境变量设置引用路径可以避免一大堆dll放一起.代码如下: /// <s ...

  4. 【转】Windows下charles 使用教程指南

    1.下载就不用再说了,网上好多破解的安装包 2.下面是pc端的抓包使用情况 Charles支持抓去http.https协议的请求,不支持socket.然后charles会自动配置IE浏览器和工具的代理 ...

  5. 关于ECMP 等价路由

    1.ECMP简介 Equal-CostMultipathRouting,等价多路径.即存在多条到达同一个目的地址的相同开销的路径.当设备支持等价路由时,发往该目的 IP 或者目的网段的三层转发流量就可 ...

  6. CLOS架构是啥?

    有多少种技术能够在六十五年后依旧能够熠熠生辉,在IT的基础架构中扮演着重要角色?CLOS架构应该算是一项.Clos架构,诞生于1952年,是由由贝尔实验室一位叫Charles Clos的人提出的.CL ...

  7. Git -- 自定义git样式

    在安装Git一节中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项. 比如,让Git显示颜色,会让命令输出看起来更醒目: $ git config --glob ...

  8. Spark学习笔记——手写数字识别

    import org.apache.spark.ml.classification.RandomForestClassifier import org.apache.spark.ml.regressi ...

  9. Unity3D中Layers和LayerMask解析

    Unity中是用int32来表示32个Layer层.int32表示二进制一共有32位(0—31).在Unity中可编辑的Layer如下图所示:   在Unity中每个GameObject都有Layer ...

  10. mysql数据库建立的数据库在哪个文件夹?

    一般在安装目录下的data文件夹下,或者在C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.1\dat ...