• 如何清理废弃pv和其对应的文件夹


    博客主页:https://tomcat.blog.csdn.net
    博主昵称:农民工老王
    主要领域:Java、Linux、K8S
    期待大家的关注💖点赞👍收藏⭐留言💬
    家乡


    pv是k8s中重要的重要的存储资源。既然是存储,那就涉及占用磁盘空间。在使用k8s集群的过程中,如果不注意清理废弃pv,那么就很容易积累大量垃圾pv,不仅不方便k8s的管理,还可能导致磁盘空间不足。

    本文以由storage class动态供应的pv为例,演示废弃pv和nfs服务器上对应文件夹的清理。

    如果对pv的回收策略不太熟悉,可以浏览 k8s中pv的回收策略 这篇文章(左侧文章标题含有超链接,可以直接点击跳转)。

    1 确认清理前状态

    确认当前k8s集群的pv数量。
    请添加图片描述

    确认当前nfs服务器的共享路径下的文件数量。
    请添加图片描述
    确认当前nfs服务器的磁盘占用情况。
    在这里插入图片描述

    2 导出废弃pv在nfs服务器上的对应路径

    kubectl get pv \
    	-o custom-columns=STATUS:.status.phase,PATH:.spec.nfs.path \
    	|grep Released  \
    	|awk '{print $2}' \
    	> 156.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这里的156.txt为存储路径信息的文本,因本集群的master节点的内网IP为192.168.130.156,因此命名为156.txt,在自己的清理过程中,您可以任意命名这个文件。
    在这里插入图片描述
    导出的文本:

    /nfs/k8s/aektemp-data-volume-2-geos-object-store-xa21e-1-pvc-00a765e0-f3f8-4ab8-839f-70e3a89e01a7
    /nfs/k8s/gektest-data-volume-geos-relational-store-j7ns8-kerc-0-pvc-0117511b-a121-463b-9115-1877e7bee67a
    /nfs/k8s/gek-data-volume-gs-spatiotemporal-index-store-nn2h0-coordinator-0-pvc-01290353-91b1-4640-a8c3-a7f859bcdb72
    /nfs/k8s/csh05-data-volume-1-geos-object-store-iamgf-0-pvc-021a966b-04f3-4c50-a852-8462e3af95e7
    ……
    /nfs/k8s/aektemp-data-volume-geos-in-memory-store-xvytd-0-pvc-02fa0401-fdba-4368-800d-43d3b957c2bc
    /nfs/k8s/aek-queue-data-volume-arcgis-queue-store-0-pvc-036ffb00-f734-44f7-9a8a-d2028092decc

    3 清理k8s中的废弃pv

    将下面的代码写入计算机,并运行,即可清理pv。

    #!/bin/bash
    whiteList=`kubectl get pv |grep  Released |awk '{print $1}'`
    echo "${whiteList}" | while read line
    do
      kubectl patch pv ${line}  -p '{"spec":{"persistentVolumeReclaimPolicy":"Delete"}}'
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如下图所示,运行脚本后,Released状态的pv都已经被删除,pv的数量从583下降到38。

    在这里插入图片描述请添加图片描述

    4 清理nfs服务器上的废弃文件

    将第2步生成的文本文件和下面的代码写入nfs服务器,并运行${脚本路径} ${文本路径},如 ./cleaner.sh 156.txt,即可以清理废弃文件。

    #!/bin/bash
    whiteList=`cat $1`
    echo "${whiteList}" | while read line
    do
      rm -rf  "$line"
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行结果如下图所示,清理了500多个文件夹,和60多G的磁盘空间。

    请添加图片描述


    如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。

  • 相关阅读:
    Dubbo Gateway - 网关设计
    (续)SSM整合之spring笔记(AOP 基于注解的AOP切点表达式的语法,获取连接点的信息, 重用切入点表达式)(P102)
    Android:rk3588 开发环境准备
    CMake 学习笔记
    鸡卵清白蛋白偶联石杉碱甲(Huperzine-OVA/Ovalbumin)的产品介绍
    工业机器人“智能制造产线6”教学案例
    基于金豺算法的无人机航迹规划-附代码
    Lwip之ARP模块实现
    docker快速搭建部署mqtt
    从01背包说起(上)
  • 原文地址:https://blog.csdn.net/monarch91/article/details/125549161