查看“云服务自动分区挂载数据盘和分区”的源代码
←
云服务自动分区挂载数据盘和分区
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
=Note= 背景信息 数据盘的设备名默认由系统分配,命名规则如下所示: I/O优化实例的数据盘设备名为/dev/vd[b-z],例如/dev/vdb、/dev/vdc和/dev/vdd等。 非I/O优化实例的数据盘设备名为/dev/xvd[b-z],例如/dev/xvdb、/dev/xvdc和/dev/xvdd等。 数据盘支持创建GPT分区和MBR分区,二者区别如下: GPT:能够识别大于2 TiB的分区,创建分区数量无限制。 MBR:只能识别小于或等于2 TiB的分区,最多创建4个分区。 =分区格式化大于2 TiB数据盘= [https://help.aliyun.com/document_detail/34377.html?spm=a2c4g.11186623.2.11.17446296TLpw9t#concept-i15-qpc-ydb 分区格式化大于2 TiB数据盘 aliyun] =分区格式化小于2 TiB数据盘= ==来自qq云脚本== ===function 化=== <pre> #!/bin/bash # 2019 建议尽量用xfs on aws ec2 Tue Jan 14 06:06:39 UTC 2020 function vdbmk() { if grep -q /data /etc/fstab ;then uuid=notneed; echo /data already in fstab; else uuid=`mkfs.xfs /dev/vdb > /dev/null 2>&1 && blkid /dev/vdb | awk '{print $2}'`; fi if [[ $uuid == UUID* ]]; then echo $uuid /data xfs defaults 1 0 >> /etc/fstab; #check the fstab file 2020 if grep /data /etc/fstab | grep UUID ;then mount -a; else echo "fstab files has err exit " exit 1 fi else echo mkfs failed; fi } function xdvmk() { if grep -q /data /etc/fstab ;then uuid=notneed; echo /data already in fstab; else uuid=`mkfs.xfs /dev/xvdb > /dev/null 2>&1 && blkid /dev/xvdb | awk '{print $2}'`; fi if [[ $uuid == UUID* ]]; then echo $uuid /data xfs defaults 1 0 >> /etc/fstab; #check the fstab file 2020 if grep /data /etc/fstab | grep UUID ;then mount -a; else echo "fstab files has err exit " exit 1 fi else echo mkfs failed; fi } function nvmmk() { mkdir -p /data if grep -q /data /etc/fstab ;then uuid=notneed; echo /data already in fstab; else uuid=`mkfs.xfs /dev/nvme1n1 > /dev/null 2>&1 && blkid /dev/nvme1n1 | awk '{print $2}'`; fi if [[ $uuid == UUID* ]]; then echo $uuid /data xfs defaults 1 0 >> /etc/fstab; #check the fstab file 2020 if grep /data /etc/fstab | grep UUID ;then mount -a; else echo "fstab files has err exit " exit 1 fi else echo mkfs failed; fi } mkdir -p /data if fdisk -l | grep nvme1n1; then nvmmk; elif fdisk -l | grep vdb; then vdbmk; elif fdisk -l | grep xvdb; then xdvmk; else echo "not xvdb or nvm"; exit 1 fi rm $0</pre> ===简洁版本 === <pre> Wed Dec 08 2021 #想简洁就这个 qcloud 专用 #!/bin/bash #建议尽量用ext4 only aliyun 一般是ext4 mkdir -p /data if grep -q /data /etc/fstab ;then uuid=notneed; echo /data already in fstab; else uuid=`mkfs.ext4 /dev/vdb > /dev/null 2>&1 && blkid /dev/vdb | awk '{print $2}'`; fi if [[ $uuid == UUID* ]]; then echo $uuid /data ext4 noatime,acl,user_xattr 1 0 >> /etc/fstab; mount -a; else echo mkfs failed; fi rm $0 过程 java2:~# bash -x 1 + mkdir -p /data + grep -q /data /etc/fstab ++ mkfs.ext4 /dev/vdb ++ blkid /dev/vdb ++ awk '{print $2}' + uuid='UUID="717368e4-f101-46b1-91ea-ef1812342501"' + [[ UUID="717368e4-f101-46b1-91ea-ef1812342501" == UUID* ]] + echo 'UUID="717368e4-f101-46b1-91ea-ef1812342501"' /data ext4 noatime,acl,user_xattr 1 0 + mount -a + rm 1 </pre> ===以前的老的版本=== <pre> #!/bin/bash # 2019 建议尽量用xfs on aws ec2 Tue Jan 14 06:06:39 UTC 2020 mkdir -p /data if grep -q /data /etc/fstab ;then uuid=notneed; echo /data already in fstab; if fdisk -l | grep nvme1n1; then uuid=`mkfs.xfs /dev/nvme1n1 > /dev/null 2>&1 && blkid /dev/nvme1n1 | awk '{print $2}'`; elif fdisk -l | grep xvdb; then uuid=`mkfs.xfs /dev/xvdb > /dev/null 2>&1 && blkid /dev/xvdb | awk '{print $2}'`; else echo "not xvdb or nvm"; exit 1 fi if [[ $uuid == UUID* ]]; then echo $uuid /data xfs defaults 1 0 >> /etc/fstab; #check the fstab file 2020 if grep /data /etc/fstab | grep UUID ;then mount -a; else echo "fstab files has err exit " exit 1 fi else echo mkfs failed; fi #!/bin/bash # 2019 建议尽量用xfs on aws ec2 Sun Sep 29 16:09:40 CST 2019 如果只用了xvdb 数据盘 mkdir -p /data if grep -q /data /etc/fstab ;then uuid=notneed; echo /data already in fstab; else uuid=`mkfs.xfs /dev/xvdb > /dev/null 2>&1 && blkid /dev/xvdb | awk '{print $2}'`; fi if [[ $uuid == UUID* ]]; then echo $uuid /data xfs defaults 1 0 >> /etc/fstab; #check the fstab file 2020 if grep /data /etc/fstab | grep UUID ;then mount -a; else echo "fstab files has err exit " exit 1 fi else echo mkfs failed; fi rm $0 #note 原版的 fstab xfs UUID="f78f0ed2-2d18-49a1-b5b9-33a39f77315b" /data2 xfs defaults 0 0 </pre> [root@VM_135_85_centos ~]# mkfs.ext3 /dev/vdb > /dev/null 2>&1 && blkid /dev/vdb /dev/vdb: UUID="aee97e63-0081-4088-85c4-c6ae9a7ab253" SEC_TYPE="ext2" TYPE="ext3" == 阿里云脚本== <pre> #/bin/bash ######################################### #Function: auto fdisk #Usage: bash auto_fdisk.sh #Author: Customer service department #Company: Alibaba Cloud Computing #Version: 4.0 ######################################### count=0 tmp1=/tmp/.tmp1 tmp2=/tmp/.tmp2 >$tmp1 >$tmp2 fstab_file=/etc/fstab #check lock file ,one time only let the script run one time LOCKfile=/tmp/.$(basename $0) if [ -f "$LOCKfile" ] then echo -e "\033[1;40;31mThe script is already exist,please next time to run this script.\033[0m" exit else echo -e "\033[40;32mStep 1.No lock file,begin to create lock file and continue.\033[40;37m" touch $LOCKfile fi #check user if [ $(id -u) != "0" ] then echo -e "\033[1;40;31mError: You must be root to run this script, please use root to install this script.\033[0m" rm -rf $LOCKfile exit 1 fi #check disk partition check_disk() { >$LOCKfile device_list=$(fdisk -l|grep "Disk"|grep "/dev"|awk '{print $2}'|awk -F: '{print $1}'|grep "vd") for i in `echo $device_list` do device_count=$(fdisk -l $i|grep "$i"|awk '{print $2}'|awk -F: '{print $1}'|wc -l) echo if [ $device_count -lt 2 ] then now_mount=$(df -h) if echo $now_mount|grep -w "$i" >/dev/null 2>&1 then echo -e "\033[40;32mThe $i disk is mounted.\033[40;37m" else echo $i >>$LOCKfile echo "You have a free disk,Now will fdisk it and mount it." fi fi done disk_list=$(cat $LOCKfile) if [ "X$disk_list" == "X" ] then echo -e "\033[1;40;31mNo free disk need to be fdisk.Exit script.\033[0m" rm -rf $LOCKfile exit 0 else echo -e "\033[40;32mThis system have free disk :\033[40;37m" for i in `echo $disk_list` do echo "$i" count=$((count+1)) done fi } #check os check_os() { os_release=$(grep "Aliyun Linux release" /etc/issue 2>/dev/null) os_release_2=$(grep "Aliyun Linux release" /etc/aliyun-release 2>/dev/null) if [ "$os_release" ] && [ "$os_release_2" ] then if echo "$os_release"|grep "release 5" >/dev/null 2>&1 then os_release=aliyun5 modify_env fi fi } #install ext4 modify_env() { modprobe ext4 yum install e4fsprogs -y } #fdisk ,formating and create the file system fdisk_fun() { fdisk -S 56 $1 << EOF n p 1 wq EOF sleep 5 mkfs.ext4 ${1}1 } #make directory make_dir() { echo -e "\033[40;32mStep 4.Begin to make directory\033[40;37m" now_dir_count=$(ls /|grep "alidata*"|awk -F "data" '{print $2}'|sort -n|tail -1) if [ "X$now_dir_count" == "X" ] then for j in `seq $count` do echo "/alidata$j" >>$tmp1 mkdir /alidata$j done else for j in `seq $count` do k=$((now_dir_count+j)) echo "/alidata$k" >>$tmp1 mkdir /alidata$k done fi } #config /etc/fstab and mount device main() { for i in `echo $disk_list` do echo -e "\033[40;32mStep 3.Begin to fdisk free disk.\033[40;37m" fdisk_fun $i echo "${i}1" >>$tmp2 done make_dir >$LOCKfile paste $tmp2 $tmp1 >$LOCKfile echo -e "\033[40;32mStep 5.Begin to write configuration to /etc/fstab and mount device.\033[40;37m" while read a b do if grep -v ^# $fstab_file|grep ${a} >/dev/null then sed -i "s=${a}*=#&=" $fstab_file fi echo "${a} $b ext4 defaults 0 0" >>$fstab_file done <$LOCKfile mount -a } #=========start script=========== echo -e "\033[40;32mStep 2.Begin to check free disk.\033[40;37m" check_os check_disk main df -h rm -rf $LOCKfile $tmp1 $tmp2 </pre> ==参考 == https://www.qcloud.com/document/product/362/6735 [https://help.aliyun.com/document_detail/25426.html?spm=5176.7738005.2.2.knvWII 如果是阿里 格式化和挂载数据盘] [https://blog.csdn.net/yangzhengquan19/article/details/83788277 linux fdisk 分区、格式化、挂载] [[category:ops]]
返回至
云服务自动分区挂载数据盘和分区
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
我的导航
关于我
shell
python
ops
linuxchina.net
blog.linuxchina
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息