天天看點

parted 磁盤分區-挂載-删除-shell腳本進行磁盤分區

# parted腳本自動挂載分區磁盤
 # 1.parted 核心指令  parted gpt 分區支援2T磁盤空間
partedManual(){
yum install -y parted                                   # 安裝 parted 分區工具包
parted -s /dev/sdb mklabel gpt                  # parted -s 選擇磁盤 /dev/sdb    大于 2T 空間 gpt 标簽 
                                                                        # 格式化磁盤;轉換為 msdos 格式,支援 lvm 擴容;  gpt動态分區不支援lvm
                                                                        # label  [ˈlebəl] 标簽
parted -s /dev/sdb mkpart primary 1 100%        # 建立主分區,全部空間
                                                                        # part [pɑrt] 分開,分區
                                                                        # primary [ˈpraɪˌmɛri] 主分區
# parted -s a mkpart entended 3G 5G                     # 第一個擴充分區:從3G 到5G
# parted -s b mkpart logic 5G 100%                              # 第二個擴充分區:從5G到100%
                                                                                        # logic [ˈlɒdʒɪk] 邏輯,分區
parted -s /dev/sdb print                                        # 選擇磁盤,并列印資訊;可以看到 Number [ˈnʌmbər] 編号 1
mkfs -t ext4 /dev/sdb1                                  # 格式化分區為 ext4  ;也可以格式化為ext3 等其他分區
mkdir /www                                                      # 建立挂載分區 /www
mount /dev/sdb1 /www                                    # 挂載分區到到檔案夾 /www
echo "
/dev/sdb1                               /www                    ext4    defaults        0 0
" >> /etc/fatab                                         # 寫入開機啟動配置檔案
                                                                        #  default [diˈfɔ:lts] 預設     
                                                                        # default 少一個s 為隻讀,磁盤故障
                                                                        # 檢視磁盤格式:parted -l  顯示結果中 File 列是EXt4 或者其他
mount -a                                                       # 校驗配置是否正确
df -h                                                   # 重新開機伺服器并檢視挂載的分區
}
# 2. parted 腳本自動分區
#!/bin/bash
azparted=$(yum list installed | grep parted)
                                                # 定義一個名稱為azparted的變量,值為:
                                                # 檢視已安裝的包,grep 比對parted 名稱
cdazparted=$(echo ${#azparted})
                                                # 定義一個新變量:列印$azparted 變量的字元串長度  echo $(#azparted)
 
if [ $cdazparted -lt 1 ]
                                                # 判斷變量字元串長度小于1
then                                            # 然後
        yum install -y parted   
        echo "您還沒有安裝parted,正在為您安裝,請稍後:"
else                                            # 其他情況
        echo "parted 已經安裝,無需操作,已經安裝的資訊為:
        $azparted"
fi                                              # if的結束标記 fi
#----------------------------------- 檢測安裝工具向上包結束  -------------------------------
echo "未分區的磁盤有: "
parted -l | grep -w "unrecognised disk label"
echo "
read 接收視窗指令界面輸入的字元串;-p 加文字說明;需要分區的磁盤變量 a
請輸入你要進行分區的磁盤; 磁盤格式為:/dev/dev
如果輸入錯誤字元或者閃跳,請Ctrl +c  退出重新輸入"
read -p "請輸入要分區的磁盤:"  a               ;                       
echo "磁盤挂載目錄格式為:   /www     将會清空該目錄下的檔案,重複執行腳本,僅僅更改挂載目錄,不會更改硬碟資料重新開機生效。修改的是/etc/fstab"
read -p "請輸入您要挂載到那個目錄:"  m         ;                       
#----------------------------------- 使用者輸入資訊向上結束  -------------------------------
gsh=$(parted -s $a print | grep primary || logical )    
        
                                                        # 定義一個變量 gsh  ; sed s/[[:space:]]//g 删除空格
                                                                # parted -s $a print     列印要分區的磁盤資訊$a為 /dev/xxx
                                                        # 列印資訊後去比對磁盤分區的類型:
                                                        # primary [ˈprʌɪm(ə)ri] 主分區,類型;logical  [ˈlɒdʒɪk(ə)l] 邏輯分區
                                                                # 如果主分區和邏輯分區都不存在,那麼就是空盤
###### 重點:
# parted -s $a print                            # 選擇磁盤,并列印:列印選擇的磁盤資訊
#  awk -F " " '$5=="primary" {print zi++ $6} '
                                                        # -F " " 分隔符為空格,  後面有單引号引起來的為坐标:先行後列
                                                        # $5 第5列的内容包含有 primary 字元  就被選中
                                                        # print 列印第6列,  有多個内容用zi++ 方法來換行列印所有
# parted -s /dev/sda print | awk -F " " '$5=="primary" {print c++ $6} '
if [ ${#gsh}  -eq 0 ]                                   # ${#gsh} 變量長度, -eq 小等于 0
then
        echo "磁盤 $a 為空盤,沒有找到主分區和邏輯分區,可以進行進行格式化并分區操作,請等待。。。  "                          
else 
        echo "  # parted -s /dev/xxx   rm 1    
                磁盤名稱: $a
 
                磁盤存在資料,是否繼續格式化操作
"
fi
echo "請确認腳本的繼續執行
                                y繼續 | 任意字元退出
"
read gshy
case $gshy in
y) echo "您确認了繼續格式化操作,腳本将繼續執行"
;;
*) echo "您否定了格式化操作,不會影響磁盤資料。即将退出腳本。"
exit                                                                    # 直接退出腳本
;;
esac
        parted -s $a mklabel gpt                                # 格式化為gpt 動态分區,gpt動态分區支援2T
                                                                        # msdos 其他類型
        parted -s $a mkpart primary 1 100%      # 分區 全部
        #parted -s $a mkpart entended 3G 5G     # 第一個擴充分區:從3G 到5G
        #parted -s $a mkpart logic 5G 100%      # 第二個擴充分區:從5G到100%
                                                                        # logic [ˈlɒdʒɪk] 邏輯,分區
#-------------------------------------挂載------------------------------------
b=$(echo $a"1")
mkfs -t ext4 $b                                 # 格式化分區
rm -rf $m
mkdir $m
mount  $b $m                                            # 挂載分區到/www 目錄下
                                                                # 如果需要挂載到指定目錄請建立檔案夾後,再将此處的/mnt修改
bd=$(echo $b | awk -F"/" 'NR==1{print $3}')
                                                        # 列印變量,awk 字段處理,-F 指定分隔符為  / 
                                                        # 坐标:第一行,第3列
sed -i "/"eiscparted"/d" /etc/fstab             #先清除啟動挂載
sed -i "/^$/d" /etc/fstab                # 清除空行
echo "
$b           $m                            ext4      defaults        0 0                #eiscparted
">>/etc/fstab                                   # 開機自動挂載,字元單獨一行,才會保留格式
echo "再次檢視挂載的磁盤,如果之前有挂載過此硬碟,重新開機生效挂載到新目錄 修改了 /etc/fstab
開發商:小綠葉技術部落格 www.eisc.cn
"
df -h
# umount /dev/sdb*                      # 取消挂載磁盤 /dev/sdb 的所有分區
# -------------------------------------删除---------------------------------
# parted -s /dev/sdb rm 5                       # rm删除sdb磁盤編号5的分區 
# parted -s /dev/sdb print                      # 檢視分區
# parted -s /dev/sdb mklabel msdos      # 清除分區表,友善其他工具進行分區
# 使用MBR分區表的硬碟最多隻能劃分4個主分區磁盤,并且MBR最大僅支援2TB的硬碟。
# GPT是一種新型磁盤模式,與我們常用的MBR磁盤相比更穩定,自糾錯能力更強,一塊磁盤上主分區數量不受(4個的)限制,支援大于2T的總容量及大于2T的分區(幾乎沒有上限,最大支援到128個分區,分區大小支援到256TB)。
# 腳本執行:
# rm -rf parted.sh ; yum install -y wget ; wget eisc.cn/file/shell/parted.sh ; chmod +x parted.sh ; ./parted.sh