由于数据的日益增长,hdfs可用空间变小导致后面数据无法存入hdfs,而hdfs的数据目录又与所在卷组的空间大小息息相关,本文章将分两个场景去实现扩容,适用于集群搭建时扩容,注意集群应处于关闭状态,来干来干。
- 场景一: 添加了硬盘后df、vgdisplay均未查看到所增加的可用空间。
- 场景二: /home所在卷组空闲空间过大。
一.分区追加到卷组实现扩容
实现场景一: 添加了硬盘后df、vgdisplay均未查看到所增加的可用空间,创建分区与物理卷去追加到hdfs数据目录的所在卷组并分配空闲空间。
1.查看所有硬盘分区及状况
[root@bd /] fdisk -l
# 可以看到其中某块硬盘拥有很大的空间,但目前并未使用
磁盘 /dev/sda:429.6 GB, 429603684352 字节,839069696 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:
磁盘 /dev/mapper/centos-root:39.2 GB, 39180107776 字节,86523648 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
2.创建新分区
# 当前所拥有的大容量硬盘
[root@bd /] fdisk /dev/sda
- m查看所有操作
- 第一步: n (new一个新分区)
- 第二步: p (选择主分区, 默认为3)
- 第三步: t (修改分区格式, 设置为8e, 该代码对应的分区格式为Linux LVM)
- 第四步: p (显示分区信息)
- 第五步: w (保存当前分区信息)
- reboot
3.创建物理卷
[root@bd /] pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
4.查看卷组
# 查看卷组
# VG NAME(卷组名)
[root@bd /] pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <39.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 9983
Free PE 1
Allocated PE 9982
PV UUID ******-****-****-****-****-****-uR1DPn
# "/dev/sda3" 为我们新创建的物理卷
"/dev/sda3" is a new physical volume of "<360.10 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name
PV Size <360.10 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ******-****-****-****-****-****-hG4DT2
5.物理卷追加到卷组
# 卷组名 物理卷
[root@bd /] vgextend centos /dev/sda3
Volume group "centos" successfully extended
# 查看当前卷组空闲空间
# Free PE
[root@bd /] pvdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 399.09 GiB
PE Size 4.00 MiB
Total PE 102168
Alloc PE / Size 9982 / 38.99 GiB
Free PE / Size 92186 / 360.10 GiB
VG UUID ******-****-****-****-****-****-hG4DT2
到此空闲的空间已经追加到了当前hdfs数据目录所在的卷组,接下来就是分配空闲空间。
6. 分配空间
# 分配空闲空间
# 该空间不能大于Free PE(空闲空间)
[root@bd /] lvextend -L +1000G /dev/mapper/centos-root
Size of logical volume centos/root changed from <35.12 GiB (8990 extents) to <394.12 GiB (100894 extents).
Logical volume centos/root successfully resized.
# 分配所有可用空间
# 可通过-D自定义分配的空间大小
[root@bd /] xfs_growfs /opt
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2301440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=9205760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=4495, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 9205760 to 103315456
7. 查看分配的空间
[root@bd /] df -hT /opt
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 12M 3.8G 1% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 395G 9.7G 385G 3% /
/dev/sda1 xfs 1014M 189M 826M 19% /boot
tmpfs tmpfs 781M 0 781M 0% /run/user/0
分配完成,启动集群查看当前节点DataNode的磁盘可用容量
二.压缩并分配磁盘空间
实现场景二: 因/home所在卷组空闲空间过大, 故压缩该卷组空间用于扩容。(这里重复的命令我就不多次显示结果了,懒_(´ཀ`」∠ )_,
☆ 注意本方法会格式化home,请谨慎操作,如果误操作重要文件要是没了,
我这里也没有
1.查看磁盘空间
[root@bd /] df -hl
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 7.7G 0 7.7G 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 7.7G 9.3M 7.7G 1% /run
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/mapper/centos-root 100G 33G 67G 33% /
/dev/sda2 1014M 226M 789M 23% /boot
/dev/sda1 200M 12M 189M 6% /boot/efi
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/mapper/centos-home 1.2T 5.9G 1.1T 1% /home
[root@bd /] cat /etc/fstab | grep centos-home
# 该文件系统是xfs
## 类型
/dev/mapper/centos-home /home xfs defaults 0 0
2. 挂载/home目录
# centos-home非固定名称
[root@bd /] umount /dev/mapper/centos-home
如果显示/dev/mapper/centos-home忙,请kill掉访问home的所有进程,然后切换到其他目录
3. 压缩home所在卷
# 这里将home减少1000G空间
[root@bd /] lvreduce -L -1000G /dev/mapper/centos-home
# 查看是否压缩成功
# Free PE 显示空闲的空间, 若很大说明成功了
[root@bd /] vgdisplay
4. 格式化/home
[root@bd /] mkfs.xfs /dev/mapper/centos-home -f
5. 恢复挂载/home
[root@bd /] mount /home
6. 分配空间
# 分配空闲空间
# 该空间不能大于Free PE(空闲空间)
[root@bd /] lvextend -L +1100G /dev/mapper/centos-root
# 分配所有可用空间
# 可通过-D自定义分配的空间大小
[root@bd /] xfs_growfs /opt
7. 查看分配的空间
[root@bd /] df -hT /opt
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 1.2T 33G 1.1T 1% /
分配完成,启动集群查看当前节点DataNode的磁盘可用容量
到此两种场景的扩容方法就结束了,如果有什么不对的地方的话,小点声