环境:centos7.9、Vmware 12
前些天发现自己的虚拟机的根分区已经用了92%,给根分区扩容迫在眉睫,本篇就来记录一下如何给根分区扩容。
[root@iflytek ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/cl-root xfs 47G 30G 18G 63% / #根分区只剩63%了,需要给根分区扩容 devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 9.0M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda2 xfs 497M 167M 330M 34% /boot /dev/loop0 iso9660 4.1G 4.1G 0 100% /media/iso tmpfs tmpfs 378M 0 378M 0% /run/user/0
由于我已经有两块硬盘了,这里我就添加一块10G的,步骤选项选择默认即可,添加成功之后我们开启虚拟机即可。
我们可以使用lsblk 命令来查看磁盘空间使用情况,已经来查看我们新添加的磁盘,系统是否识别到了:
[root@iflytek ~]# lsblk #查看有多少快磁盘以及分区情况 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk #sda磁盘,有3个分区,分别是sda1、sda2、sda3 ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 500M 0 part /boot └─sda3 8:3 0 39.5G 0 part ├─cl-root 253:0 0 46.5G 0 lvm / └─cl-swap 253:1 0 8G 0 lvm [SWAP] sdb 8:16 0 15G 0 disk #sdb磁盘,有1个分区,即sdb1 └─sdb1 8:17 0 15G 0 part └─cl-root 253:0 0 46.5G 0 lvm / sdc 8:32 0 10G 0 disk #sdc磁盘,这就是我们刚才添加的磁盘,还没有分区 sr0 11:0 1 1024M 0 rom loop0 7:0 0 4.1G 0 loop /media/iso #这是本机挂载的iso镜像做yum本地源使用的,不用管它
系统已经成功识别到了我们刚才添加的磁盘并命名为sdc,下面我们就来对sdc进行分区操作。
[root@iflytek ~]# fdisk /dev/sdc #注意不要选错磁盘 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x1a6ca3e9. Command (m for help): m #打印帮助文档 Command action 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 #n表示创建1个新分区 o create a new empty DOS partition table p print the partition table #打印分区表 q quit without saving changes #q表示退出且不保存 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 #w表示保存并退出 x extra functionality (experts only) Command (m for help): n #输入 n,我们开始新建一个分区 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p #输入 p,我们将分区创建为主分区 Partition number (1-4, default 1): 1 #输入1,我们将分区定义为第1个分区,即sdc1 First sector (2048-20971519, default 2048): #回车保持默认即可 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): #回车保持默认即可 Using default value 20971519 Partition 1 of type Linux and of size 10 GiB is set Command (m for help): t #输入t,我们来改变一下分区的类型 Selected partition 1 Hex code (type L to list all codes): 8e #输入8e,8e就是LVM Changed type of partition 'Linux' to 'Linux LVM' Command (m for help):w #退出并保存 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@iflytek ~]# [root@iflytek ~]# lsblk #再次查看磁盘信息 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 40G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 500M 0 part /boot └─sda3 8:3 0 39.5G 0 part ├─cl-root 253:0 0 46.5G 0 lvm / └─cl-swap 253:1 0 8G 0 lvm [SWAP] sdb 8:16 0 15G 0 disk └─sdb1 8:17 0 15G 0 part └─cl-root 253:0 0 46.5G 0 lvm / sdc 8:32 0 10G 0 disk └─sdc1 8:33 0 10G 0 part #多了1个sdc1分区了 sr0 11:0 1 1024M 0 rom loop0 7:0 0 4.1G 0 loop /media/iso
[root@iflytek ~]# parted -l # 输入parted -l命令 Model: VMware, VMware Virtual S (scsi) Disk /dev/sda: 42.9GB Sector size (logical/physical): 512B/512B Partition Table: msdos Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-swap: 8590MB Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags 1 0.00B 8590MB 8590MB linux-swap(v1) Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-root: 49.9GB #这个/dev/mapper/cl-root就是df-Th 命令查看到的根分区的文件系统 Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags 1 0.00B 49.9GB 49.9GB xfs #可知,根分区使用xfs的文件系统类型 [root@iflytek ~]#
注意:不用的文件系统类型需使用不同的命令,如xfs类型的使用mkfs.xfs,ext4的使用mkfs.ext4,这要根据根分区的文件系统类型决定。
[root@iflytek ~]# mkfs.xfs /dev/sdc1 #使用mkfs.xfs 命令格式化sdc1分区为xfs类型的文件系统 meta-data=/dev/sdc1 isize=512 agcount=4, agsize=655296 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621184, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@iflytek ~]#
查看卷组信息,我们关心的是根分区的卷组信息。
[root@iflytek ~]# lvdisplay --- Logical volume --- LV Path /dev/cl/swap LV Name swap VG Name cl LV UUID YXKtbv-hVpe-yzAJ-Ba5U-rVRs-OxOd-3aNN8B LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-07-16 16:20:52 +0800 LV Status available # open 2 LV Size 8.00 GiB Current LE 2048 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/cl/root #这是LV Path,记住这个/dev/cl/root LV Name root VG Name cl #这个卷组名,记住这个组名cl LV UUID hNAQ4l-PuwJ-wVdv-2eGV-PoOk-5ash-6pZo7V LV Write Access read/write LV Creation host, time localhost.localdomain, 2021-07-16 16:20:52 +0800 LV Status available # open 1 LV Size 46.50 GiB Current LE 11905 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 [root@iflytek ~]#
[root@iflytek ~]# pvcreate /dev/sdc1 #将sdc1分区变为pv WARNING: xfs signature detected on /dev/sdc1 at offset 0. Wipe it? [y/n]: y #输入y Wiping xfs signature on /dev/sdc1. Physical volume "/dev/sdc1" successfully created. [root@iflytek ~]# vgextend cl /dev/sdc1 #将/dev/sdc1卷加入根目录所在的卷组名cl,cl就是查看卷组信息时看到的LG name Volume group "cl" successfully extended [root@iflytek ~]# vgdisplay #查看现在卷组信息,记录下Free PE 的数字 --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 3 Act PV 3 VG Size 64.50 GiB PE Size 4.00 MiB Total PE 16512 Alloc PE / Size 13953 / 54.50 GiB Free PE / Size 2559 / 10.00 GiB #关注这个可用Free PE VG UUID dOh6BR-umrn-JEt2-83oS-R61C-VZDU-aftE7k [root@iflytek ~]# lvextend -l +2559 /dev/cl/root #把可用空间全部加给根分区,2559就是上面的Free PE值,/dev/cl/root就是上面查看卷组信息的LV Path值 Size of logical volume cl/root changed from 46.50 GiB (11905 extents) to 56.50 GiB (14464 extents). Logical volume cl/root successfully resized. #以上只是完成了卷的扩容,文件系统还没扩容,执行最后一步: [root@iflytek ~]# xfs_growfs /dev/cl/root meta-data=/dev/mapper/cl-root isize=512 agcount=6, agsize=2064896 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=12190720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=4033, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 12190720 to 14811136 [root@iflytek ~]# df -Th #这时查看磁盘空间根分区就真正扩容了
1、关机添加磁盘–>开机
2、lsblk 查看磁盘信息,确认系统已经识别出磁盘sdxx
3、fdisk /dev/sdb 分区,如下:
[root@iflytek ~]# fdisk /dev/sdb Command (m for help): m #打印菜单 Command (m for help): n #新建分区 Select (default p): p #输入 p,我们将分区创建为主分区 Partition number (1-4, default 1): 1 #输入1,我们将分区定义为第1个分区,即sdc1 First sector (2048-20971519, default 2048): #回车保持默认即可 First sector (2048-20971519, default 2048): #回车保持默认即可 Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): #回车保持默认即可 Using default value 20971519 Partition 1 of type Linux and of size 10 GiB is set Command (m for help): t #输入t,我们来改变一下分区的类型 Hex code (type L to list all codes): 8e #输入8e,8e就是LVM Command (m for help):w #保存更改并退出
4、 parted -l #查看根分区的文件系统类型
Model: Linux device-mapper (linear) (dm) Disk /dev/mapper/cl-root: 60.7GB #这个/dev/mapper/cl-root就是我们df -Th 经常看到的根分区 Sector size (logical/physical): 512B/512B Partition Table: loop Disk Flags: Number Start End Size File system Flags 1 0.00B 60.7GB 60.7GB xfs #文件系统类型是xfs [root@iflytek ~]#
5、开始格式化sdb1,指定文件系统类型
[root@iflytek ~]# mkfs.xfs /dev/sdb1 #格式化分区并指定文件系统为xfs
6、开始扩容
[root@iflytek ~]# lvdisplay #查看卷组信息,记下跟分区的卷组名和路径,即LG name的名字和LV Path的值 [root@iflytek ~]# pvcreate /dev/sdb1 #将分区变为pv [root@iflytek ~]# vgextend cl /dev/sdb1 #将sdb1分区 加入根目录所在的卷组名,这里我的是cl,具体是什么名要根据LG name查看 [root@iflytek ~]# vgdisplay #查看现在卷组信息,记录下Free PE 的数字 [root@iflytek ~]# lvextend -l +3839 /dev/cl/root #将可用空间扩容给根分区,3839就是上一步查看的可用Free PE,/dev/cl/root是LV Path [root@iflytek ~]# df -Th #发现根目录还是原来的空间大小,这是因为以上只是完成了卷的扩容,文件系统还没扩容,最后执行下面这一步 [root@iflytek ~]# xfs_growfs /dev/cl/root #/dev/cl/root是LV Path,这才是真正完成了根的扩容。 [root@iflytek ~]# df -Th #查看磁盘空间,发现容量已经变大了