首页 > 解决方案 > 如何使用 shell 在所需的挂载点上挂载不同大小的 Nvm EBS 卷

问题描述

使用 ansible 将卷添加到 ec2 实例后。如何使用我将传递给 user_data 的 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 的 NAME 和 SIZE 并不总是相同的

#!/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)

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

标签: bashshellamazon-ec2amazon-ebs

解决方案


推荐阅读