Linux磁盘分区扩容

摘要:
随着业务的增长,aliyun数据盘容量可能无法满足数据存储的需要,这时可以使用“”磁盘扩容“”功能扩容数据盘。本文以一个SSD云盘的数据盘和一个运行Ubuntu16..464位的ECS实例为例,说明如何扩容磁盘分区并使扩容后的容量可用。umount/dev/vdb13.2.使用df-h查看是否卸载成功如果看不到/dev/vdb1的信息表示卸载成功root@zstest:~#df-hFilesystemSizeUsedAvailUse%Mountedonudev3.9G03.9G0%/devtmpfs799M3.0M796M1%/run/dev/vda150G5.4G42G12%/tmpfs3.9G03.9G0%/dev/shmtmpfs5.0M05.0M0%/run/locktmpfs3.9G03.9G0%/sys/fs/cgrouptmpfs799M0799M0%/run/user/04.扩容指定的分区4.1.使用fdisk命令删除原来的分区并创建新分区运行命令fdisk-l罗列分区信息并记录扩容前数据盘的最终容量、起始扇区位置。

随着业务的增长,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/20180327root@zstest:~# touch /data/test/20180327.txt
root@zstest:~# tree /data/
/data/├── lost+found
└── test
├── 20180327└── 20180327.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 3.9G 0 3.9G 0% /dev
tmpfs 799M 3.0M 796M 1% /run
/dev/vda1 50G 5.4G 42G 12% /tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 799M 0 799M 0% /run/user/0

4.扩容指定的分区

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

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

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


Disk /dev/vdb: 60 GiB, 64424509440 bytes, 125829120sectors
Units: sectors of 1 * 512 = 512bytes
Sector size (logical/physical): 512 bytes / 512bytes
I/O size (minimum/optimal): 512 bytes / 512bytes
Disklabel type: dos
Disk identifier: 0x63c3e6e0
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 104857599 104855552 50G 83 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.1).
Changes will remain in memory only, until you decide to writethem.
Be careful before using the writecommand.

Command (m forhelp): d
Selected partition 1Partition 1has been deleted.

Command (m forhelp): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container forlogical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-125829119, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-125829119, default 125829119):

Created a new partition 1 of type 'Linux' and of size 60GiB.

Command (m forhelp): 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(8) 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 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 3.2M 1.6G 1% /run
/dev/vda1 50G 5.7G 41G 13% /tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/vdb1 50G 52M 47G 1% /data
root@zstest:~# umount /dev/vdb1
root@zstest:~# df -h
Filesystem Size Used Avail Use%Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 3.2M 1.6G 1% /run
/dev/vda1 50G 5.7G 41G 13% /tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0

4.3.重新读取分区表信息

1)检查文件系统

e2fsck -f /dev/vdb1 

2)变更文件系统大小

resize2fs /dev/vdb1 

注意:

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

root@zstest:~# e2fsck -f /dev/vdb1
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 14/3276800 files (0.0% non-contiguous), 251700/13106944blocks

root@zstest:~# resize2fs /dev/vdb1
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/vdb1 to 15728384(4k) blocks.
The filesystem on /dev/vdb1 is now 15728384 (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 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 3.2M 1.6G 1% /run
/dev/vda1 50G 5.7G 41G 13% /tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/vdb1 59G 52M 56G 1% /data

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

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

6.重启系统进行验证

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

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

注意:

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

阿里云提示的注意事项:

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

经验分享:

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

完毕,呵呵呵呵

免责声明:文章转载自《Linux磁盘分区扩容》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#——安装包制作 [桌面快捷图标 右键属性 打开文件位置,更改图标]问题解决ASP.NET Web应用程序修改页面Inherits示例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[linux]进程(六)——守护进程

15,守护进程 概念:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程的特点:守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。守护进程...

Manjaro Linux (KDE桌面)安装以及使用中的一些问题

昨天晚上一顿折腾终于装好了Manjaro,觉得有必要写篇博客记录一下以免重装的时候没有参考。 提醒:开始的某些操作是错误操作,千万别一步一步跟着操作,阅读一下后文!! 坎坷的安装过程 遇到的第一个问题在于启动盘。。。在win10下烧启动盘,最开始用的是Universal USB Installer,结果BIOS启动一直黑屏,UEFI启动grub rescu...

linux安装jdk与配置-centos7版本

1、Linux安裝jdk 1、如果電腦沒有wget命令的,先使用yum安裝wget命令。 eg: yum install wget 2、安裝好后就可以直接使用wget命令去下載jdk。 附:打開官網連接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2...

部署GlusterFS及Heketi

一、前言及环境 在实践kubernetes的StateFulSet及各种需要持久存储的组件和功能时,通常会用到pv的动态供给,这就需要用到支持此类功能的存储系统了。在各类支持pv动态供给的存储系统中,GlusterFS的设定比较简单,且数据安全性比较有保障,相较于ceph和NFS。 环境(gluster-server之间互信): 二、部署Gluste...

从串口登录Linux主机

一般来说,登录Linux系统,我们会使用telnet,ssh,rlogin,甚至可以使用webmin通过web来管理 但这都需要网络的支持,一旦网络出现问题,以上的方法都将失效 这里介绍如何使用串口登录到Linux主机(就好比配置Cisco的路由器一样) 首先确认Linux系统中有/sbin/agetty,然后编辑/etc/inittab,添加: “7:2...

mac OS 查看 CPU 型号; linux 查看CPU 型号

当你在自己平台进行测试的时候,需要告诉讨论的对方自己的型号,配置;这样maintainer 才能分析你测试的合理性: macos 获取自身的cpu型号,可以使用sysctl 命令: ➜ ~ sysctl -a | grep brand_string linux 平台,可以直接在 /proc/cpuinfo 中查看; cat /proc/cpuinfo |...