操作场景

云硬盘是云上可扩展的存储设备,您可以在创建云硬盘后随时扩展其大小,以增加存储空间,同时不失去云硬盘上原有的数据。
云硬盘扩容 完成后,需要将扩容部分的容量划分至已有分区内,或者将扩容部分的容量格式化成一个独立的新分区。

注意事项

扩容文件系统操作不慎可能影响已有数据,因此强烈建议您在操作前手动 创建快照 备份数据。

前提条件

  • 已扩容云硬盘空间。
  • 该云硬盘已挂载 到 Linux 云服务器并已创建文件系统。
  • 已登录待扩展分区及文件系统的 Linux 云服务器。

操作步骤

确认扩展方式

以 root 用户执行以下命令,查询云硬盘使用的分区形式。

  • fdisk -l
  • 若结果如下两图所示(根据操作系统不同略有不同),则说明使用 GPT 分区形式。
  • 若结果如下图所示(根据操作系统不同略有不同),则说明使用 MBR 分区形式。注意:
    MBR 分区形式支持的磁盘最大容量为2TB。如果您的硬盘分区为 MBR 格式,且需要扩容到超过 2TB 时,建议您重新创建并挂载一块数据盘,使用 GPT 分区方式后将数据拷贝至新盘上。对于 Linux 操作系统而言,当磁盘分区形式选用 GPT 时,fdisk 分区工具将无法使用,需要采用 parted 工具。

分区形式操作指引说明GPT将扩容部分的容量划分至原有分区(GPT)同样适用于未分区直接格式化的场景。将扩容部分的容量格式化成独立的新分区(GPT)可保持原有分区不变。MBR将扩容部分的容量划分至原有分区(MBR)同样适用于未分区直接格式化的场景。将扩容部分的容量格式化成独立的新分区(MBR)可保持原有分区不变。

将扩容部分的容量划分至原有分区(GPT)

以 root 用户执行以下命令,确认云硬盘的容量变化。

  • parted <磁盘路径> print
    本文以磁盘路径是/dev/vdb为例,则执行:
  • parted /dev/vdb print
    若在过程中提示如下图所示信息,请输入Fix

如下图所示,扩容后的云硬盘大小为107GB,已有分区的大小为10.7GB。

执行以下命令,确认该云硬盘是否还有分区已挂载。

  • mount | grep '<磁盘路径>'
    本文以磁盘路径是/dev/vdb为例,则执行:
  • mount | grep '/dev/vdb'
    如下图所示,云硬盘上有一个分区(vdb1)挂载在/data上。

执行以下命令,解挂数据盘。

  • umount <挂载点>
    本文以挂载点是/data为例,则执行:
  • umount /data
    说明:
    请将云硬盘上所有分区的文件系统都解挂,。可重复执行以下命令,确认该硬盘上所有分区的文件系统都已解挂。
  • mount | grep '/dev/vdb'

执行以下命令,进入 parted 分区工具。

  • parted '<磁盘路径>'
    本文以磁盘路径是/dev/vdb为例,则执行:
  • parted '/dev/vdb'
  • 执行以下命令,将显示和操纵单位变成 sector(默认为GB)。
  • unit s
  • 输入 print,查看分区信息,并记录已有分区的 Start 值。
    注意:
    删除分区并新建后,Start 值必须保持不变,否则将会引起数据丢失。

执行以下命令,删除原有分区。

  • rm <分区 Number>
    例如,由上图可知云硬盘上有一个分区,Number 为“1”,则执行:
  • rm 1
    回显信息如下图所示。

执行以下命令,新建一个主分区。

  • mkpart primary <原分区起始扇区> 100%
    其中,100%表示此分区到磁盘的最末尾。
    例如,主分区从第2048个扇区开始(必须与删除之前的分区一致,即 Start 值为2048s),则执行:
  • mkpart primary 2048s 100%
    如果出现如下图所示的状态,请输入Ignore

执行以下命令,查看新分区是否已创建成功。

  • print
    返回结果如下图所示,即表示新分区已创建成功。

执行以下命令,退出 parted 工具。

  • quit
  • 执行以下命令,检查扩容后的分区。
  • e2fsck -f <分区路径>
    本文以新建分区是1(即分区路径是/dev/vdb1)为例,则执行:
  • e2fsck -f /dev/vdb1
    返回如下图所示结果。

执行以下命令,对新分区上 EXT 文件系统进行扩容操作。

  • resize2fs <分区路径>
    本文以分区路径是/dev/vdb1为例,则执行:
  • resize2fs /dev/vdb1

执行以下命令,对新分区上 XFS 文件系统进行扩容操作。

  • xfs_growfs <分区路径>
    本文以分区路径是/dev/vdb1为例,则执行:
  • xfs_growfs /dev/vdb1
  • 执行以下命令,手动挂载新分区。
  • mount <分区路径> <挂载点>
    本文以分区路径是/dev/vdb1,挂载点是/data为例,则执行:
  • mount /dev/vdb1 /data
  • 执行以下命令,查看新分区。
  • df -h
    返回如下图信息说明挂载成功,即可以查看到数据盘。

将扩容部分的容量格式化成独立的新分区(GPT)

  1. 以 root 用户执行以下命令, 确认云硬盘的容量变化。
  • parted <磁盘路径> print
    本文以磁盘路径是/dev/vdb为例,则执行:
  • parted /dev/vdb print
    若在过程中提示如下图所示信息,请输入 Fix

如下图所示,扩容后的云硬盘大小为107GB,已有分区的大小为10.7GB。

执行以下命令,确认该云硬盘是否还有分区已挂载。

  • mount | grep '<磁盘路径>'
    本文以磁盘路径是/dev/vdb为例,则执行:
  • mount | grep '/dev/vdb'
    如下图所示,云硬盘上有一个分区(vdb1)挂载在/data上。

执行以下命令,解挂数据盘。

  • umount <挂载点>
    本文以挂载点是/data为例,则执行:
  • umount /data
    说明:
    请将云硬盘上所有分区的文件系统都解挂。可重复执行以下命令,确认该硬盘上所有分区的文件系统都已解挂。
  • mount | grep '/dev/vdb'

执行以下命令,进入 parted 分区工具。

  • parted '<磁盘路径>'
    本文以磁盘路径是/dev/vdb为例,则执行:
  • parted '/dev/vdb'
  • 执行以下命令,查看分区信息,并记录已有分区的 End 值,以此值作为下一个分区的起始偏移值。
  • print

执行以下命令,新建一个主分区。此分区将从已有分区的末尾开始,覆盖硬盘所有的新增空间。

  • mkpart primary start end
    本文以 End 值是10.7GB为例,执行
  • mkpart primary 10.7GB 100%
  • 执行以下命令,查看新分区是否已创建成功。
  • print

执行以下命令,退出 parted 工具。

  • quit
  • 执行以下命令,格式化新建的分区。
  • mkfs.<fstype> <分区路径>
    您可以自行选择文件系统的格式,例如 EXT2、EXT3 等。
    本文以文件系统是 EXT3 为例,则执行:
  • mkfs.ext3 /dev/vdb2

将扩容部分的容量划分至原有分区(MBR)

fdisk/e2fsck/resize2fs 自动扩容工具适用于 Linux 操作系统,用于将新扩容的云硬盘空间添加到已有的文件系统中,扩容能够成功必须满足以下四个条件:

  • 文件系统是 EXT2/EXT3/EXT4/XFS。
  • 当前文件系统不能有错误。
  • 扩容后的磁盘大小不超过2TB。
  • 当前工具仅支持 Python 2 版本,不支持 Python 3 版本。

以 root 用户执行以下命令,卸载分区。

  • umount <挂载点>
    本文以挂载点是/data为例,则执行:
  • umount /data

执行以下命令,下载工具。

  • wget -O /tmp/devresize.py https://raw.githubusercontent.com/tencentyun/tencentcloud-cbs-tools/master/devresize/devresize.py
  • 执行以下命令,使用扩容工具进行扩容。
  • python /tmp/devresize.py <硬盘路径>
    本文以硬盘路径是/dev/vdb且文件系统在 vdb1 上为例,则执行:
  • python /tmp/devresize.py /dev/vdb
  • 若输出 “The filesystem on /dev/vdb1 is now XXXXX blocks long.”则表示扩容成功
  • 若输出的是 “[ERROR] - e2fsck failed!!”,请执行以下步骤:

a. 执行以下命令,修复文件系统所在分区。

fsck -a <分区路径>
本文以硬盘路径是/dev/vdb且文件系统在 vdb1 上为例,则执行:

  • fsck -a /dev/vdb1
    b. 修复成功后,再次执行以下命令,使用扩容工具进行扩容。
  • python /tmp/devresize.py /dev/vdb

扩容成功日志devresize.log

2019-08-23 19:18:38,867 - [DEBUG]- devresize.py:467 - user input:/tmp/devresize.py /dev/vdb
2019-08-23 19:18:39,227 - [DEBUG]- devresize.py:193 - device_size:107374182400device_sector_number:209715200logical_sector_size:512
2019-08-23 19:18:39,233 - [DEBUG]- devresize.py:285 - target_partition:/dev/vdb1
2019-08-23 19:18:39,359 - [INFO ]- devresize.py:308 - checking filesystem healthy
2019-08-23 19:18:39,457 - [DEBUG]- devresize.py:311 - e2fsck ret is 2048
2019-08-23 19:18:39,458 - [ERROR]- devresize.py:319 - File system /dev/vdb1 error!
2019-08-23 19:18:39,458 - [DEBUG]- devresize.py:451 - close fd
2019-08-23 19:18:59,163 - [DEBUG]- devresize.py:467 - user input:/tmp/devresize.py /dev/vdb1
2019-08-23 19:18:59,164 - [ERROR]- devresize.py:409 - The argument should be a whole disk, not a partition! Example: /dev/vdb
2019-08-23 19:19:40,508 - [DEBUG]- devresize.py:467 - user input:/tmp/devresize.py /dev/vdb1
2019-08-23 19:19:40,509 - [ERROR]- devresize.py:409 - The argument should be a whole disk, not a partition! Example: /dev/vdb
2019-08-23 19:19:43,310 - [DEBUG]- devresize.py:467 - user input:/tmp/devresize.py /dev/vdb
2019-08-23 19:19:43,344 - [DEBUG]- devresize.py:193 - device_size:107374182400device_sector_number:209715200logical_sector_size:512
2019-08-23 19:19:43,348 - [DEBUG]- devresize.py:285 - target_partition:/dev/vdb1
2019-08-23 19:19:43,408 - [INFO ]- devresize.py:308 - checking filesystem healthy
2019-08-23 19:19:44,131 - [DEBUG]- devresize.py:311 - e2fsck ret is 0
2019-08-23 19:19:59,257 - [DEBUG]- devresize.py:524 - Begin to change the partation
2019-08-23 19:19:59,258 - [DEBUG]- devresize.py:257 - Start h,s,c: 0 9 20End h,s,c: 1 196 95Partition Type Name:LinuxStart LBA: 2048Sector Number: 2097131522019-08-23 19:19:59,258 - [INFO ]- devresize.py:228 - Backup MBR to /tmp/MBR_vdb1_2019-08-23_19:19:59_bak
2019-08-23 19:20:00,272 - [INFO ]- devresize.py:341 - umount /dev/vdb1
2019-08-23 19:20:01,273 - [DEBUG]- devresize.py:375 - part_probe
2019-08-23 19:20:03,419 - [INFO ]- devresize.py:341 - umount /dev/vdb1
2019-08-23 19:20:03,420 - [INFO ]- devresize.py:348 - resize filesystem
2019-08-23 19:20:04,873 - [DEBUG]- devresize.py:350 - resize2fs ret is 0
2019-08-23 19:20:04,873 - [INFO ]- devresize.py:578 - Finished
2019-08-23 19:20:04,873 - [DEBUG]- devresize.py:451 - close fd

执行以下命令,手动挂载扩容后的分区。

  • mount <分区路径> <挂载点>
    本文以挂载点是/data为例。
  • 若扩容前已有分区且以分区路径是/dev/vdb1为例,则执行:
    • mount /dev/vdb1 /data
  • 若扩容前没有分区,则执行:
    • mount /dev/vdb /data
  • 执行以下命令,查看扩容后的分区容量。
  • df -h
    若返回类似如下图所示的信息,说明挂载成功,即可以查看到数据盘:
  1. 执行以下命令,查看扩容后原分区的数据信息,确认新增加的存储空间是否扩容到文件系统中。
  • ll /data

将扩容部分的容量格式化成独立的新分区(MBR)

以 root 用户执行以下命令,查看已挂载的数据盘分区信息。

  • df -h

执行以下命令,查看数据盘扩容后未分区的信息。

  • fdisk -l

执行以下命令,解挂所有已挂载的分区。

  • umount <挂载点>
    本文以挂载点是/data为例,则执行:
  • umount /data
    说明:
    请将云硬盘上所有分区都解挂后
  • 执行以下命令,新建一个新分区。
  • fdisk <硬盘路径>
    本文以磁盘路径是/dev/xvdc为例,则执行:
  • fdisk /dev/xvdc
    按照界面的提示,依次输入”p”(查看现有分区信息)、“n”(新建分区)、“p”(新建主分区)、“2”(新建第2个主分区),两次回车(使用默认配置),输入 “w”(保存分区表),开始分区。如下图所示:

说明:
本文以创建一个分区为例,您也可以根据实际需求创建多个分区。

执行以下命令,查看新分区。

  • fdisk -l
    如下图所示,表示新的分区 xvdc2 已经创建完成。

执行以下命令,格式化新分区并创建文件系统。

  • mkfs.<fstype> <分区路径>
    您可以自行选择文件系统的格式,例如 EXT2、EXT3 等。
    本文以文件系统是 EXT3 为例,则执行:
  • mkfs.ext3 /dev/xvdc2

执行以下命令,创建新的挂载点。

  • mkdir <新挂载点>
    本文以新挂载点是/data1为例,则执行:
  • mkdir /data1
  • 执行以下命令,手动挂载新分区。
  • mount <新分区路径> <新挂载点>
    本文以新分区路径是/dev/xvdc2,新挂载点是/data1为例,则执行:
  • mount /dev/xvdc2 /data1
  • 执行以下命令,查看新分区信息。
  • df -h
    返回如下图所示信息则说明挂载成功,即可以查看到数据盘。

说明:
若您希望云服务器在重启或开机时能自动挂载数据盘。执行以下命令,添加信息。

  • echo '/dev/xvdc2 /data1 ext3 defaults 0 0' >> /etc/fstab

执行以下命令,查看信息。

  • cat /etc/fstab
    若返回如下图所示信息,则表示添加分区信息成功。

解决device is busy

王志强:无法umount问题(device is busy)​zhuanlan.zhihu.com

原文链接:

云硬盘 扩展分区及文件系统(Linux) - 操作指南 - 文档中心 - 腾讯云​cloud.tencent.com

parted新建分区_扩展分区及文件系统(Linux)相关推荐

  1. 硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍

    我们知道硬盘的第一个扇区也就是第0扇区是用来存放主引导记录(MBR)的,因此也称MBR扇区.一个扇区是512字节,因此MBR的大小也是512字节,其具体数据结构是:446个字节的引导代码.64个字节的 ...

  2. (转)硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍...

    场景:最近在学习Linux的基础知识,不可避免的设计到Linux的磁盘分区,以前做过总结,但是那种总结就是复制别人的文章,总结完就不想看第二遍,所以很容易就遗忘了!清楚明白的理解分区后,我就可以在自己 ...

  3. 硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍...

    2019独角兽企业重金招聘Python工程师标准>>> 我们知道硬盘的第一个扇区也就是第0扇区是用来存放主引导记录(MBR)的,因此也称MBR扇区.一个扇区是512字节,因此MBR的 ...

  4. 分区 主分区 和 扩展分区_等和分区

    分区 主分区 和 扩展分区 Description: 描述: This is a popular interview coding problem which has been featured in ...

  5. 主分区、扩展分区、逻辑分区

    一.主分区.扩展分区和逻辑分区 1.概念 主分区:也叫引导分区,最多能创建4个,最少有1个,当主分区创建了4个后,主分区和扩展分区就没有存在于这个世界上的理由了. 扩展分区:最多一个.严格意义上来讲它 ...

  6. 硬盘主分区、扩展分区和逻辑分区

    这里只是介绍了几种概念,但是还有几个问题没有搞明白: 1.如果硬盘有3个主分区,1个扩展分区分成了4个逻辑分区,此时如果第一个主分区是活动分区,那么第二个和第三个主分区能不能像访问逻辑分区那样访问? ...

  7. Linux主分区,扩展分区,逻辑分区的联系和区别

    基本概念 硬盘分区有三种, 主磁盘分区.扩展 磁盘分区. 逻辑分区. 一个 硬盘 主分区至少有1个,最多4个,扩展分区可以没有,最多1个.且 主分区+扩展分区总共不能超过4个. 逻辑分区可以有若干个. ...

  8. 硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程...

    filex的文件系统看的云里雾里,还是先总结下FAT的一些基本知识吧. 硬盘结构 硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0 ...

  9. 主分区活动分区扩展分区逻辑分区

    转自:https://jingyan.baidu.com/article/5d368d1ed93bf83f60c05794.html 1.图文解释 大体的意思就如上图所示 主分区: 也叫引导分区,最多 ...

最新文章

  1. 利用系统提供的崩溃日志解Native层Bug
  2. 兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新
  3. Spring Schedule关闭订单
  4. jsp页面中出现“String cannot be resolved to a type”
  5. java 内部类and匿名类
  6. 常用算法大全-贪婪算法
  7. 编码——隐匿在计算机软硬件背后的语言
  8. WordPress SEO插件,免费WordPress插件大全
  9. 单片机炫彩灯实训报告_基于51单片机的流水灯实训报告.doc
  10. 良树机器人_揭开坑王高屋良树不为人知的一面,你看过这部《冥王计划》吗?...
  11. ApacheCN Python 译文集(二)20211110 更新
  12. javascript之随机验证码
  13. The Social-Engineer Toolkit(社会工程学套件)全网第一篇套件全模块讲解
  14. 阿D SQL注入工具常用的一些注入命令
  15. 大学计算机基础实验3word表格,实验3word2010制作表格和插入对象土木2班滕成(1)
  16. linux脚本if eq 0,Shell常用的逻辑判断 -lt -eq 等使用及举例说明
  17. 456. 132 模式
  18. DC 视频教程 第十课
  19. 计算某一年某一天是星期几
  20. 【论文阅读 CIKM‘2021】Learning Multiple Intent Representations for Search Queries

热门文章

  1. nlv sqlserver_未能使用提供程序“DataProtectionConfigurationProvider”进行解密。提供程序返回错误消息为: 该项不适于在指定状态下使用...
  2. VS编译提示错误“....Consider using strcat_s instead.To disable deprecation, use _CRT_SECURE_NO_WARNINGS.”
  3. TCP/IP / UDP 头
  4. 启明云端分享|ESP32-­C3­-MINI­-1和ESP32­-C3-­MINI-­1U的区别是什么?
  5. kinux mysql报错10038_navicat连接linux系统中mysql-错误:10038
  6. python中for循环的用法_浅谈Python的for循环
  7. 什么情况导致 oom
  8. flask 开发接口测试平台
  9. JAVA 1.2(原生数据类型 Primitive Data Type)
  10. C#的TreeView标记