背景,之前的 pg 数据库数据目录使用的是物理盘,不支持扩展,随着数据增大,磁盘空间告警,现在需要将新的磁盘制作成逻辑卷,以便之后扩展使用。
之前使用的数据目录为 /u01
停止数据库
停止数据库
停止数据库
1添加2块新的磁盘
#新添加了2块磁盘 sdb 和 sdc
[root@pgmaster ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 45.1G 0 lvm /└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 25G 0 disk
sdc 8:32 0 25G 0 disk
sr0 11:0 1 1024M 0 rom
loop0 7:0 0 9.5G 0 loop /mnt
2制作第一块盘为lvm
#给磁盘分区
[root@pgmaster ~]# fdisk /dev/sdb
#输入
n
p
1
回车
回车
w[root@pgmaster ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 45.1G 0 lvm /└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 25G 0 disk
└─sdb1 8:17 0 25G 0 part
sdc 8:32 0 25G 0 disk
sr0 11:0 1 1024M 0 rom
loop0 7:0 0 9.5G 0 loop /mnt
#创建卷组
[root@pgmaster ~]# vgcreate pgdataVg /dev/sdb1Physical volume "/dev/sdb1" successfully created.Volume group "pgdataVg" successfully created
#创建逻辑卷
#报错 有的版本不支持
[root@pgmaster ~]# lvcreate --size 100%FREE -n pgdataLVM pgdataVgCan't parse size argument.Invalid argument for --size: 100%FREEError during parsing of command line.#上面命令报错了,我们指定大小重新创建
[root@pgmaster ~]# lvcreate -L 24G -n pgdataLVM pgdataVgLogical volume "pgdataLVM" created.
#查看lvm
[root@pgmaster ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part ├─centos-root 253:0 0 45.1G 0 lvm /└─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
sdb 8:16 0 25G 0 disk
└─sdb1 8:17 0 25G 0 part └─pgdataVg-pgdataLVM 253:2 0 24G 0 lvm
sdc 8:32 0 25G 0 disk
sr0 11:0 1 1024M 0 rom
loop0 7:0 0 9.5G 0 loop /mnt
#格式化逻辑卷
[root@pgmaster ~]# mkfs.xfs /dev/pgdataVg/pgdataLVM
meta-data=/dev/pgdataVg/pgdataLVM isize=512 agcount=4, agsize=1572864 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=6291456, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=3072, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#挂载
#使用uuid或者直接使用 /dev/pgdataVg/pgdataLVM 挂载#查看uuid
[root@pgmaster ~]# blkid /dev/pgdataVg/pgdataLVM
/dev/pgdataVg/pgdataLVM: UUID="e3a84235-9a93-4ff4-ae57-118d9997654d" TYPE="xfs"
3挂载逻辑卷
停止数据库
停止数据库
停止数据库
#创建挂载目录,将之前的目录备份
[root@pgmaster ~]# mv /u01 /u01_old[root@pgmaster ~]# mkdir /u01
#书写配置,开机自动挂载
[root@pgmaster ~]# cat >> /etc/fstab << 'EOF'UUID=e3a84235-9a93-4ff4-ae57-118d9997654d /u01 xfs defaults 0 0
EOF
#挂载并验证
[root@pgmaster ~]# mount -a[root@pgmaster ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 46G 12G 34G 25% /
/dev/loop0 9.5G 9.5G 0 100% /mnt
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/pgdataVg-pgdataLVM 24G 33M 24G 1% /u01
#同步数据到新挂载的目录
yum -y install rsync.x86_64[root@pgmaster ~]# rsync -av --delete /u01_old/ /u01/
启动数据库并验证
4添加第二块盘
停止数据库
停止数据库
停止数据库
#分区
[root@pgmaster ~]# fdisk /dev/sdc
n
p
1
回车
回车
w
#新分区初始化为物理卷
[root@pgmaster ~]# pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created.
#将新物理卷添加到现有的卷组中
[root@pgmaster ~]# vgextend pgdataVg /dev/sdc1Volume group "pgdataVg" successfully extended
#查看卷组可用空间
[root@pgmaster ~]# vgdisplay pgdataVg--- Volume group ---VG Name pgdataVgSystem ID Format lvm2Metadata Areas 2Metadata Sequence No 3VG Access read/writeVG Status resizableMAX LV 0Cur LV 1Open LV 1Max PV 0Cur PV 2Act PV 2VG Size 49.99 GiBPE Size 4.00 MiBTotal PE 12798Alloc PE / Size 6144 / 24.00 GiBFree PE / Size 6654 / 25.99 GiBVG UUID l6qKQb-RnAq-Uco7-NCr4-d9i6-C18a-JrwdpC
#使用lvdisplay /dev/vg_name/lv_name命令来查看逻辑卷lv_name的详细信息,包括其当前大小和是否可以在线扩展。
[root@pgmaster ~]# lvdisplay /dev/pgdataVg/pgdataLVM--- Logical volume ---LV Path /dev/pgdataVg/pgdataLVMLV Name pgdataLVMVG Name pgdataVgLV UUID 8IbaiC-eZXm-KHUE-Oz5M-Vu0Z-Armg-8HFJu8LV Write Access read/writeLV Creation host, time pgmaster, 2024-06-27 15:39:35 +0800LV Status available# open 1LV Size 24.00 GiBCurrent LE 6144Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:2
#扩展逻辑卷
[root@pgmaster ~]# lvextend -L +25G /dev/pgdataVg/pgdataLVMSize of logical volume pgdataVg/pgdataLVM changed from 24.00 GiB (6144 extents) to 49.00 GiB (12544 extents).Logical volume pgdataVg/pgdataLVM successfully resized.
#文件系统 resize:扩展逻辑卷后,逻辑卷上的文件系统也需要相应地扩大。这一步骤依赖于你使用的文件系统类型。对于大多数现代Linux系统上常见的文件系统(如ext4、xfs等),可以使用以下命令:
对于ext4文件系统:
resize2fs /dev/vg_name/lv_name#xfs
[root@pgmaster ~]# xfs_growfs /dev/pgdataVg/pgdataLVM
meta-data=/dev/mapper/pgdataVg-pgdataLVM isize=512 agcount=4, agsize=1572864 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=6291456, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=3072, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 6291456 to 12845056
5启动数据库
#启动pg,测试
[root@pgmaster ~]# systemctl start postgresql-15.service
完成