动态在线扩容root根分区大小的方法详解

前言

本文主要介绍了关于动态在线扩容root根分区大小的相关内容,分享出来供大家参考学习,下面话不都说了,来一起看看详细的介绍吧。

qemu-img resize yourname.img +10G 

首先要用命令增加分区大小,针对qemu-kvm使用以上命令

LVM

情境描述:虚拟机用的磁盘 image 已经扩容,或对应于物理机的话,就是磁盘的容量已经增加了。 然后我们希望把扩大的容量用起来,而且不影响现有的文件系统(不格盘)。

实际使用过程中,我们有时候需要对虚拟机镜像的硬盘扩容,比如,一开始我们创建虚拟机的时候,以为 20G 的磁盘空间就够了,可某一次我们可能一次性就要拷贝一个 10G+ 的文件进虚拟机,这时候我们就傻了。

我们通过 VMware 或者 VirtualBox 的图形界面或者一些命令,我们可以很轻松地扩大虚拟机的磁盘大小,但是,磁盘变大后,系统并不会把它们利用起来。所以这时候,我们就要考虑怎么才能让这些多出来的空间能够被虚拟机里的 Linux 系统用起来。

在此之前,先补充一个“磁盘 MBR”的知识:

1个硬盘分为两个区域,一个是 MBR(主引导分区),一个是数据区域。

MBR 里记录了两个重要信息:引导程序与磁盘分区表。

分区表定义了“第 n 个磁盘块是从第 x 个柱面到第 y 个柱面”,所以,系统每次都取 n 号磁盘块时,就只会读取第 x 到第 y 个扇区之间数据。

由于 MBR 容量有限,设计的时候,只设计成4个分区记录。用起来,可以作4个主分区,或者3个主分区和一个扩展分区。

如果超过四个分区,系统允许在额外的硬盘空间放另一份磁盘分区信息,那就是扩展分区,当硬盘被分出一个扩展分区的时候,实际上扩展分区在 MBR 磁盘分区表中的信息为另外那份分区表的位置。所以,在 扩展分区 里面还要划分 逻辑分区 才能使用。

每个硬盘最多只允许4个主分区,其他的分区只能放在扩展分区中。

这样就明白了,因为主分区的个数有限,而且我们希望增加的容量也只是作为存储使用,所以加在拓展分区 (extended) 就可以了。(而如果你是土豪,总共4个主分区,你还打算这次再用一个主分区的名额,那你可以跳过 Part1,直接看下面的 Part2 了。)

PART1

我们要把增加的容量加在拓展分区(extended)里。要对 extended 分区进行扩容,这个 fdisk 就做不了,需要用 parted 命令(如果系统不自带 parted,那就从源上装一个):

parted /dev/xxx

进入交互模式,用 help 查看帮助命令。

一些值得特别说明的命令:

  • print 查看分区表。留意要操作的分区 ‘Number' 这一项,后面操作要用到。
  • unit 改变 parted 所用的描述大小的默认单位(比如设为 ‘compact' 就是以 ‘MB' 为单位)。
    值得注意的是,如果用 MB/GB 这样的单位,磁盘 sector 的选取会有误差的。parted 会为你选最近的 sector,但未必精确。比如 unit 为 MB,那么可能产生 +-500KB 的误差;如果是 GB,那就可能 +-500MB 的误差,这就无法容忍了。所以如果是'创建分区'这样的操作,建议用 ‘MiB' 这样的单位,而不是 ‘MB'。'MiB' 会是一个精确值,parted 不会像对待 ‘MB' 那样去找它最近的单元。
  • resize <minor> <start> <end> 对指定 minor 号(或 Number 号)的分区从 start 位置到 end 位置 这里 start/end 可以是 xxxMB,也可以是负值,表示从磁盘末尾往前多少的位置,比如 -0 就是指到磁盘的末尾。

更多命令详情请参考: http://www.gnu.org/software/parted/manual/html_chapter/parted_toc.html

实战:

操作前,print 结果如下。现有磁盘62.3G,只分给 extended 8G,还有50多G根本没分配。

Number Start End  Size Type  File system Flags
1  1049kB 256MB 255MB primary ext2   boot
2  257MB 8589MB 8332MB extended
5  257MB 8589MB 8332MB logical    lvm

我希望把这50多G全部用于扩大extended。

用命令:

resize 2 257MB -0

其实,只需输入 resize 2 ,回车,剩下的两个参数,parted 会通过交互的方式让你填写的。-0 表示到那个分区的磁盘末尾。

现在再 print 看一下,

Number Start End  Size Type  File system Flags
1  1049kB 256MB 255MB primary ext2   boot
2  257MB 62.3GB 62.0GB extended
5  257MB 8589MB 8332MB logical    lvm

extended 区已经扩大成功了。

extended 区只是相当于“一块物理硬盘”,想把增加出来的空间用上,还要把 Number 为 5 的 lv 扩大。

而 logic volumn 的扩大依赖于它所在的 volumn group 的大小。因为 logic volumn 是从 volumn group 里分出来的,如果 volumn group 不变大,那么 logic volumn 是无法超过 volumn group 的。所以 真正是应该把空间加到 volumn group 上去 。

PART2

要增加 volumn group 的大小,先用 fdisk 在 extended 上,利用刚才增加但还未分配出去的磁盘空间创建出一个新分区。通过 fdisk <disk_dev_name> 进入交互模式,可以通过命令 m 查看帮助。首先,输入 n 创建新分区,然后选择 l 设置新分区为逻辑分区,接下来依次设置分区的起始、终止位置(默认即完全利用这块磁盘上剩余的所有空间,所以默认即可)。创建出的分区,编号为 6。可以用命令 p 看一下。

 Device Boot  Start   End  Blocks Id System
/dev/vda1 *  2048  499711  248832 83 Linux
/dev/vda2   501758 121634815 60566529 5 Extended
/dev/vda5   501760 16775167  8136704 8e Linux LVM
/dev/vda6  16777216 121634815 52428800 83 Linux

接下来,由于我们要用 LVM 来管理这个新分区,我们需要把新分区的管理系统从 Linux 改为 Linux LVM。在交互模式下,输入命令 t,然后选择刚才创建的 6,输入 8e (Linux LVM 的代号)。最后,我们要把刚才的这些操作真正写入硬盘,输入命令 w。

至此,我们通过 fdisk -l 已经可以看到 /dev/vda6 被创建出来了。

再执行

vgextend <your_vg_name> /dev/vda6 

把新分区加进 volumn group (VG Name 可通过 vgdisplay 查到)。

现在用 vgs 查看 volumn group 的状态,发现 volumn group 已经变大。

 VG   #PV #LV #SN Attr VSize VFree
 jiang51-vg 2 2 0 wz--n- 57.75g 50.03g

然后把这个 volumn group 里面的 logic volumn 变大。

命令(最后那个'Logic Volumn name'可通过 lvdisplay 查到):

lvresize -l +100%FREE <Logic Volumn name>

警告: 如果操作时出现下面这样的 warning,就说明现在 logic volumn 的总大小还不对,resize 不但不增加空间,反而在缩小空间,如果继续操作下去,必将丢失数据。应立即停止!按 n 取消。

WARNING: Reducing active and open logical volume to 32.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce root? [y/n]

最后,要更新 logic volumn 上的文件系统,不然从 df 看出文件系统是不知道 logic volumn 变大的。

用命令(其中的 file_system_name 通过 df 找到):

resize2fs -p <file_system_name>

这样,磁盘 extended 分区的扩容终于完成了。

非LVM

fdisk /dev/sda
d
n
p
1

w
resize2fs /dev/sda1

df -h

最重要的一步:“删除现在的分区,重新分区” 按d删除现在的分区1,注意:删除后千万不要按w保存!直接按n创建新的分区,然后从原有的柱面开始,一直分到最后的尺寸(默认值两次回车即可,如果之前的分区不是从第一柱面开始,则需要记录之前分区的起始柱面),新的分区操作完毕后,按w保存。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

您可能感兴趣的文章:

  • linux LVM快照创建详细步骤(使用PE完成)
  • Centos7 利用LVM实现动态扩容的方法
  • linux系统下创建lvm挂载到指定目录的操作步骤
  • linux中Centos7的LVM磁盘扩容问题
  • Ubuntu系统下扩展LVM根目录的方法
(0)

相关推荐

  • Centos7 利用LVM实现动态扩容的方法

    摘要:最近项目组里来了很多新人,对linux分区及各种应用使用的分区不了解,导致测试数据库时突然发现某一个分区被写满了,不得不重装OS.实在看不下去了,特此分享我的一些利用LVM实现动态扩容的心得,希望对大家有帮助. 知识储备: LVM是逻辑盘卷管理(Logical VolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块

  • linux LVM快照创建详细步骤(使用PE完成)

    在VM9的虚拟机下完成操作系统centos5.8 外挂10G硬盘. 1.首先将硬盘sdb分4个区每个区大小200M,分别是sdb{5,6,7,8}.后将四个分区建立pv 2.之后把pv加入vg此处引入PE的概念. 由于vg是多个PE(块)组成的,而且每个vg块的PE最大数量是65534.默认每个PE的大小是4m 也就是说默认的每个vg最大也就是4m乘65534=256G,因此PE块的大小决定了最终vg的大小. 此处我们定义PE块的大小为16m.由于每个pv的大小是200m总共800m因此总共的p

  • linux中Centos7的LVM磁盘扩容问题

    系统提示我容量不足 就利用LVM的方式进行扩容吧. 系统是RHEL7(centos7差不多一样) 先查看磁盘信息及根目录 fdisk -l 注意:sda为硬盘,需要扩容的是系统的根目录,这里RHEL的系统根目录为/dev/mapper/rhel-root(系统不一样,根目录也不一样) 关闭系统,在vmware->设置->硬盘->扩展->输入数字大于当前系统内存->点击扩展 开机再查看磁盘信息 fdisk -l 注意:可以看出sda磁盘增加了,但是根目录还没有,也就是说增加出来

  • linux系统下创建lvm挂载到指定目录的操作步骤

    1 .背景 在企业中有时我们为方便安装软件.数据的管理,需要把安装软件.数据放到固定目录下,磁盘满了方便扩展,这里假如需要一个/data目录存放数据,并单独进行挂载. 2.操作步骤 2.1  划分磁盘 2.2 创建PV [root@centos-6 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created 扫描系统PV可以使用pvscan查看新建的PV [root@centos-6 ~]# pvsca

  • Ubuntu系统下扩展LVM根目录的方法

    前言 最近手头一台运行在 Hyper-V 下面抓数据的服务器 (Ubuntu 16.04) 磁盘空间不够了,之前也没有把数据单独放到一个分区,所以只能想办法把根目录给搞大一点.之前没有处理过这样的问题,网上搜了很多资料,现在把拓展方法记录,分享出来. 建议在操作之前做好备份工作 步骤概览 调大物理磁盘 确定要操作的磁盘 扩展 LVM 逻辑分区所在的物理拓展分区 新增 LVM 逻辑分区 新分区合并到相应 Volumn Group 更新文件系统 调大物理磁盘 虚拟机关机,然后直接在虚拟机管理里面操作

  • 动态在线扩容root根分区大小的方法详解

    前言 本文主要介绍了关于动态在线扩容root根分区大小的相关内容,分享出来供大家参考学习,下面话不都说了,来一起看看详细的介绍吧. qemu-img resize yourname.img +10G 首先要用命令增加分区大小,针对qemu-kvm使用以上命令 LVM 情境描述:虚拟机用的磁盘 image 已经扩容,或对应于物理机的话,就是磁盘的容量已经增加了. 然后我们希望把扩大的容量用起来,而且不影响现有的文件系统(不格盘). 实际使用过程中,我们有时候需要对虚拟机镜像的硬盘扩容,比如,一开始

  • vuejs动态组件给子组件传递数据的方法详解

    通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component>动态组件,这个时候就没有显式的子组件标签,要给子组件传递数据需要在<component> 中进行绑定 <div class="app" id="deviceready"> <component :is="currentView" :user_name.s

  • Python批量处理图片大小尺寸方法详解

    目录 前言 简单讲解 1.建目录 2.图片大小修改 批量修改图片Size 1.目录处理 2.图片批量修改Size完整代码 前言 出发点,网上下了一批png,使用wxFormBuilder做软件工具栏的图标,原图做出来的效果 这么大的一个图标让笔者差点就笑岔气了 以前都是用工具改变图片的大小,这次想了下,开发的事情肯定用脚本搞定 所以决定写一个脚本让图片变成32x32,原图是124x128的, 简单讲解 本文使用Pillow(PIL), 安装: pip install pillow 这个库有很多图

  • SpringBoot EasyPoi动态导入导出的两种方式实现方法详解

    目录 前言 一.基于@Excel的 isColumnHidden 属性 1.1 实现原理 1.2 实现步骤 1.3 实现效果 二. 基于List< ExcelExportEntity > 的导出 实现效果 总结 前言 一开始为了图方便,使用的是土方法,即创建多个不同的实体类,每个实体类对应不同的列.这样虽说能实现,但实在不想多复制实体类,把代码堆的和shi山一样.于是查看官方文档,里面确实提供了更加优雅的实现方式.废话不多说,开整. 一.基于@Excel的 isColumnHidden 属性

  • jQuery动态移除和添加背景图片的方法详解

    本文实例讲述了jQuery动态移除和添加背景图片的方法.分享给大家供大家参考,具体如下: 利用jQuery移除和添加图片 1.样式 <style type="text/css"> .changeImage{ background:url(images/right.png) no-repeat center; } </style> 2.JS (1)在改变标签的样式,需要移除之前添加的样式 $("#tab tr").find("td&q

  • jQuery动态移除与增加onclick属性的方法详解

    本文实例讲述了jQuery动态移除与增加onclick属性的方法.分享给大家供大家参考,具体如下: 这里给大家介绍利用jquery的removeAttr与attr事件来给a标签增加与删除onclick事件的具体操作方法,有需要了解的朋友可参考. 要实现效果:点击链接先去掉onclick属性,3秒后再自动加上该标签中的onclick属性 jQuery中,针对标签属性的操作都是使用attr()方法来实现的,比如:$("a").attr("onclick")可获得a标签的

  • Spring Security动态权限的实现方法详解

    目录 1. 动态管理权限规则 1.1 数据库设计 1.2 实战 2. 测试 最近在做 TienChin 项目,用的是 RuoYi-Vue 脚手架,在这个脚手架中,访问某个接口需要什么权限,这个是在代码中硬编码的,具体怎么实现的,松哥下篇文章来和大家分析,有的小伙伴可能希望能让这个东西像 vhr 一样,可以在数据库中动态配置,因此这篇文章和小伙伴们简单介绍下 Spring Security 中的动态权限方案,以便于小伙伴们更好的理解 TienChin 项目中的权限方案. 1. 动态管理权限规则 通

  • java动态添加外部jar包到classpath的实例详解

    java动态添加外部jar包到classpath的实例详解 前言: 在项目开发过程中我们有时候需要动态的添加外部jar包,但是具体的业务需求还没有遇到过,因为如果动态添加外部jar包后,我们就需要修改业务代码,而修改代码就需要重新启动服务,那样好像就没有必要动态添加外部jar包了,怎么样才能不重新启动服务器就可以使用最新的代码我没有找到方法,如果各位知道的话给我点建议,回归主题,实现动态添加外部jar包到classpath的方法如下: String beanClassName = "com.dy

  • IOS中计算缓存文件的大小判断实例详解

    IOS中计算缓存文件的大小判断实例详解 IOS中计算缓存文件的大小判断,在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有互补,只有分享,才能使彼此更加成长. 实例代码: //获取缓存文件路径 -(NSString *)getCachesPath{ // 获取Caches目录路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCaches

  • Android中屏幕密度和图片大小的关系详解

    Android中屏幕密度和图片大小的关系详解 前言 Android中支持许多资源,包括图片(Bitmap),对应于bitmap的文件夹是drawable,除了drawable,还有drawable-ldpi.drawable-mdpi.drawable-hdpi.drawable-xhdpi.drawable-xxhdpi等,同一张图片放到上面不同的文件夹中是有区别的,比如一张100 * 100像素大小的图片,分别放在上述各个文件夹中,然后将其设置为ImageView(假设宽高都是wrap_co

随机推荐