由于数据的日益增长,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
  1. m查看所有操作
  2. 第一步: n (new一个新分区)
  3. 第二步: p (选择主分区, 默认为3)
  4. 第三步: t (修改分区格式, 设置为8e, 该代码对应的分区格式为Linux LVM)
  5. 第四步: p (显示分区信息)
  6. 第五步: w (保存当前分区信息)
  7. 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的磁盘可用容量


到此两种场景的扩容方法就结束了,如果有什么不对的地方的话,小点声