随着业务的增长,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. hdu5073 贪心

    这题说的是给了 n个值每个值 然后 他们的品均值 作为中点 然后每个点到中点的均值的平方 和最小值是多少 有 k 个点可以重新 放过位置 , 这样我们 应该 会选 最近的那个 n-k个点 然后 取他们 ...

  2. EF Code First 学习笔记:表映射(转)

      多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Per ...

  3. .Ignite是什么

    Ignite是什么 Apache Ignite内存数据组织是高性能的.集成化的以及分布式的内存平台,他可以实时地在大数据集中执行事务和计算,和传统的基于磁盘或者闪存的技术相比,性能有数量级的提升.  ...

  4. WPF usercontrol 自定义依赖属性

    1.依赖属性不同意一般属性,一般属性主要定义在对象中,而依赖属性是存在一个特殊的依赖属性表中.2.当我们触发改变值时,需要通过SetValue这种方式进行触发. UserControl1.xaml: ...

  5. PHP多进程学习(二)__fork起多个子进程,父进程的阻塞与非阻塞

    先简单来了解一下多进程 [来初步了解一下PHP多进程及简单demo] php的多进程是不是可以无限制的fork子进程?fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的 ...

  6. 《Java程序设计》第四章-认识对象

    20145221<Java程序设计>第四章-认识对象 总结 教材学习内容总结 类与对象 定义:对象是Java语言中重要的组成部分,之前学过的C语言是面向过程的,而Java主要是面向对象的. ...

  7. Linux网络子系统之---- PHY 配置

    MII即媒体独立接口,也叫介质无关接口. 它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1). 数据接口包括分别用于发送器和接收器的两条独立信道.每条信道都有自己的数据.时钟和控制信号. ...

  8. A8几种内存

    1.SD卡(程序可写入,当成最次硬盘来用) 2.nandflash(程序可写入,当成一般硬盘来用) 3.DDR2(当A8板子的内存条来用)

  9. 如何在编辑框中使用IAutoComplete接口(转载)

    出自:http://www.vckbase.com/index.php/wv/27.html 如果可能我想用打包类来实现.唉!,就叫我封装先生吧. 你算是找对地方了.但是我要先声明我的解决办法不是你所 ...

  10. sql注入分析

    输入 1:sql为:select * from users where id = 1; 输入'测试:回显:You have an error in your SQL syntax; check the ...