网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络服务
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts 盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
IoT物联网
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务
更新时间:2024-12-26 GMT+08:00
分享

扩容云硬盘分区和文件系统(Linux)

操作场景

在管理控制台扩容云硬盘容量成功后,仅扩大了云硬盘的存储容量,对应的分区和文件系统并未扩容,还需要登录云服务器,扩容云硬盘的分区和文件系统,才可以看到新增容量并使用。即将扩容新增的容量划分至已有分区和文件系统内使用扩容新增的容量新建分区和文件系统

本文介绍扩容Linux系统中云硬盘(系统盘或数据盘)的分区和文件系统。不同云服务器的操作系统的扩容分区和文件系统操作可能不同,请根据您的实际环境进行操作。

表1 Linux操作系统云硬盘扩容操作指导

扩容场景

分区格式

磁盘类型

操作系统

文件系统

扩容工具

配置示例

扩大已有分区

GPT/MBR

系统盘

数据盘

  • 如果扩容系统盘,内核版本需要高于3.6.0
  • 如果扩容数据盘,不限

ext*(如ext2、ext3、ext4)、xfs、btrfs

growpart

  • 设备名:/dev/vdb
  • 已有分区:/dev/vdb1
  • 扩容容量:50GiB

扩大已有MBR分区(适用于内核版本低于3.6.0的系统盘)

MBR

系统盘

内核版本低于3.6.0

ext*(如ext2、ext3、ext4)、xfs、btrfs

dracut-modules-growroot

  • 设备名:/dev/vda
  • 文件系统:ext4
  • 挂载目录:/mnt/sda
  • 分区:/dev/vda1
  • 扩容容量:60GiB
  • 分区格式:MBR

新增MBR分区

MBR

系统盘

数据盘

不限

ext*(如ext2、ext3、ext4)、xfs、btrfs

  • fdisk
  • parted
  • 初始化工具:fdisk
  • 设备名:/dev/vdb
  • 文件系统:ext4
  • 挂载目录:/mnt/sdc、/mnt/sdd
  • 分区一:/dev/vdb1
    • 容量:100GiB
    • 分区格式:MBR
  • 分区二:/dev/vdb2
    • 容量:50GiB
    • 分区格式:MBR

新增GPT分区

GPT

数据盘

不限

ext*(如ext2、ext3、ext4)、xfs、btrfs

parted

  • 扩容工具:parted
  • 设备名:/dev/vdb
  • 文件系统:ext4
  • 挂载目录:/mnt/sdc、/mnt/sdd
  • 分区一:/dev/vdb1
    • 容量:2TiB
    • 分区格式:GPT
  • 分区二:/dev/vdb2
    • 容量:1TiB
    • 分区格式:GPT

您可以使用uname -a命令查看Linux内核版本。

扩展裸金属服务器系统盘的分区和文件系统,请参见如何扩展快速发放裸金属服务器的根分区大小

如果磁盘没有分区,请参见Linux系统扩容数据盘时,如何扩展未分区磁盘文件系统

约束与限制

  • 数据盘不支持扩容到根分区,如果您需要扩容根分区请扩容系统盘。
  • 扩容后的新增存储空间是添加在磁盘末尾的,对具有多个分区的磁盘扩容时,只支持将新增容量划分至排在末尾的分区。
  • MBR分区支持的云硬盘最大容量为2 TiB,超过2 TiB的部分无法使用。如果当前云硬盘采用MBR分区形式,并且将该云硬盘扩容后其容量大于2 TiB,有以下两种办法供参考:
    • (推荐)建议您重新创建一块云硬盘,并且云硬盘的分区格式采用GPT格式。
    • 如果确实需要将云硬盘扩容至2 TiB以上投入使用,则必须将磁盘分区形式由MBR切换为GPT,期间会中断业务,并且更换磁盘分区格式时会清除磁盘的原有数据,请在扩容前先对数据进行备份。

前提条件

扩容分区和文件系统

扩容分区的时候可以选择在已有的分区上继续扩大,也可以选择新增一个分区,请根据实际情况选择。

示例说明:数据盘“/dev/vdb”原有容量100GiB,只有一个分区“/dev/vdb1”。将数据盘容量扩大至150GiB,将新增的50GB增加至已有分区“/dev/vdb1”。

  1. 检查当前系统是否已安装growpart扩容工具。

    growpart

    • 如果回显为工具使用介绍,则表示已安装,无需重复安装。
      [root@ecs-centos76 ~]# growpart
      growpart disk partition
        rewrite partition table so that partition takes up all the space it can
        options:
        -h | --help	        print Usage and exit
             --fudge F        if part could be resized, but change would be
                              less than 'F' bytes, do not resize (def ault: 1048576)
        -N | --dry-run        only report what would be done, show new 'sfdisk -d'
        -v | --verbose	increase verbosity / debug
        -u | --update R	update the the kernel partition table info after growing
                              this requires kernel support and 'partx --update'
                              R is one of:
                              - 'auto': [default] update partition if possible
                              - 'force' : try despite- sanity checks (fail on failure)
                              - 'off' : do not attempt
                              - 'on'	: fail if sanity checks indicate no support
        Example:
        - growpart /dev/sda 1
          Resize partition 1 on /dev/sda
      must supply disk and part it ion-number
      [root@ecs-centos76 ~l#
      
    • 如果没有以上回显信息,请执行以下安装命令。
      yum install cloud-utils-growpart
      Loaded plugins: fastestmirror
      Determining fastest mirrors
      epel/x86_64/metalink                                                                                             
      | 8.0 kB  00:00:00
      ...
      Package cloud-utils-growpart-0.29-2.el7.noarch already installed and latest version
      Nothing to do

      表示安装成功。

  2. 查看数据盘“/dev/vdb”的分区信息。

    lsblk
    [root@ecs-centos76 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  40G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0  150G 0 disk
    ├vdb1 253:17   0  100G 0 part /mnt/sdc

    表示数据盘“/dev/vdb”有150GiB的容量,分区“/dev/vdb1”已有100GiB,扩容的50GiB容量还未划分磁盘分区。

    如果磁盘未分区,需要直接扩容文件系统,请执行4

  3. 将扩容新增的容量增加至分区“/dev/vdb1”。

    growpart /dev/vdb 1
    [root@ecs-test-0001 ~]# growpart /dev/vdb 1
    CHANGED: partition=1 start=2048 old: size=209713152 end=209715200 new: size=314570719,end=314572767
    • 如果回显为
      no tools available to resize disk with 'gpt'
      FAILED: failed to get a resizer for id ''

      因为磁盘原分区格式为GPT,使用growpart工具将扩容新增容量增加至已有GPT分区时,需要使用gdisk工具,因此请先输入“yum install gdisk”命令,根据提示再输入“y”,安装gdisk软件包,然后再执行上述growpart命令。

    • 如果回显为
      growpart /dev/vda 1 unexpected output in sfdisk --version [sfdisk,来自util-linux 2.23.2]

      请检查系统字符集(系统语言环境)是否为“en_US.UTF-8”,执行命令export LC_ALL=en_US.UTF-8

    • 如果出现报错“NOCHANGE:partition 1 is size xxxxxxx. it cannot be grown” 、"No space left on the block device ",导致无法正常扩容的原因可能是服务器磁盘已满(占用率100%),请您做好数据备份后清理不必要的文件或程序来释放一部分磁盘空间。

  4. 扩容分区“/dev/vdb1”文件系统大小。

    1. 查看数据盘“/dev/vdb”对应分区“/dev/vdb1”的文件系统类型。

      parted /dev/vdb

      P

      [root@ecs-centos74 ~]# parted /dev/vdb
      GNU Parted 3.1
      Using /dev/vdb
      Welcome to GNU Parted! Type 'help' to view a list of commands.
      (parted) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 107GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
       
      Number  Start   End    Size     File system    Name       Flags
       1      1049KB  107GB  107GB    ext4           /dev/vdb1
      
      (parted)

      查看完成后,输入“q”,按“Enter”,退出parted模式。

    1. 根据回显可知分区“/dev/vdb1”的文件系统类型为ext4,执行以下命令进行扩容。
      resize2fs /dev/vdb1
      [root@ecs-test-0001 ~]# resize2fs /dev/vdb1
      resize2fs 1.42.9 (28-Dec-2013)
      Filesystem at /dev/vdb1 is mounted on /mnt/sdc; on-line resizing required
      old_desc_blocks = 13, new_desc_blocks = 19
      The filesystem on /dev/vdb1 is now 39321339 blocks long.
      • 如果出现报错“open: No such file or directory while opening /dev/vdb1”,则表示您指定的磁盘分区不正确,请使用 parted命令查看磁盘分区。
      • 如果文件系统为xfs,请执行以下命令(/mnt/sdc为/dev/vdb1的挂载点,您需要根据实际情况修改)。

        sudo xfs_growfs /mnt/sdc

        [root@ecs-test-0001 ~]# sudo xfs_growfs /mnt/sdc
        meta-data=/dev/vdb1              isize=512    agcount=4, agsize=6553536 blks
                 =                       sectsz=512   attr=2, projid32bit=1
                 =                       crc=1        finobt=0 spinodes=0
        data     =                       bsize=4096   blocks=26214144, imaxpct=25
                 =                       sunit=0      swidth=0 blks
        naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
        log      =internal               bsize=4096   blocks=12799, version=2
                 =                       sectsz=512   sunit=0 blks, lazy-count=1
        realtime =none                   extsz=4096   blocks=0, rtextents=0
        data blocks changed from 26214144 to 39321339

  5. 查看扩容后分区的容量。

    lsblk
    [root@ecs-centos76 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  40G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0  150G 0 disk
    ├vdb1 253:17   0  150G 0 part /mnt/sdc

    表示数据盘“/dev/vdb”的容量大小为150GiB,该数据盘下的分区“/dev/vdb1”大小也为150GiB,说明扩容的50GB容量已生效。

    如果是对数据盘进行扩容,且操作系统内核版本低于3.6.0,需要reboot重启操作系统后扩容容量才会生效。重启会中断业务,为了防止重启后数据丢失,请确保已完成数据备份。使用CBR服务备份请参见备份云硬盘。使用快照功能备份请参见管理云硬盘快照

示例说明:系统盘“/dev/vda”原有容量40GiB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GiB,将新增的60GB增加至已有分区“/dev/vda1”。

  • 当操作系统内核低于3.6.0时,扩大已有MBR分区需要reboot重启,扩展分区和文件系统才会生效,重启后新增容量会自动扩展至系统盘末尾分区内。重启会中断业务。
  • 为了防止重启后导致数据丢失,建议初始化前先使用云备份备份数据。
  • 当操作系统内核低于3.6.0时,如果需要使用系统盘扩容新增容量创建新的分区,请参考新增MBR分区
  1. (可选)执行以下命令,安装dracut-modules-growroot工具。

    yum install dracut-modules-growroot

    [root@ecs-test-0002 ~]# yum install dracut-modules-growroot
    Loaded plugins: fastestmirror, security
    Setting up Install Process
    Loading mirror speeds from cached hostfile
    epel/metalink                                                                                                                      | 4.3 kB     00:00     
     * epel: pubmirror1.math.uh.edu
    base                                                                                                                               | 3.7 kB     00:00     
    extras                                                                                                                             | 3.4 kB     00:00     
    updates                                                                                                                            | 3.4 kB     00:00     
    Package dracut-modules-growroot-0.20-2.el6.noarch already installed and latest version
    Nothing to do

    如果已安装该工具,无需重复安装,可跳过该步骤。

  2. 重新生成initramfs文件。

    dracut -f

    initramfs文件用于帮助Linux内核访问外存储设备上的驱动程序。

  3. 查看磁盘“/dev/vda”信息。

    lsblk
    [root@ecs-test-0002 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0 100G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0 100G  0 disk
    ├vdb1 253:17   0 100G  0 part /mnt/sdc

    本示例中系统盘“/dev/vda”扩容前已有分区“/dev/vda1”,将系统盘扩容至100GB后,新增的容量还未划分磁盘分区,因此“/dev/vda”显示100GB,“/dev/vda1”显示40GB。

  4. 重启云服务器

    reboot

    待重启完成后,重新连接云服务器

  5. 查看磁盘“/dev/vda”信息。

    lsblk
    [root@ecs-test-0002 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0 100G  0 disk
    ├vda1 253:1    0 100G  0 part /
    vdb    253:16   0 100G  0 disk
    ├vdb1 253:17   0 100G  0 part /mnt/sdc

    本示例中系统盘“/dev/vda”容量为100GB,该系统盘下的分区“/dev/vda1”也显示100GB,说明扩容成功。

示例说明:数据盘“/dev/vdb”原有容量100GiB,只有一个分区“/dev/vdb1”。将数据盘容量扩大至150GiB,本示例使用fdisk工具为新增的50GiB分配新的MBR分区“/dev/vdb2”。

  1. 查看“/dev/vdb”磁盘信息

    1. 查看磁盘分区容量。
      lsblk
      [root@ecs-test-0001 ~]# lsblk
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      vda    253:0    0   40G  0 disk
      └vda1 253:1    0   40G  0 part /
      vdb    253:16   0  150G  0 disk
      └vdb1 253:17   0  100G  0 part /mnt/sdc

      磁盘“/dev/vdb”扩容前已有分区“/dev/vdb1”,将数据盘扩容50GiB后,新增的容量还未划分磁盘分区,因此“/dev/vdb”显示150GiB,“/dev/vdb1”显示100GiB。

    1. 查看磁盘分区形式。

      parted /dev/vdb

      p

      [root@ecs-test-0001 ~]# parted /dev/vdb
      GNU Parted 3.1
      Using /dev/vdb
      Welcome to GNU Parted! Type 'help' to view a list of commands.
      (parted) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 161GiB
      Sector size (logical/physical): 512B/512B
      Partition Table: msdos
      Disk Flags:
      
      Number  Start   End    Size   File system  Name        Flags
       1      1049kB  107GiB 107GiB ext4         /dev/vdb1
      
      (parted) 

      当前磁盘分区形式为MBR。

      查看完成后,输入“q”,按“Enter”,退出parted模式。

      • “Partition Table:msdos”表示磁盘分区形式为MBR
      • “Partition Table:gpt”表示磁盘分区形式为GPT
      • “Partition Table:loop”表示磁盘未分区(整盘分区),只在设备上创建了文件系统

  2. 为磁盘/dev/vdb使用扩容新增容量创建第二个主分区/dev/vdb2。

    1. 开始新建分区

      fdisk /dev/vdb

      n

      p
      [root@ecs-test-0001 ~]# fdisk /dev/vdb
      Welcome to fdisk (util-linux 2.23.2).
      
      Changes will remain in memory only, until you decide to write them.
      Be careful before using the write command.
      
      Device does not contain a recognized partition table
      Building a new DOS disklabel with disk identifier 0x38717fc1.
      
      Command (m for help): n
      Partition type:
         p   primary (0 primary, 0 extended, 4 free)
         e   extended
      Select (default p): p
      Partition number (2-4, default 2): 

    “Partition type”表示磁盘有两种分区类型:“p”表示主分区,“e”表示扩展分区。

    “Partition number”表示主分区编号,可以选择2-4,由于1已被使用,此处从2开始。

    MBR分区个数最多支持4个主分区或3个主分区+1个扩展分区。

    在扩展分区中创建逻辑分区的数量没有限制,可以创建任意多个逻辑分区。如果您需要划分大于4个分区,只能使用主分区+1个扩展分区,然后在这个扩展分区中划分多个逻辑分区。

    1. 输入主分区编号“2”,查看起始磁柱。
      Partition number (2-4, default 2): 2
      First sector (83886080-209715199, default 83886080):

      “First sector”表示起始磁柱值,可以选择83886080-209715199,默认为83886080。

    2. 按“Enter”,使用默认的起始磁柱值;再按“Enter”,使用默认的截止磁柱值。
      First sector (83886080-209715199, default 83886080): 
      using default value 83886080
      Last sector, +sectors or +size{K,M,G} (83886080-209715199, default 209715199):
      using default value 209715199
      Partition 2 of type Linux and of size 40 GB is set
      
      Command (m for help):

      “Last sector”表示截止磁柱值,可以选择83886080-209715199,默认为209715199。

      如果您需要使用扩容新增容量创建两个及以上的分区,分区的起始磁柱值和截止磁柱值计算方法举例如下:

      数据盘/dev/vdb总容量为100 GB,为该数据盘创建第1个主分区/dev/vdb1(40 GB)和第2个主分区/dev/vdb2(60 GB)。

      容量 = sectors值 * 512 bytes,1 GB=1073741824 bytes
      • 数据盘/dev/vdb(100 GB)的sectors值 = 容量 / 512 bytes = 100 * 1073741824 / 512 = 209715200,则该盘截止磁柱值为209715200-1=209715199

        如上图所示:First sector (2048-209715199, default 2048),该盘起始磁柱值为2048,截止磁柱值为209715199

      • 数据盘第1个分区/dev/vdb1(40 GB)的sectors值 = 容量 / 512 bytes = 40 * 1073741824 / 512 = 83886080,则该分区的截止磁柱值为83886080-1=83886079

        该分区的起始磁柱值,使用default值即可2048

      • 数据盘第2个分区/dev/vdb2(60 GB)的sectors值 = 容量 / 512 bytes = 60 * 1073741824 / 512 = 125829120,则该分区的截止磁柱值为125829120-1=125829119

        起始磁柱值 = /dev/vdb1的截止磁柱值 + 1 = 83886079+1 = 83886080

        截止磁柱值 = 起始磁柱值 + sectors - 1 = 83886080+125829120 -1 = 209715199

  3. 查看新建分区大小、分区格式信息。

    1. 输入“p”,按“Enter”,查看新建分区/dev/vdb2的详细信息。
      Command (m for help): p
      
      Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk label type: dos
      Disk identifier: 0x994727e5
      
         Device Boot       Start         End      Blocks   Id  System
      /dev/vdb1             2048    83886079    41942016   83  Linux
      /dev/vdb2         83886080   209715199    62914560   83  Linux
      
      Command (m for help):
    2. 输入“w”,按“Enter”,将分区结果写入分区表中。

      如果之前分区操作有误,请输入“q”,按“Enter”,则会退出fdisk分区工具,之前的分区结果将不会被保留。此时,重新执行创建分区步骤即可。

    3. 将新的分区表变更同步至操作系统。

      partprobe

    如果出现报错“-bash: partprobe: command not found”,则说明系统不识别该命令,需要执行“yum install -y parted”命令来安装该命令。安装成功后再执行上述命令。

    • 如果系统出现以下Error,请输入“Fix”。
      Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the
      disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?

      GPT分区表信息存储在磁盘开头,为了减少分区表损坏的风险,同时在磁盘末尾会备份一份。当磁盘容量扩大后,末尾位置也会随之变化,因此需要根据系统提示输入“Fix”,将分区表信息的备份文件挪到新的磁盘末尾位置。

    • 如果系统出现以下Warning,请输入“Fix”。
      Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 104857600
      blocks) or continue with the current setting?
      Fix/Ignore? Fix

      根据系统提示输入“Fix”,系统会自动将磁盘扩容部分的容量设置为GPT。

  1. 为新分区/dev/vdb2创建ext4文件系统。

    mkfs -t ext4 /dev/vdb2

    创建文件系统格式需要等待一段时间,请观察系统运行状态,不要退出。

    [root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb2
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    2621440 inodes, 10485504 blocks
    524275 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2157969408
    320 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
            4096000, 7962624
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done

    执行“parted /dev/vdb”命令,再输入“p”,查看分区文件系统类型。

    [root@ecs-test-0001 ~]# parted /dev/vdb
    GNU Parted 3.1
    Using /dev/vdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) p
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 107GiB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:
    
    Number  Start   End      Size     Type     File system  Flags
     1      1049kB  42.9GB   42.9GB   primary  ext4
     2      42.9GB  107GB    64.4GB   primary  ext4            
    
    (parted) q
    [root@ecs-test-0001 ~]#

    查看完成后,输入“q”,按“Enter”,退出parted模式。

    表示新分区“/dev/vdb2”的文件系统类型已设置为“ext4”

  2. 新建目录,并将新建分区挂载至新建目录。

    mkdir -p /mnt/sdd

    mount /dev/vdb2 /mnt/sdd

    lsblk

    查看挂载结果
    [root@ecs-test-0001 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  40G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0 150G  0 disk
    ├vdb1 253:17   0  100G  0 part /mnt/sdc
    ├vdb2 253:18   0  50G  0 part /mnt/sdd

    表示新分区“/dev/vdb2”已挂载至“/mnt/sdd”

  3. 使用磁盘分区的UUID来设置开机自动挂载磁盘分区。

    • 如果采用在“/etc/fstab”文件中直接指定设备名(比如/dev/vdb1)的方法,会因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变(例如:/dev/vdb1可能会变成/dev/vdb2),可能会导致云服务器重启后不能正常运行。
    • UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
    1. 查询磁盘分区“/dev/vdb2”的UUID

      blkid /dev/vdb2

      [root@ecs-test-0001 ~]# blkid /dev/vdb2
      /dev/vdb2: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"

      “/dev/vdb2”的UUID为0b3040e2-1367-4abb-841d-ddb0b92693df。

    2. 设置开机自动挂载磁盘分区

      vi /etc/fstab

      按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,将两个分区的如下信息添加进来。
      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df    /mnt/sdd     ext4    defaults     0    2

      按“ESC”后,输入“:wq”,按“Enter”,保存设置并退出编辑器。

      表2 参数说明

      参数示例

      说明

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df

      磁盘分区的UUID

      /mnt/sdc

      磁盘分区的挂载目录

      ext4

      磁盘分区的文件系统格式

      defaults

      磁盘分区的挂载选项,此处通常设置为defaults即可

      0

      • Linux dump备份选项。
        • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
        • 1表示使用Linux dump备份。

      2

      • fsck选项,即开机时是否使用fsck检查磁盘。
        • 2表示从挂载点为非根目录(/)的分区开始检验。
        • 1表示从挂载点为根目录(/)的分区开始检验。
        • 0表示不检验。

  4. 验证自动挂载功能已生效。

    umount /dev/vdb2

    mount -a

    则系统会将“/etc/fstab”文件所有内容重新加载。

    查询文件系统挂载信息。

    mount | grep /mnt/sdd

    回显类似如下信息,说明自动挂载功能生效:

    root@ecs-test-0001 ~]# mount | grep /mnt/sdd
    /dev/vdb2 on /mnt/sdd type ext4 (rw,relatime,data=ordered)

示例说明:数据盘“/dev/vdb”原有容量2TiB,只有一个分区“/dev/vdb1”。将数据盘容量扩大至3TiB,本示例使用parted工具为新增的1T分配新的GPT分区“/dev/vdb2”。

  1. 查看“/dev/vdb”磁盘信息

    1. 查看磁盘分区容量。
      lsblk
      [root@ecs-test-0001 ~]# lsblk
      NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      vda    253:0    0   40G  0 disk
      └vda1 253:1    0   40G  0 part /
      vdb    253:16   0  3T  0 disk
      └vdb1 253:17   0  2T  0 part /mnt/sdc

      磁盘“/dev/vdb”扩容前已有分区“/dev/vdb1”,将磁盘扩容1TiB后,新增的容量还未划分磁盘分区,因此“/dev/vdb”显示3TiB,“/dev/vdb1”显示2TiB。

    1. 查看磁盘分区形式。

      parted /dev/vdb

      p

      [root@ecs-test-0001 ~]# parted /dev/vdb
      GNU Parted 3.1
      Using /dev/vdb
      Welcome to GNU Parted! Type 'help' to view a list of commands.
      (parted) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 3299GB
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start   End    Size   File system  Name        Flags
       1      1049kB  2199GB 2199GB ext4         /dev/vdb1
      
      (parted) 

      当前磁盘分区形式为gpt。

      查看完成后,输入“q”,按“Enter”,退出parted模式。

      • “Partition Table:msdos”表示磁盘分区形式为MBR
      • “Partition Table:gpt”表示磁盘分区形式为GPT
      • “Partition Table:loop”表示磁盘未分区(整盘分区),只在设备上创建了文件系统

  2. 针对磁盘“/dev/vdb”新增1个分区/dev/vdb2

    1. 开始新建分区/dev/vdb2

      parted /dev/vdb

      unit s

      p

      [root@ecs-centos74 ~]# parted /dev/vdb
      GNU Parted 3.1
      Using /dev/vdb
      Welcome to GNU Parted! Type 'help' to view a list of commands.
      (parted) unit s
      (parted) p
      Model: Virtio Block Device (virtblk)
      Disk /dev/vdb: 6442450944s
      Sector size (logical/physical): 512B/512B
      Partition Table: gpt
      Disk Flags:
      
      Number  Start     End           Size          File system    Name       Flags
       1      2048s     4294965247s   4294963200s   ext4           /dev/vdb1  
      (parted)

      记录已有分区/dev/vdb1的截止磁柱值(End)为4294965247s。

      • 如果出现报错“-bash: parted: command not found”,则说明系统不识别该命令,需要执行“yum install -y parted”命令来安装该命令。安装成功后再执行上述命令。
      • 如果显示如下报错,请输入“Fix”。
        Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
        Fix/Ignore/Cancel?

        GPT分区表信息存储在磁盘开头,为了减少分区表损坏的风险,同时在磁盘末尾会备份一份。当磁盘容量扩大后,末尾位置也会随之变化,因此需要根据系统提示输入“Fix”,将分区表信息的备份文件挪到新的磁盘末尾位置。

      • 如果系统出现以下Warning,请输入“Fix”。
        Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 104857600 blocks) or continue with the current setting?
        Fix/Ignore? 

        根据系统提示输入“Fix”,系统会自动将磁盘扩容新增容量的分区格式设置为GPT。

    1. 设置分区名称及大小。

      mkpart /dev/vdb2 4294965248s 100%

      p

      “4294965248s”表示磁盘起始磁柱值,为已有分区/dev/vdb1的截止磁柱值(End)+1;“100%”为磁盘截止磁柱值,表示将磁盘100%容量给到/dev/vdb2分区。

    输入“q”,按“Enter”,退出parted模式。

    1. 再次查看新建分区“/dev/vdb2”

      lsblk

      [root@ecs-centos74 ~]# lsblk
      NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
      vda      253:0    0    40G  0 disk
      ├─vda1 253:1    0    40G  0 part /
      vdb      253:16   0    3T  0 disk
      ├─vdb1 253:17   0    2T  0 part /mnt/sdc
      ├─vdb2 253:18   0    1T  0 part

  3. 为分区/dev/vdb2创建ext4文件系统。

    mkfs -t ext4 /dev/vdb2

    创建文件系统格式需要等待一段时间,请观察系统运行状态,不要退出。

    [root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb2
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    67108864 inodes, 268435456 blocks
    13421772 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2415919104
    8192 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
            4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
            102400000, 214990848
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    [root@ecs-test-0001 ~]#

    执行“parted /dev/vdb”命令,再输入“p”,查看分区文件系统类型。

    [root@ecs-test-0001 ~]# parted /dev/vdb
    GNU Parted 3.1
    Using /dev/vdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) p
    Model: Virtio Block Device (virtblk)
    Disk /dev/vdb: 3299GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    
    Number  Start   End      Size     File system  Name        Flags
     1      1049kB  2199GB   2199GB   ext4         /dev/vdb1           
     2      2199GB  3299GB   1100GB   ext4         /dev/vdb2
    
    (parted) q
    [root@ecs-test-0001 ~]#

    查看完成后,输入“q”,按“Enter”,退出parted模式。

  4. 新建目录,并将新建分区挂载至新建目录。

    mkdir -p /mnt/sdc

    mount /dev/vdb1 /mnt/sdc

    lsblk

    [root@ecs-test-0001 ~]# lsblk
    NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    vda    253:0    0  40G  0 disk
    ├vda1 253:1    0  40G  0 part /
    vdb    253:16   0   3T  0 disk
    ├vdb1 253:17   0   2T  0 part /mnt/sdc
    ├vdb2 253:18   0   1T  0 part /mnt/sdd

    表示新建分区“/dev/vdb2”已挂载至“/mnt/sdd”

  5. 使用磁盘分区的UUID来设置开机自动挂载磁盘分区。

    • 如果采用在“/etc/fstab”文件中直接指定设备名(比如/dev/vdb1)的方法,会因为云中设备的顺序编码在关闭或者开启云服务器过程中可能发生改变(例如:/dev/vdb1可能会变成/dev/vdb2),可能会导致云服务器重启后不能正常运行。
    • UUID(universally unique identifier)是Linux系统为磁盘分区提供的唯一的标识字符串。
    1. 查询磁盘分区“/dev/vdb2”的UUID

      blkid /dev/vdb2

      [root@ecs-test-0001 ~]# blkid /dev/vdb2
      /dev/vdb2: UUID="0b3040e2-1367-4abb-841d-ddb0b92693df" TYPE="ext4"

      “/dev/vdb2”的UUID为0b3040e2-1367-4abb-841d-ddb0b92693df。

    2. 设置开机自动挂载磁盘分区

      vi /etc/fstab

      按“i”,进入编辑模式,将光标移至文件末尾,按“Enter”,将两个分区的如下信息添加进来。
      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df    /mnt/sdd     ext4    defaults     0    2

      按“ESC”后,输入“:wq”,按“Enter”,保存设置并退出编辑器。

      表3 参数说明

      参数示例

      说明

      UUID=0b3040e2-1367-4abb-841d-ddb0b92693df

      磁盘分区的UUID

      /mnt/sdc

      磁盘分区的挂载目录

      ext4

      磁盘分区的文件系统格式

      defaults

      磁盘分区的挂载选项,此处通常设置为defaults即可

      0

      • Linux dump备份选项。
        • 0表示不使用Linux dump备份。现在通常不使用dump备份,此处设置为0即可。
        • 1表示使用Linux dump备份。

      2

      • fsck选项,即开机时是否使用fsck检查磁盘。
        • 2表示从挂载点为非根目录(/)的分区开始检验。
        • 1表示从挂载点为根目录(/)的分区开始检验。
        • 0表示不检验。

  1. 验证自动挂载功能已生效。

    umount /dev/vdb2

    mount -a

    则系统会将“/etc/fstab”文件所有内容重新加载。

    查询文件系统挂载信息。

    mount | grep /mnt/sdd

    回显类似如下信息,说明自动挂载功能生效:

    root@ecs-test-0001 ~]# mount | grep /mnt/sdd
    /dev/vdb2 on /mnt/sdd type ext4 (rw,relatime,data=ordered)

相关文档