最近币圈真可谓是一片火热。相信很多人最近都听过狗狗币(Doge),奇亚币(Chia)。而挖这些币需要大量的存储。因此硬盘的价格也被带出了新高度。作为一个正经的运维工程师咱最关注的还是技术问题。所以下面请听题:
假如你的老板对你说:“小王,最近奇亚币这么火咱们也搞一哈”。于是,新买了几十台服务器每台服务器挂24块10T的硬盘。问题来了,这几百块硬盘一块一块的分区、格式化并挂载一个人的话要一天吧。可能一天也搞不完还会累得要死。第二天还会被老板问:“小王,开始挖矿了吗,你这也太慢了”。是的太慢了。不要说老板不能忍,作为一个老运维自己也是不能忍的。
不要慌,作为一个老运维怎么可能这么没效率呢。下面的脚本帮你快速格式化上百块硬盘。
# cat new_disk.sh #!/bin/bash # 硬盘分区的函数 function partition_disk() { fdisk /dev/sd${1} <<EOF g n wq EOF } # 硬盘分区并格式化分区 (fdisk -l | grep /dev/sda1) || (partition_disk 'a' && mkfs.xfs /dev/sda1) (fdisk -l | grep /dev/sdb1) || (partition_disk 'b' && mkfs.xfs /dev/sdb1) (fdisk -l | grep /dev/sdc1) || (partition_disk 'c' && mkfs.xfs /dev/sdc1) (fdisk -l | grep /dev/sdd1) || (partition_disk 'd' && mkfs.xfs /dev/sdd1) (fdisk -l | grep /dev/sde1) || (partition_disk 'e' && mkfs.xfs /dev/sde1) (fdisk -l | grep /dev/sdf1) || (partition_disk 'f' && mkfs.xfs /dev/sdf1) (fdisk -l | grep /dev/sdg1) || (partition_disk 'g' && mkfs.xfs /dev/sdg1) (fdisk -l | grep /dev/sdh1) || (partition_disk 'h' && mkfs.xfs /dev/sdh1) (fdisk -l | grep /dev/sdi1) || (partition_disk 'i' && mkfs.xfs /dev/sdi1) (fdisk -l | grep /dev/sdj1) || (partition_disk 'j' && mkfs.xfs /dev/sdj1) (fdisk -l | grep /dev/sdk1) || (partition_disk 'k' && mkfs.xfs /dev/sdk1) (fdisk -l | grep /dev/sdl1) || (partition_disk 'l' && mkfs.xfs /dev/sdl1) (fdisk -l | grep /dev/sdm1) || (partition_disk 'm' && mkfs.xfs /dev/sdm1) (fdisk -l | grep /dev/sdn1) || (partition_disk 'n' && mkfs.xfs /dev/sdn1) (fdisk -l | grep /dev/sdo1) || (partition_disk 'o' && mkfs.xfs /dev/sdo1) (fdisk -l | grep /dev/sdp1) || (partition_disk 'p' && mkfs.xfs /dev/sdp1) (fdisk -l | grep /dev/sdq1) || (partition_disk 'q' && mkfs.xfs /dev/sdq1) (fdisk -l | grep /dev/sdr1) || (partition_disk 'r' && mkfs.xfs /dev/sdr1) (fdisk -l | grep /dev/sds1) || (partition_disk 's' && mkfs.xfs /dev/sds1) (fdisk -l | grep /dev/sdt1) || (partition_disk 't' && mkfs.xfs /dev/sdt1) (fdisk -l | grep /dev/sdu1) || (partition_disk 'u' && mkfs.xfs /dev/sdu1) (fdisk -l | grep /dev/sdv1) || (partition_disk 'v' && mkfs.xfs /dev/sdv1) (fdisk -l | grep /dev/sdw1) || (partition_disk 'w' && mkfs.xfs /dev/sdw1) (fdisk -l | grep /dev/sdx1) || (partition_disk 'x' && mkfs.xfs /dev/sdx1) # 创建挂载点 for i in `seq 1 24`; do mkdir -p /data$i done # 挂载 (df -h | grep /data1) || (mount /dev/sda1 /data1) (df -h | grep /data2) || (mount /dev/sdb1 /data2) (df -h | grep /data3) || (mount /dev/sdc1 /data3) (df -h | grep /data4) || (mount /dev/sdd1 /data4) (df -h | grep /data5) || (mount /dev/sde1 /data5) (df -h | grep /data6) || (mount /dev/sdf1 /data6) (df -h | grep /data7) || (mount /dev/sdg1 /data7) (df -h | grep /data8) || (mount /dev/sdh1 /data8) (df -h | grep /data9) || (mount /dev/sdi1 /data9) (df -h | grep /data10) || (mount /dev/sdj1 /data10) (df -h | grep /data11) || (mount /dev/sdk1 /data11) (df -h | grep /data12) || (mount /dev/sdl1 /data12) (df -h | grep /data13) || (mount /dev/sdm1 /data13) (df -h | grep /data14) || (mount /dev/sdn1 /data14) (df -h | grep /data15) || (mount /dev/sdo1 /data15) (df -h | grep /data16) || (mount /dev/sdp1 /data16) (df -h | grep /data17) || (mount /dev/sdq1 /data17) (df -h | grep /data18) || (mount /dev/sdr1 /data18) (df -h | grep /data19) || (mount /dev/sds1 /data19) (df -h | grep /data20) || (mount /dev/sdt1 /data20) (df -h | grep /data21) || (mount /dev/sdu1 /data21) (df -h | grep /data22) || (mount /dev/sdv1 /data22) (df -h | grep /data23) || (mount /dev/sdw1 /data23) (df -h | grep /data24) || (mount /dev/sdx1 /data24) # 加入开机自动挂载 (grep /data1 /etc/fstab) || (echo "/dev/sda1 /data1 xfs defaults 0 0" >> /etc/fstab) (grep /data2 /etc/fstab) || (echo "/dev/sdb1 /data2 xfs defaults 0 0" >> /etc/fstab) (grep /data3 /etc/fstab) || (echo "/dev/sdc1 /data3 xfs defaults 0 0" >> /etc/fstab) (grep /data4 /etc/fstab) || (echo "/dev/sdd1 /data4 xfs defaults 0 0" >> /etc/fstab) (grep /data5 /etc/fstab) || (echo "/dev/sde1 /data5 xfs defaults 0 0" >> /etc/fstab) (grep /data6 /etc/fstab) || (echo "/dev/sdf1 /data6 xfs defaults 0 0" >> /etc/fstab) (grep /data7 /etc/fstab) || (echo "/dev/sdg1 /data7 xfs defaults 0 0" >> /etc/fstab) (grep /data8 /etc/fstab) || (echo "/dev/sdh1 /data8 xfs defaults 0 0" >> /etc/fstab) (grep /data9 /etc/fstab) || (echo "/dev/sdi1 /data9 xfs defaults 0 0" >> /etc/fstab) (grep /data10 /etc/fstab) || (echo "/dev/sdj1 /data10 xfs defaults 0 0" >> /etc/fstab) (grep /data11 /etc/fstab) || (echo "/dev/sdk1 /data11 xfs defaults 0 0" >> /etc/fstab) (grep /data12 /etc/fstab) || (echo "/dev/sdl1 /data12 xfs defaults 0 0" >> /etc/fstab) (grep /data13 /etc/fstab) || (echo "/dev/sdm1 /data13 xfs defaults 0 0" >> /etc/fstab) (grep /data14 /etc/fstab) || (echo "/dev/sdn1 /data14 xfs defaults 0 0" >> /etc/fstab) (grep /data15 /etc/fstab) || (echo "/dev/sdo1 /data15 xfs defaults 0 0" >> /etc/fstab) (grep /data16 /etc/fstab) || (echo "/dev/sdp1 /data16 xfs defaults 0 0" >> /etc/fstab) (grep /data17 /etc/fstab) || (echo "/dev/sdq1 /data17 xfs defaults 0 0" >> /etc/fstab) (grep /data19 /etc/fstab) || (echo "/dev/sdr1 /data18 xfs defaults 0 0" >> /etc/fstab) (grep /data19 /etc/fstab) || (echo "/dev/sds1 /data19 xfs defaults 0 0" >> /etc/fstab) (grep /data20 /etc/fstab) || (echo "/dev/sdt1 /data20 xfs defaults 0 0" >> /etc/fstab) (grep /data21 /etc/fstab) || (echo "/dev/sdu1 /data21 xfs defaults 0 0" >> /etc/fstab) (grep /data22 /etc/fstab) || (echo "/dev/sdv1 /data22 xfs defaults 0 0" >> /etc/fstab) (grep /data23 /etc/fstab) || (echo "/dev/sdw1 /data23 xfs defaults 0 0" >> /etc/fstab) (grep /data24 /etc/fstab) || (echo "/dev/sdx1 /data24 xfs defaults 0 0" >> /etc/fstab) echo -e "\n===================" df -h echo -e "===================\n"
使用ansible把上面的脚本分发到目标服务器上(ansible的使用这里不细说)
ansible -i hosts all -m copy -a "src=new_disk.sh dest=/root/new_disk.sh mode=0755"
使用ansible批量执行脚本
ansible -i hosts all -m shell -a "bash /root/new_disk.sh"
大概5~10分钟就会执行好了(当然也要看服务器的数量多少,总之比一块一块的搞快多了吧)。