无空盘

  • 添加干净的空磁盘

手动添盘

image-20240813100739543

  1. 编写ldc

    cat <<\EOF > ldc.yaml
    apiVersion: hwameistor.io/v1alpha1
    kind: LocalDiskClaim
    metadata:
    name: hostname-ld-name
    spec:
    nodeName: g-master # 获取节点名字。
    owner: local-storage
    description:
    localDiskNames:
    - localdisk-0cfade4286bfce385512af7244265e0d # kubectl get ld 获取绑定的ld名字
    EOF

    # 获取所有可用磁盘信息
    AVAILABLE_DISKS=$(kubectl get ld -o wide | grep Available | awk '{print $1}')

    # 定义节点名称
    NODE_NAME="g-master"

    # 遍历每一个可用磁盘,生成对应的ldc.yaml文件
    for DISK_NAME in $AVAILABLE_DISKS; do
    # 提取磁盘ID
    DISK_ID=$(echo $DISK_NAME | cut -d'-' -f2)

    # 替换模板并生成对应的ldc.yaml
    cat <<EOF > ldc-$DISK_ID.yaml
    apiVersion: hwameistor.io/v1alpha1
    kind: LocalDiskClaim
    metadata:
    name: ${NODE_NAME}-ld-$DISK_ID
    spec:
    nodeName: $NODE_NAME
    owner: local-storage
    description:
    localDiskNames:
    - $DISK_NAME
    EOF

    echo "Generated ldc-$DISK_ID.yaml for disk: $DISK_NAME"
    done

  2. 应用

应用ldc.yamlkubectl apply -f ldc.yaml

  1. 查询磁盘状态
kubectl get ld
  1. 查询ldc状态
kubectl get ldc
  1. 一般能看到有ldc的话都是没有成功的,基本上都是在pending

  2. 修改对应的localdisk是否处于保留政策

# 获取处于 pending 状态的 LDC 名称
PENDING_LDC=$(kubectl get ldc --no-headers | awk '$3=="Pending" {print $1}')

# 遍历每一个处于 pending 状态的 LDC
for LDC in $PENDING_LDC; do
echo "Checking LDC: $LDC"

# 获取对应的 LD 名称
LD_NAME=$(kubectl get ldc $LDC -o jsonpath='{.spec.description.localDiskNames[0]}')

# 检查 LD 的 reserved 字段状态
RESERVED_STATUS=$(kubectl get ld $LD_NAME -o jsonpath='{.spec.reserved}')

# 如果 reserved 为 true,则修改为 false
if [ "$RESERVED_STATUS" == "true" ]; then
echo "Modifying reserved status of LD: $LD_NAME from true to false"

# 修改 reserved 字段为 false
kubectl patch ld $LD_NAME --type=json -p='[{"op": "replace", "path": "/spec/reserved", "value": false}]'

echo "LD $LD_NAME reserved status set to false."
else
echo "LD $LD_NAME reserved status is already false."
fi
done

在资源紧缺或者无法添盘操作时候,可以进行清盘

# 查看清理盘的设备信息,看不需要哪个目录
mount | grep xxxx
# 查看清理设备的具体信息UUID,LABEL
blkid
# 编辑fstab,解除挂载
vim /etc/fstab
# 重新挂载,进行解除
mount -a
# 检查挂载情况
mount | grep /mnt/data
# 移除所有对应设备的lv和vg,pv
lvremove xxxxx
vgremove xxxx
# 查看分区,解除分区
fdisk xxxx(d,w)
pvremove xxxxx
blkid | grep xxxx
# 擦除设备签名
wipefs -a xxxxx
# 解除挂载
mount -a
# 检查hwameistor资源
kubectl api-resources | grep hwamei
# 查看hwameistor存储节点状态
kubectl get lsn
# 查看sc
kubectl get sc