馬哥門徒-N26-邢巖
今天看了一本書《運維前線:一線運維專家的運維方法、技巧與實踐》,有一張運維全平臺規劃體系如下:
看完這張圖,瞬間覺得自動化運維真的是很龐大精深,我只是在運維這片海洋的岸邊,剛剛邁入一只腳步而已,究竟什么是山,什么是水,還不得而知。就讓我化身一條小魚,在這片汪洋大海中遨游吧!
繼續我今天的學習,第一題是創建一個10G分區,并格式為ext4文件系統。
(1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;
(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;
~]# fdisk /dev/sdb
~]# mkfs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
~]# mount -o acl,noexec,noatime /dev/sdb1 /data/mydata
第二題,創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;
~]# fdisk /dev/sdb
~]# partx -a /dev/sdb
~]# mkswap /dev/sdb2
~]# swapon /dev/sdb2
第三題,寫一個腳本:
(1)、獲取并列出當前系統上的所有磁盤設備;
(2)、顯示每個磁盤設備上每個分區相關的空間使用信息;
#!/bin/bash
# Author:jeque
# Description:disk partition
ls /dev/[s,h]d[a-z]
fdisk -l ls /dev/[s,h]d[a-z]
第四題,總結RAID的各個級別及其組合方式和性能的不同。
RAID:就是將多個硬盤組織成一個來使用(Redundant Arrays of Independent Disks),其主要的作用是提高IO能力和提高耐用性,耐用性可以通過磁盤冗余來實現。
多塊磁盤組織在一起的工作方式有所不同,主要分為以下級別:
類別 | 硬盤及容量 | 性能及數量 |
RAID-0 | 用于平行存儲,即條帶。不適合存儲關鍵數據,一般存儲非關鍵性數據,如緩存數據;數據不重要,業務一樣重要,也不一定可以把緩存系統放在RAID-0 |
讀、寫性能提升; 可用空間:N*min(S1,S2,…) 無容錯能力 最少磁盤數:2,2+ |
RAID-1 | 鏡像存儲,每塊硬盤存儲全部數據 |
讀性能提升、寫性能略有下降; 可用空間:1*min(S1,S2,…) 有冗余能力 最少磁盤數:2, 2+ |
RAID-4 | 將三塊或者以上的硬盤組織成一個硬盤,最后一塊磁盤存儲校驗碼(異或運算),前面的存儲數據有一個盤集中檢驗,有可能會導致性能瓶頸 | |
RAID-5 | 一般是左對稱 |
讀寫性能提升 可用空間:(N-1)*min(S1,S2,…) 有容錯能力:1塊磁盤 最少磁盤數:3,3+ |
RAID-6 | 兩塊磁盤作為校驗盤,最少需要4塊 |
讀、寫性能提升 可用空間:(N-2)*min(S1,S2,…) 有容錯能力:2塊磁盤 最少磁盤數:4,4+ |
混合類型 |
RAID-10:兩兩一組,做成RAID-1,最后組織成RAID-0 比較靠譜的機制 讀寫性能提升 可用空間:N*min(S1,S2,…)/2 有容錯能力:每組鏡像最多只能壞一塊; 最少磁盤數:4,4+ RAID-01:三個磁盤組成RAID-0,最后合成RAID-1 不太靠譜 RAID-50:更不可靠 RAID7:價格非常貴 JBOD:Just a Bunch Of Disks |
將多塊磁盤的空間合并成一個大的連續空間使用;可用空間:sum(S1,S2,…) |
常用級別:RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD
幾種RAID示意圖:
第五題,創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k;
~]# mdadm -C /dev/md1 -n 2 -x 1 -c 128 -l 1 /dev/sdb2 /dev/sdb3 /dev/sdb4
~]# mdadm -D /dev/md1
第六題,創建一個大小為4G的RAID5設備,chunk大小為256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能;
~]# mdadm -C /dev/md5 -n 3 -c 256 -l 5 /dev/sdb1 /dev/sdb2 /dev/sdb3
~]# mdadm -D /dev/md5
~]# mkfs -t ext4 /dev/md5
~]# mount -o auto,acl,noatime /dev/md5 /backup
第七題,寫一個腳本:
(1) 接受一個以上文件路徑作為參數;
(2) 顯示每個文件擁有的行數;
(3) 總結說明本次共為幾個文件統計了其行數;
#!/bin/bash
# Author: jeque
# Description: file number
declare -i sum=$#
if [ $# -eq 0 ];then
echo “please input the file path”
exit 1
fi
for i in $*;do
echo “$i lines :$(grep “.*” $i |wc -l)”
done
echo “there are $sum files total.”
第八題,寫一個腳本
(1) 傳遞兩個以上字符串當作用戶名;
(2) 創建這些用戶;且密碼同用戶名;
(3) 總結說明共創建了幾個用戶;
#!/bin/bash
# Author: jeque
# Description:創建用戶名
declare -i sum=$#
if [ $# -lt 2 ];then
echo “please input at least two users:”
exit 1
fi
for i in $*;do
useradd $i
password=$i
echo $password | passwd –stdin $i
done
echo “Created users are $sum total.”
第九題,寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和;
#!/bin/bash
# Author: jeque
# Description:創建用戶名
declare -i sumuserid=0
for (( i=1;i<=20;i++));do
username=visitor$i
useradd $username
uid=`id -u $username`
let sumuserid+=$uid
done
echo “The users id sum:$sumuserid”


最后,讓我用一句話結束今天的學習,學號shell編程的核心:多練—多思考—再練—再思考,堅持如此循環即可!
原創文章,作者:jeque,如若轉載,請注明出處:http://www.www58058.com/70501
圖文并茂,總結的非常到位,繼續加油。