前言
当我们工作中难免会出现磁盘需要扩容的情况,如果生产环境的磁盘当初做了lvm那对于扩容磁盘那一定很简单,但是我们难免会遇到一种情况,那就是当时这个主机的磁盘我们并没有做lvm,经过本人实测,发现有一种情况可以在线扩容,就是单位的生产环境是虚拟机,这种情况才适合非lvm情况扩容,废话不多说,上才艺。
1.今天用sdb磁盘模拟扩容情况(提前声明,这种情况仅适合在一块磁盘做扩容,不可以像lvm一样可以跨磁盘扩容,所以一开始说只适合在虚拟机操作)
[root@localhost ~]# lsblk ##查看当前主机所有磁盘空间以及分区情况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom
2.sdb磁盘先分割出来5G,创建第一个分区,也就是sdb1
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sr0 11:0 1 4.2G 0 rom [root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1):1 起始 扇区 (2048-41943039,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G 分区 1 已设置为 Linux 类型,大小设为 5 GiB 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 5G 0 part ##5G分区已划分出来 sdc 8:32 0 20G 0 disk sr0 11:0 1 4.2G 0 rom
3.假设5G空间是有文件的,我这里就不演示格式化过程了,因为是模拟情况
[root@localhost ~]# df -hT ##sdb1为刚分出来的分区sdb1,挂载到/data1目录下,我创建点文件与内容,以便展示扩容是否影响业务 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 17G 1.5G 16G 9% / devtmpfs devtmpfs 901M 0 901M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 8.6M 904M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 143M 872M 15% /boot tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/sdb1 xfs 5.0G 33M 5.0G 1% /data1
[root@localhost ~]# cd /data1 [root@localhost data1]# ll 总用量 0 [root@localhost data1]# touch {1..10}.txt [root@localhost data1]# ll 总用量 0 -rw-r--r--. 1 root root 0 1月 8 15:32 10.txt -rw-r--r--. 1 root root 0 1月 8 15:32 1.txt -rw-r--r--. 1 root root 0 1月 8 15:32 2.txt -rw-r--r--. 1 root root 0 1月 8 15:32 3.txt -rw-r--r--. 1 root root 0 1月 8 15:32 4.txt -rw-r--r--. 1 root root 0 1月 8 15:32 5.txt -rw-r--r--. 1 root root 0 1月 8 15:32 6.txt -rw-r--r--. 1 root root 0 1月 8 15:32 7.txt -rw-r--r--. 1 root root 0 1月 8 15:32 8.txt -rw-r--r--. 1 root root 0 1月 8 15:32 9.txt [root@localhost data1]# vim 1.txt [root@localhost data1]# cat 1.txt 测试之前是这样的 [root@localhost data1]# vim 2.txt [root@localhost data1]# cat 2.txt 测试之前真的是这样的
4.重点来了,因为我们之前磁盘sdb分了一个区,用了5G空间,本身这块磁盘他是20G,也就是5G扩容到20G
[root@localhost data1]# lsblk ##先查看磁盘情况 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 5G 0 part /data1 sdc 8:32 0 20G 0 disk sr0 11:0 1 4.2G 0 rom [root@localhost data1]# cd ##注意不可以在挂载的当前目录去卸载目录,否则会报错,有进程的需要关闭进程,才可以卸载 [root@localhost ~]# umount /dev/sdb1 [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 17G 1.5G 16G 9% / devtmpfs devtmpfs 901M 0 901M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 8.6M 904M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 143M 872M 15% /boot tmpfs tmpfs 183M 0 183M 0% /run/user/0 [root@localhost ~]# fdisk /dev/sdb ##操作磁盘sdb1 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):d ##因为我们就一个分区所以直接就删除了如果有三个四个分区会提示删除哪个分区,一定要选择对 已选择分区 1 分区 1 已删除 ##删除完千万别保存,否则数据全丢,一定一定不要w保存,直接再次分区 命令(输入 m 获取帮助):n ##再次分区,上次是分区1 这次就还是分区1 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p ##选择主分区 分区号 (1-4,默认 1): ##分区号选择1 起始 扇区 (2048-41943039,默认为 2048): ###起始位置,根据自己情况定,这里因为我们是直接把剩余空间全部扩容,所以我直接回车了,如果不想要这么大,扇区结束要比刚才我们第一个分区5G大就可以了, 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):w ##这个时候再保存 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# lsblk ##查看空间发现sdb空间全部分给sdb1了 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part sdc 8:32 0 20G 0 disk sr0 11:0 1 4.2G 0 rom [root@localhost ~]# mount /dev/sdb1 /data1 ##挂载磁盘到/data1 [root@localhost data1]# df -hT ##发现空间还是没有扩容,原因是我们没有进行在线扩容 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 17G 1.5G 16G 9% / devtmpfs devtmpfs 901M 0 901M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 8.6M 904M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 143M 872M 15% /boot tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/sdb1 xfs 5.0G 33M 5.0G 1% /data1 [root@localhost data1]# xfs_growfs /dev/sdb1 ##在线扩容 xfs文件系统用这个命令,ext4用resize2fs meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1310720 to 5242624 [root@localhost data1]# df -hT ##空间20G了 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 17G 1.5G 16G 9% / devtmpfs devtmpfs 901M 0 901M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 8.6M 904M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 143M 872M 15% /boot tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/sdb1 xfs 20G 33M 20G 1% /data1 [root@localhost data1]# cd /data1 [root@localhost data1]# ll 总用量 8 -rw-r--r--. 1 root root 0 1月 8 15:32 10.txt -rw-r--r--. 1 root root 25 1月 8 15:33 1.txt -rw-r--r--. 1 root root 31 1月 8 15:33 2.txt -rw-r--r--. 1 root root 0 1月 8 15:32 3.txt -rw-r--r--. 1 root root 0 1月 8 15:32 4.txt -rw-r--r--. 1 root root 0 1月 8 15:32 5.txt -rw-r--r--. 1 root root 0 1月 8 15:32 6.txt -rw-r--r--. 1 root root 0 1月 8 15:32 7.txt -rw-r--r--. 1 root root 0 1月 8 15:32 8.txt -rw-r--r--. 1 root root 0 1月 8 15:32 9.txt [root@localhost data1]# cat 1.txt ##查看文件以及内容没丢失,扩容成功 测试之前是这样的 [root@localhost data1]# cat 2.txt 测试之前真的是这样的