随着业务的增长,aliyun数据盘容量可能无法满足数据存储的需要,这时可以使用“”磁盘扩容“”功能扩容数据盘。

本文以一个SSD云盘的数据盘和一个运行Ubuntu 16..4 64位的 ECS 实例为例,说明如何扩容磁盘分区并使扩容后的容量可用。
未扩容前的数据盘只有一个主分区(/dev/vdb1,ext4 文件系统),文件系统的挂载点为 /data,文件系统扩容完成后,数据盘仍然只有一个主分区。

1.在阿里云控制台对指定磁盘进行扩容操作

本次示例为50GB扩容到60GB

2.创建测试文件

先在原有分区内创建测试文件,扩容完毕后检查文件

root@zstest:~# mkdir -p /data/test
root@zstest:~# touch /data/test/
root@zstest:~# touch /data/test/.txt
root@zstest:~# tree /data/
/data/
├── lost+found
└── test
├──
└── .txt

3.卸载旧分区

3.1.使用“umount”命令卸载分区。

umount /dev/vdb1

3.2.使用df -h查看是否卸载成功

如果看不到/dev/vdb1的信息表示卸载成功

root@zstest:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev .9G .9G % /dev
tmpfs 799M 3.0M 796M % /run
/dev/vda1 50G .4G 42G % /
tmpfs .9G .9G % /dev/shm
tmpfs 5.0M 5.0M % /run/lock
tmpfs .9G .9G % /sys/fs/cgroup
tmpfs 799M 799M % /run/user/

4.扩容指定的分区

4.1.使用 fdisk 命令删除原来的分区并创建新分区

运行命令 fdisk -l 罗列分区信息并记录扩容前数据盘的最终容量、起始扇区(First sector)位置。

root@zstest:~# fdisk -l
Disk /dev/vda: GiB, bytes, sectors
Units: sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disklabel type: dos
Disk identifier: 0xd6804155 Device Boot Start End Sectors Size Id Type
/dev/vda1 * 50G Linux Disk /dev/vdb: GiB, bytes, sectors
Units: sectors of * = bytes
Sector size (logical/physical): bytes / bytes
I/O size (minimum/optimal): bytes / bytes
Disklabel type: dos
Disk identifier: 0x63c3e6e0 Device Boot Start End Sectors Size Id Type
/dev/vdb1 50G Linux

过程原理:

先删除原有分区表,然后重建分区表,保存退出

创建分区表操作步骤:

1)输入第一个可用的扇区编号:为了保证数据的一致性,First sector 需要与原来的分区保持一致。在本示例中,按回车键采用默认值。
2)如果发现 First sector 显示的位置和之前记录的不一致,说明之前可能使用 parted 来分区,那么就停止当前的 fdisk 操作,使用 parted 重新操作。
3)输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。

对指定的磁盘进行操作

fdisk /dev/vdb
root@zstest:~# fdisk /dev/vdb

Welcome to fdisk (util-linux 2.27.).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Command (m for help): d
Selected partition
Partition has been deleted. Command (m for help): n
Partition type
p primary ( primary, extended, free)
e extended (container for logical partitions)
Select (default p): p
Partition number (-, default ):
First sector (-, default ):
Last sector, +sectors or +size{K,M,G,T,P} (-, default ): Created a new partition of type 'Linux' and of size GiB. Command (m for help): wq
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

如果操作对象是指定的分区,会出现以下提示

root@zstest:~# fdisk /dev/vdb1
/dev/vdb1: device contains a valid 'ext4' signature; it is strongly recommended to wipe the device with wipefs() if this is unexpected, in order to avoid possible collisions

由以上内容可知,磁盘分区是针对磁盘级别进行的操作,而不是分区级别

4.2.检查分区挂载情况

保存退出后需要重新检测分区挂载情况,如果/dev/vdb1又被挂载上去就需要重新卸载该分区

root@zstest:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev .9G .9G % /dev
tmpfs .6G 3.2M .6G % /run
/dev/vda1 50G .7G 41G % /
tmpfs .9G .9G % /dev/shm
tmpfs 5.0M 5.0M % /run/lock
tmpfs .9G .9G % /sys/fs/cgroup
tmpfs .6G .6G % /run/user/
/dev/vdb1 50G 52M 47G % /data
root@zstest:~# umount /dev/vdb1
root@zstest:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev .9G .9G % /dev
tmpfs .6G 3.2M .6G % /run
/dev/vda1 50G .7G 41G % /
tmpfs .9G .9G % /dev/shm
tmpfs 5.0M 5.0M % /run/lock
tmpfs .9G .9G % /sys/fs/cgroup
tmpfs .6G .6G % /run/user/

4.3.重新读取分区表信息

1)检查文件系统

e2fsck -f /dev/vdb1 

2)变更文件系统大小

resize2fs /dev/vdb1 

注意:

使用 e2fsck 时,由于系统需要检查并订正文件系统元数据,所以速度较慢、耗时较长,请耐心等待。
正确使用 e2fsck 和 resize2fs 指令,不会造成原有数据丢失。

root@zstest:~# e2fsck -f /dev/vdb1
e2fsck 1.42. (-May-)
Pass : Checking inodes, blocks, and sizes
Pass : Checking directory structure
Pass : Checking directory connectivity
Pass : Checking reference counts
Pass : Checking group summary information
/dev/vdb1: / files (0.0% non-contiguous), / blocks root@zstest:~# resize2fs /dev/vdb1
resize2fs 1.42. (-May-)
Resizing the filesystem on /dev/vdb1 to (4k) blocks.
The filesystem on /dev/vdb1 is now (4k) blocks long.

5.挂载新分区

5.1.重新挂载分区到指定目录

mount /dev/vdb1 /data
root@zstest:~# mount /dev/vdb1 /data
root@zstest:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev .9G .9G % /dev
tmpfs .6G 3.2M .6G % /run
/dev/vda1 50G .7G 41G % /
tmpfs .9G .9G % /dev/shm
tmpfs 5.0M 5.0M % /run/lock
tmpfs .9G .9G % /sys/fs/cgroup
tmpfs .6G .6G % /run/user/
/dev/vdb1 59G 52M 56G % /data

5.2.配置开机器自动挂载分区

vim /etc/fstab 
root@zstest:/data# vim /etc/fstab
......
/dev/vdb1 /data ext4 defaults

6.重启系统进行验证

检查文件,确认磁盘扩容成功

root@zstest:~# tree /data/
/data/
├── lost+found
└── test
├──
└── .txt

注意:

虽然操作是无损扩容,但是为防止无操作造成的损失,最好提前做好数据备份,或做快照

阿里云提示的注意事项:

1.磁盘扩容功能只能扩容数据盘,不能扩容系统盘或本地盘(本地 SSD 盘等)。
2.挂载在实例上的数据盘,只有当实例处于 运行中 (Running) 或 已停止 (Stopped) 状态时才可以扩容。
无论数据盘的状态是 待挂载 还是 使用中,都可以执行磁盘扩容操作。
3.扩容这种数据盘需要在控制台上重启实例后才能使扩容后的容量生效,而重启实例会停止实例,中断您的业务,所以请您谨慎操作。
4.建议在扩容数据盘之前手动创建快照,以备份数据。
5.如果数据盘正在创建快照,则不允许执行扩容数据盘的操作。
6.包年包月实例如果做过 续费降配 操作,当前计费周期的剩余时间内,实例上的包年包月云盘不支持扩容磁盘操作。

经验分享:

1.重新分区(创建分区表)并不会删除磁盘分区的数据,格式化则会删除,
2.分区类型及个数最好不要调整

完毕,呵呵呵呵

Linux磁盘分区扩容的更多相关文章

  1. linux根分区扩容

    Linux 根分区扩容 1.fdisk –l  (红线部分为新添加的硬盘) 2.磁盘格式化 3. mkfs.ext3 -T largefile /dev/sde(格式化上面的分区) 4. vgdisp ...

  2. Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  3. linux磁盘分区模式

    linux磁盘分区模式 模式一:MBR 1)主分区不超过四个 2)单个分区容量最大2TB 模式二:GPT 1)主分区个数"几乎"没有限制(原因:在GPT的分区表中最多可以支持128 ...

  4. <实训|第七天>横扫Linux磁盘分区、软件安装障碍附制作软件仓库

    期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...

  5. 调整Linux磁盘分区的大小的方法

      昨天数据入库时,一直报错,说磁盘满了,,df -h    一看,发现/目录下只有50G空间,已使用49G:我的程序和dbss都安装在/目录下,ftp到的数据放在/data下的一个子目录下,分解完的 ...

  6. Linux磁盘分区与格式化

    磁盘分区格式说明 linux分区不同于windows linux下分区标示: 例如:hda1 hd这两个字母表示分区所在的设备类型,hd标示IDE类型硬盘,sd表示SCSI类型硬盘 第三字母a标示硬盘 ...

  7. Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk

    fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 ...

  8. Linux 磁盘分区修改与管理

    --Linux 磁盘分区修改与管理 -----------------------------2014/03/05 1. 目的,将磁盘卷/dev/cciss/c0d0p8修改成新的用途. 原: /de ...

  9. Linux 磁盘分区方案简析

    Linux 磁盘分区方案简析 by:授客 QQ:1033553122   磁盘分区 任何硬盘在使用前都要进行分区.硬盘的分区有两种类型:主分区和扩展分区.一个硬盘上最多只能有4个主分区,其中一个主分区 ...

随机推荐

  1. Kafka丢失数据问题优化总结

    数据丢失是一件非常严重的事情事,针对数据丢失的问题我们需要有明确的思路来确定问题所在,针对这段时间的总结,我个人面对kafka 数据丢失问题的解决思路如下: 是否真正的存在数据丢失问题,比如有很多时候 ...

  2. SQL SERVER 2008 R2序列号

    SQL SERVER 2008 R2序列号: 数据中心版:PTTFM-X467G-P7RH2-3Q6CG-4DMYB 开 发者 版:MC46H-JQR3C-2JRHY-XYRKY-QWPVM 企    ...

  3. (28)Cocos2d-x xml解析

    Cocos2d-x 已经加入了tinyxml2用于xml的解析.3.0版本位于external/tinyxml2下.2.x版本位于cocos2dx/support/tinyxml2下. tinyxml ...

  4. (转)SSIS_数据流转换(Union All&合并联接&合并)

    Union All : 与sql语言 Union All 一样,不用排序,上下合并多个表.Union All转换替代合并转换:输入输出无需排序,合并超过两个表 合并联接 : 有左连接.内连接.完全连接 ...

  5. Python通用网络爬虫脚本

    from sys import argv from os import makedirs,unlink,sep,mkdir from os.path import dirname,exists,isd ...

  6. 向Oracle 数据表中插入一条带有日期类型的数据

    有一张表:batch(批次表) 表的字段如下: 第一种情况: 现在需要插入一条当前的系统时间 sql 如下: insert into batch (batch_id, cus_id, batch_nu ...

  7. oracle_多字段统计(多count)

    oracle_多字段统计 查询同一张表中同一字段的不同值的综合,方法如下: select o.code 礼品代码, o.name 礼品名称, l.couponactivityid 券活动定义, cou ...

  8. LoRa无线通信设计(一)原理

    LoRa无线通信设计(一)原理 引言 1901年,古列尔默.马可尼把长波无线电信号从Cornwall(康沃尔,位于英国的西南部)跨过大西洋传送到3200公里之外的Newfoundland(加拿大的纽芬 ...

  9. Core Java 5

    p273~p276: 1.获取异常的更多信息:e.getMessage(). 2.得到异常的实际类型:e.getClass().getName(). 3.当异常之间不存在子类关系,并且异常的处理机制( ...

  10. SQL Server 2008 添加约束

    ALTER TABLE Student --主键约束ADD CONSTRAINT PK_StuNo PRIMARY KEY (StudentNo) ALTER TABLE Student --唯一约束 ...