為ROS建立的資源自動掛載資料盤
為ROS建立的資源自動掛載資料盤
通過ROS可以方便建立,管理資源。例如自動掛載資料盤,如果是通過阿里雲的官方映象,使用ROS建立ECS資源,UserData可以很容易的幫你完成這一步,詳細內容可以參考這篇文章;但是如果你使用自己製作的映象,而且自己製作的映象不支援UserData功能怎麼辦呢,這篇文章幫你解決你的問題。
要完成自有映象自動掛載資料盤,只需要三步:
1.製作映象前,把下面的這個指令碼拷貝到你將要製作映象的ECS機器上,例如:/usr/local/bin/mount_disks下面。
#!/bin/sh
set -e
logs=/root/mount_logs
mount_point_prefix="/data"
part_disk () {
raw_disk=$1
echo "Create partation table for $raw_disk" >> $logs
fdisk -S 56 $raw_disk <<ESXU
n
p
1
w
ESXU
}
format_disk()
{
local disk=$1
mkfs.ext4 $disk
if [ "$?" = "0" ];then
echo "${disk} is formated!" >> $logs
else
echo "Fail to format ${disk}" >> $logs
fi
}
mount_disk()
{
local disk=$1
local mount_point=$2
if [ ! -d $mount_point ]; then
mkdir $mount_point
fi
result=`awk -v disk=$disk `BEGIN {count=0;} {if ($1 == disk) {count=count+1;}} END{print count;}` /etc/fstab`
if [ $result -eq 0 ]; then
echo "$disk $mount_point ext4 defaults 0 0" >> /etc/fstab
fi
mount $disk $mount_point
if [ $? -ne 0 ]; then
echo "Fail to mount $disk on $mount_point" >> $logs
fi
chmod -R 777 $mount_point
echo "$disk is mounted to ${mount_point}!" >> $logs
}
handle_raw_disk()
{
local raw_disks="`fdisk -l 2>&1 | grep "doesn`t contain" | awk -F" " `{print $2}``"
local disk=""
local mount_point=""
echo "handle_raw_disk raw_disks $raw_disks" >> $logs
for raw_disk in $raw_disks
do
part_disk $raw_disk
disk=${raw_disk}1
format_disk $disk
mount_point="${mount_point_prefix}_`echo $raw_disk | awk -F `/` `{print $3}``1"
mount_disk $disk $mount_point
done
}
handle_data_disk()
{
local all_disks=""
local all_mounted_disks=""
local need_mounted_disks=""
local disk=""
local mount_point=""
for disk_name in "xvd" "vd"
do
all_disks="`cat /proc/partitions | grep -E "${disk_name}[a-z].[0-9]*" | awk -F " " `{print $4}`` $all_disks"
all_mounted_disks="`df -h | grep ${disk_name}* | awk -F " " `{print $1}` | awk -F `/` `{print $3}`` $all_mounted_disks"
done
echo "handle_data_disk all_disks $all_disks" >> $logs
echo "handle_data_disk all_mounted_disks $all_mounted_disks" >> $logs
for raw_disk in $all_disks
do
local found=`false`
for disk in $all_mounted_disks
do
if [ "$disk" = "$raw_disk" ]; then
found=`true`
break
fi
done
if [ "$found" = "false" ]; then
full_name="`fdisk -l | grep $raw_disk | awk -F ` ` `{print $1}``"
need_mounted_disks="$need_mounted_disks $full_name"
fi
done
echo "handle_data_disk need_mounted_disks $need_mounted_disks" >> $logs
for disk in $need_mounted_disks
do
mount_point="${mount_point_prefix}_`echo $disk | awk -F `/` `{print $3}``"
mount_disk $disk $mount_point
done
}
if [ ! -f $logs ]; then
touch $logs
fi
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
do_start() {
echo "================SATRT=================" >> $logs
echo "`date` try to mount data disks..." >> $logs
handle_raw_disk
handle_data_disk
echo "=================END==================" >> $logs
return 0
}
case "$1" in
start)
do_start
;;
restart|reload|force-reload)
echo "Error: argument `$1` not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
2.修改/etc/rc.local,加入下面這句:
/usr/lcoal/bin/mount_disks start
這一句意思是在映象啟動的時候執行mount_disks指令碼去掛載資料盤。
3.然後製作自己的映象
4.使用ROS模版建立ECS時,引用自己製作的映象,並給ECS建立資料盤。當ROS建立成功後,資料盤就可以被自動掛載。具體的模版可以參考這裡
相關文章
- Linux掛載資料盤教程,Linux初始化系統盤後重新掛載資料盤方法Linux
- 小鳥雲資料盤如何進行掛載?
- 掛載已有資料的LVM磁碟LVM
- vmware設定共享資料夾,並保持為開機自動掛載
- godadly海外雲伺服器資料盤如何進行掛載?Go伺服器
- 騰訊雲伺服器Centos7資料盤掛載伺服器CentOS
- 阿里雲伺服器ECS掛載資料盤—linux系統阿里伺服器Linux
- 直播app原始碼,資料庫多資料來源自動選擇實現APP原始碼資料庫
- docker基礎:mysql容器建立,時間同步,掛載到資料夾DockerMySql
- Docker入門-資料掛載Docker
- 源自於NEO的KeyValue 資料庫面世啦資料庫
- ROS學習資料大全ROS
- Tello和ROS的一些資料ROS
- docker 資料卷掛載總結Docker
- Docker-nginx資料卷掛載DockerNginx
- Ros 自動避障和尋路相關資料ROS
- Linux系統中資料盤建立軟RaidLinuxAI
- CentOS7如何檢視掛載和解除安裝資料盤分割槽的命令CentOS
- U盤資料夾為空恢復方法,恢復U盤的空白資料夾
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 【掛載新盤】
- 3.1.5.3 在不掛載資料庫的情況下啟動例項資料庫
- 如何在docker實現資料掛載Docker
- NAS如何掛載遠端資料夾
- docker 安裝mysql並掛載資料DockerMySql
- 3.1.5.7 啟動例項、掛載資料庫並啟動完整的媒體恢復資料庫
- 【資料庫資料恢復】Oracle ASM例項無法掛載的資料恢復案例資料庫資料恢復OracleASM
- ros|TF工具獲取IMU資料ROS
- 【北亞資料恢復】IBM DS系列儲存伺服器熱備盤同步資料故障導致卷無法掛載的資料恢復資料恢復IBM伺服器
- Docker搭建Redis5.0並掛載資料DockerRedis
- mongodb怎麼手動建立資料庫MongoDB資料庫
- ListView動態載入資料View
- 多系統盤掛載
- 為什麼要建立資料視覺化視覺化
- 有沒有動態建立資料表的輪子?
- 建立資料庫資料庫
- Netflix:為什麼建立專門的媒體資料庫?資料庫
- 48.Linux-普通U盤以及多分割槽U盤自動掛載Linux
- MyBatis-Plus:建立動態資料來源MyBatis