其实准确点儿的描述应该是:Ubuntu Server 18.04 ,设置 LVM,安装完成后根目录的容量为什么只有 4G?只有 Server 版有问题,Desktop 版没有问题,Ubuntu 16.04 的 Server 版和 Desktop 版都没有这样的问题。

笔者在 vSphere 中安装虚机 Ubuntu Server 18.04.2,设置磁盘大小为 200G,文件系统设置时选择 LVM ,也就是 "Use An Entire Disk And Set Up LVM",如下图所示:

其他都是默认值,安装很顺利,但是进入系统后检查文件系统发现根目录的容量只有区区 4G:

这是咋回事儿?说好的 200G 呢?

如何解决?

其实如果有些 LVM 的基础知识处理这个问题是很简单的。先看看 PV 的信息:

PV 的状态没有问题,接着检查 VG 的容量:

VG 的容量也是正确的,并且大部分空闲。接着检查 LV 的容量:

原来问题出在这里,199G 的 VG,而 LV 只分到了 4G。
问题找到了,解决方式也很简单,先扩展 LV,再扩展文件系统!

直接把 VG 剩余的所有空间分给 LV:

$ sudo lvextend /dev/ubuntu-vg/ubuntu-lv /dev/sda3

再 resize 文件系统就可以了:

$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

检查结果:

搞定!

是不是漏了什?

到底是哪里出了问题?Ubuntu Desktop 18.04 可没有这样的问题!不会是和虚拟环境 vSphere 有关吧?带着种种疑问在网上搜了一通,其实在 Ubuntu 18.04 的 Release Notes 中就说明了这是个已知问题(Known issues):
LVM Entire Disk option does not use entire disk (1785321)

去看看这个问题的详细信息,发现这貌似并不是一个 bug,而是一个 design。人家本来的目的是让管理员能够更加方便、合理的使用 LVM,从而改进了默认的设置(对比 Ubuntu Server 16.04):

The reason only 4GiB is allocated to the root file-system is that the remaining space is there to be allocated for other purposes by the system administrator.

E.g. The administrator may want to allocated separate block devices to host virtual machine or container images, and so on.

大意是说:只分配 4G 给根文件系统的原因是剩余的空间由系统管理员分配给其他用途。管理员可能希望分配单独的块设备来承载虚拟机或容器映像,等等。

只不过这个 design 让笔者这种喜欢默认值的用户突然感到了不适应(至少这个行为和 Ubuntu 16.04 不一样,和 Ubuntu 18.04 Desktop 也不一样)。顿时感觉无比 shallow,距离系统管理员还有不小的差距啊!既然被标记成了 issue ,估计在后面的版本中会有调整。

在安装系统时解决该问题

其实如果在安装系统时,仔细看看默认的配置(出问题前谁会看呢?)就会发现这个问题:

文件系统的详细配置中已经指明了根目录所挂载的文件系统所在的 LV 容量为 4G,编辑该 LV 的配置信息,把默认值改为允许的最大值就可以了:

其他的配置继续应用默认值,这次安装完成后根目录的容量就是我们期望的值(不是 200G噢,实际只有 195G 左右)。

总结

在对这个问题的认知过程中,笔者刚开始一直受困于自己的经验,认为 Ubuntu 16.04 的 Server 版和 Desktop 版都没有这样的问题,Ubuntu 18.04 的 Desktop 版也没有这样的问题,那就一定是 Ubuntu Server 18.04 的问题。这样的习惯性思维导致了笔者无法以更广阔的视角看待这个问题,如果笔者是一个真正的 Linux 系统管理员,说不定正喜大普奔呢!

参考:
https://www.cnblogs.com/sparkdev/p/10522489.html

Ubuntu 18.04 根目录只有 4G 大小的更多相关文章

  1. Ubuntu 18.04 根目录为啥只有 4G 大小

    其实准确点儿的描述应该是:Ubuntu Server 18.04 ,设置 LVM,安装完成后根目录的容量为什么只有 4G?只有 Server 版有问题,Desktop 版没有问题,Ubuntu 16. ...

  2. Ubuntu 18.04 磁盘根目录在线扩容 & 修改分区 inode 数量

    Ubuntu 18.04 磁盘根目录在线扩容 & 修改分区 inode 数量   Ubuntu 作为服务器系统使用的时候,系统盘的空间可能并不是很充裕,apt apt 着,根目录就满了.诚然, ...

  3. Ubuntu 18.04 LTS 常用软件安装杂记

    之前个人笔记本装的是 Linux Mint,用了一段时间但是体验不佳,所以打算换成 Ubuntu .作为一个 Linux 小白,当时配置一些软件环境费了不少时间.这次打算简单记录下,和大家分享一下我的 ...

  4. ubuntu 18.04 搭建flask服务器(大合集,个人实操)

    ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...

  5. 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。

    1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释   CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...

  6. Ubuntu 18.04编译AOSP源码

    总结一下我从Ubuntu 18.04下编译成功AOSP的过程,以及遇到的坑 我的电脑配置: OS: Ubuntu 18.04 bionic Kernel: x86_64 Linux 4.18.0-17 ...

  7. Ubuntu 18.04.1 搭建Java环境和HelloWorld

    一.搭建Java环境 系统环境 Ubuntu 18.04.1 JDK 8 IDEA 2018.2 1.下载JDK 官网地址:http://www.oracle.com/technetwork/java ...

  8. Ubuntu 18.04学习笔记

    命令行快捷键 https://blog.csdn.net/wanlhr/article/details/80926804 Ubuntu18.04使用vi命令修改文件并保存 vi /opt/teamvi ...

  9. [转]Win7 + Ubuntu 18.04 LTS (Bionic Beaver)双系统安装方法

    这里介绍在win7的基础上,安装ubuntu 18.04 LTS,实现双系统启动. 首先,假设你已安装了windows 7系统. 一. 制作ubuntu U盘启动盘. 方法见http://blog.p ...

随机推荐

  1. 开始逆向objc基础准备(二)我的平台是simulator-x86_64

    建项目运行中断调试,lldb中显示寄存器看到有rax-r15, stm0-stm7, xmm0-xmm15, ymm0-ymm15,即为x64体系支持sse4. 再在lldb中查看寄存器别名得到以下对 ...

  2. 软件测试的原则,软件测试计划:5W1H

    1.测试应该尽早介入.        2.所有的测试都应追溯到用户需求.        3.程序员应该避免检查自己的程序.除了单元测试.因为程序员对于自己的作品,思维具有局限性.无法保证测试质量.交给 ...

  3. 使用 Angular 打造微前端架构的 ToB 企业级应用

    这篇文章其实已经准备了11个月了,因为虽然我们年初就开始使用 Angular 的微前端架构,但是产品一直没有正式发布,无法通过生产环境实践验证可行性,11月16日我们的产品正式灰度发布,所以是时候分享 ...

  4. LXC容器文件系统设计优化

    在HOST上面,一个LXC container包含一个config文件和一个rootfs目录. 早期我们在交叉编译系统上编译出container的rootfs之后,直接在编译系统上将其用tar压缩打包 ...

  5. 2019-11-5:docker拉去配置oracle数据库

    转载自:https://www.cnblogs.com/OliverQin/p/9765808.html 1.拉取Oracle11g镜像 docker pull registry.cn-hangzho ...

  6. JSP内置对象详解及示例

    目录 JSP 内置对象 out request response config application session pageContext page exception JSP 内置对象 jsp一 ...

  7. python接口设计中的__all__和del

    最近在实现python接口中遇到了一些小问题,解决后总结如下. 目的:在设计接口时,只暴露某个文件的特定方法. 例如: t.py import os import sys def a(): pass ...

  8. ASP.NET Core 中的 ObjectPool 对象重用(一)

    前言 对象池是一种设计模式,一个对象池包含一组已经初始化过且可以使用的对象,而可以在有需求时创建和销毁对象.池的对象可以从池中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接销毁他,他是一种 ...

  9. 浅析scrapy与scrapy-redis的区别

    首先,要了解两者的区别,就要清楚scrapy-redis是如何产生的,有需求才会有发展,社会在日新月异的飞速发展,大量相似网页框架的飞速产生,人们已经不满足于当前爬取网页的速度,因此有了分布式爬虫,让 ...

  10. 【前端】之AJAX基础知识

    AJAX 简介 AJAX(Asynchronous JavaScript and XML),异步的JavaScript和XML AJAX不是编程语言,只是一种在无需重新加载整个网页的情况下能够更新部分 ...