Linux-手动扩容磁盘分区

Linux-磁盘分区手动扩容

  • 大多数云商场的数据盘可以实现不重启主机在线扩容磁盘分区容量:阿里云,百度云,AWS,ucloud
  • 虽然是无损扩容,但是最好操作之前做好备份,或快照,以免意外发生
  • 修改磁盘的分区表信息,并不会删除磁盘分区的数据,格式化才会删除数据
  • 单分区磁盘操作简单,多分区磁盘注意事项较多,建议使用其他方案,而不是直接改分区表进行扩容

实例演示:使用 fdisk 扩容 ext4 磁盘分区

数据盘为阿里云高效云盘
Ubuntu 17.10 64位的 ECS 实例
未扩容前的数据盘只有一个主分区(/dev/vdb1,ext4 文件系统),文件系统的挂载点为 /data
目标是:文件系统(磁盘分区)扩容完成后,数据盘仍然只有一个主分区

首先在云控制台对指定磁盘进行扩容操作,本次示例为50GB扩容到60GB

1.扩容前检查磁盘分区信息

  • 检查并记录分区表信息,包括数据盘的总容量、起始扇区(First sector)位置,分区表类型等
fdisk -l
------------------------------------
root@zuiyoujie:~# fdisk -l /dev/vdb
Disk /dev/vdb: 60 GiB, 64424509440 bytes, 125829120 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
Disklabel type: dos
Disk identifier: 0x63c3e6e0

Device     Boot Start       End   Sectors Size Id Type
/dev/vdb1        2048 104857599 104855552  50G 83 Linux
-------------------------------------

parted parted /dev/vdb p
  • 检查磁盘分区类型和容量信息
# 查看磁盘信息
df -h

# 查看磁盘分区容量信息
lsblk /dev/vdb

# 查看磁盘分区类型
blkid

[root@zuiyoujie ~]# blkid
/dev/vda1: UUID="84953f78-xxxx-4dbd-ac60-aaabc2e4cb9c" TYPE="ext4"
/dev/vdb: UUID="cb664382-xxxx-49f0-874e-d68d8cba0141" TYPE="ext4"
/dev/vdc: UUID="4a7b0493-f24d-43d5-b499-822df72e7867" TYPE="xfs" 
  • 在原有分区内创建测试文件,扩容完毕后检查文件
root@zuiyoujie:~# mkdir -p /data/test
root@zuiyoujie:~# touch /data/test/20180327
root@zuiyoujie:~# touch /data/test/20180327.txt
root@zuiyoujie:~# tree /data/
/data/
├── lost+found
└── test
    ├── 20180327
    └── 20180327.txt

2.修改分区表

  • 卸载分已挂载的分区
# 运行 umount 命令卸载主分区
umount /dev/vdb1

# 如果卸载失败 可以使用 lsof 查看挂载信息
lsof /data

# 使用 df -h 查看是否卸载成功
df -h
-----------------------------------
root@zuiyoujie:~# 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
-----------------------------------
  • 删除并重建分区表
fdisk /dev/vdb
-------------------------------------
root@zuiyoujie:~# fdisk /dev/vdb

Welcome to fdisk (util-linux 2.27.1).
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 1
Partition 1 has been deleted.

Command (m for help): n     # 新建分区表
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical 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 60 GiB.

Command (m for help): wq        # 保存退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
--------------------------------------
  • 重新加载磁盘分区信息
# 重新加载分区信息
partprobe /dev/vdb

# 或者
partx -u /dev/vdb1

# 检查分区容量变更
lsblk /dev/vdb
  • 注意:起始扇区问题
输入第一个可用的扇区编号:为了保证数据的一致性,First sector 需要与原来的分区保持一致。在本示例中,按回车键采用默认值。
如果发现 First sector 显示的位置和之前记录的不一致,说明之前可能使用 parted 来分区,那么就停止当前的 fdisk 操作,使用 parted 重新操作。
输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。
  • 注意:分区修改命令
---------------------------------------
root@zuiyoujie:~# fdisk /dev/vdb1         # 错误的命令,fdisk 针对磁盘级操作,而不是分区
/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
--------------------------------------
  • 注意:退出后需要重新检测分区挂载情况,有时候卸载的分区会自动挂载回去
# 如果 /dev/vdb1 又被挂载上去就需要重新卸载该分区
df -h
umount /dev/vdb1

3.调整分区大小

  • 1.使用 e2fsck 检查文件系统是 ext4 类型的分区,确保状态为 clean
# 使用 e2fsck 时,由于系统需要检查并订正文件系统元数据,所以速度较慢、耗时较长
e2fsck -n /dev/vdb1

# 文件系统状态为 clean,表示文件系统状态正常,可以进行后续操作,如果状态不是 clean,需要排查修复
--------------------------------
[root@zuiyoujie ~]# e2fsck -n /dev/vdb1
Warning! /dev/vdb1 is mounted.
Warning: skipping journal recovery because doing a read-only filesystem check.
/dev/vdb1: clean, 11/1310720 files, 126322/5242624 blocks
--------------------------------

# 如果运行命令后未显示文件系统状态为clean,可以尝试用以下命令检查修复
e2fsck -n - /dev/vdb1

# 强制检查修复
e2fsck -f /dev/vdb1
--------------------------------
root@zuiyoujie:~# 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/13106944 blocks
--------------------------------

# 如果是 xfs 文件系统
xfs_repair -n /dev/vdb1
  • 2.修改文件系统大小
resize2fs /dev/vdb1
--------------------------------
root@zuiyoujie:~# 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.
--------------------------------
  • 注意:正确使用 e2fsck 和 resize2fs 指令,不会造成原有数据丢失

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

mount /dev/vdb1 /data
df -h
-------------------------------
root@zuiyoujie:~# mount /dev/vdb1 /data
root@zuiyoujie:~# 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
--------------------------------

# 配置开机器自动挂载分区,然后重启系统进行验证
vim /etc/fstab
--------------------------------
/dev/vdb1       /data                   ext4    defaults        0 0
--------------------------------

# 检查文件,确认磁盘扩容成功
root@zuiyoujie:~# tree /data/
/data/
├── lost+found
└── test
    ├── 20180327
    └── 20180327.txt

10.参考链接

百度云:https://cloud.baidu.com/doc/CDS/s/Lk0629a17
阿里云:https://help.aliyun.com/document_detail/25452.html?spm=a2c4g.11186623.6.1145.7c01c0ddQNjgWt
posted @ 2024-09-20 17:38  天生帅才  阅读(781)  评论(0编辑  收藏  举报
// 百度统计