Bash 如何使用shell在所需装入点上装入不同大小的Nvm EBS卷

Bash 如何使用shell在所需装入点上装入不同大小的Nvm EBS卷,bash,shell,amazon-ec2,ebs,Bash,Shell,Amazon Ec2,Ebs,使用ansible将卷添加到ec2实例后。如何使用将传递给用户数据的shell脚本按大小将这些设备装载到所需的装载点 [ec2-user@xxx ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:4 0 200G 0 disk ├─nvme0n1p1 259:5 0 1M 0 part └─nvme0n1p2 259:6 0 200G 0 part / nvme1n

使用ansible将卷添加到ec2实例后。如何使用将传递给用户数据的shell脚本按大小将这些设备装载到所需的装载点

[ec2-user@xxx ~]$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
nvme0n1     259:4    0  200G  0 disk
├─nvme0n1p1 259:5    0    1M  0 part
└─nvme0n1p2 259:6    0  200G  0 part /
nvme1n1     259:0    0   70G  0 disk
nvme2n1     259:1    0   70G  0 disk
nvme3n1     259:3    0   70G  0 disk
nvme4n1     259:2    0   20G  0 disk

这是我最初写的,但我意识到nvm的名称和大小并不总是一样的

#!/bin/bash
VOLUMES=(nvme1n1 nvme2n1 nvme3n1 nvme4n1)
PATHS=(/abc/sfw /abc/hadoop /abc/log /kafka/data/sda)
for index in ${!VOLUMES[*]}; do
sudo mkfs -t xfs /dev/"${VOLUMES[$index]}"
sudo mkdir -p "${PATHS[$index]}"
sudo mount /dev/"${VOLUMES[$index]}" "${PATHS[$index]}"
echo "Mounted ${VOLUMES[$index]} in ${PATHS[$index]}"
done

我使用ansible创建这些,希望20G安装在/edw/logs上,但20G随机安装在任何设备上。(nvme1n1或nvme2n1或nvme3n1或nvme4n1)


如何编写/修改我的脚本?

如果有多台设备<70GB怎么办?修改它以更恰当地反映我的想法我不太确定您的目标是什么,我在代码中没有看到任何与“同时验证两个条件”相关的内容。也许你需要(至少)
size1=$(du-g/dev/“${VOLUMES[$index]}”);size2=$(du-g“${path[$index]}”);如果(($size1>$size2));然后回声“做点什么!”;fi
?或者至少这会给你一些想法。
(…)
中的
$
并不是严格需要的,但是如果以后维护代码时不使用它们,可能会增加混乱。祝你好运@Shelleter我对问题进行了编辑以使其更清楚。我会尝试你的建议,在循环之前我会有一个“步骤”,并强制20GB装载到
/edw/logs
。从循环列表中删除该项,然后运行循环并允许随机分配其他项。祝你好运。如果有多台设备小于70GB怎么办?修改它以更恰当地反映我所写的内容我不太确定你的目标是什么,我在你的代码中没有看到任何与“同时验证两个条件”相关的内容。也许你需要(至少)
size1=$(du-g/dev/“${VOLUMES[$index]}”);size2=$(du-g“${path[$index]}”);如果(($size1>$size2));然后回声“做点什么!”;fi
?或者至少这会给你一些想法。
(…)
中的
$
并不是严格需要的,但是如果以后维护代码时不使用它们,可能会增加混乱。祝你好运@Shelleter我对问题进行了编辑以使其更清楚。我会尝试你的建议,在循环之前我会有一个“步骤”,并强制20GB装载到
/edw/logs
。从循环列表中删除该项,然后运行循环并允许随机分配其他项。祝你好运