自動格式化磁盤並掛載


  1、背景介紹

        工作當中經常會遇到需要對新來的服務器進行安裝系統,在安裝系統的時候需要對磁盤進行分區、格式化。往往服務器磁盤都是2塊SSD+12塊SATA硬盤,在對如此之多的磁盤進行分區和格式化,真是個體力活。甚至還有許多服務器的USB插口不夠用,鼠標和鍵盤不能同時用,而且身邊又沒有一個USBhub,其操作難度可想而知。於是就有了以下的故事。最初的想法是在安裝操作系統的時候,只用對系統盤進行分區和格式化,剩余的磁盤待裝完操作系統之后再在后台手動進行分區和格式化,再后來就想着寫一個shell腳本進自動分區和格式化豈不是完美,說到做到,下面就開始嘗試

  2、手動格式化和掛載

  1)、統計磁盤信息

    在后台執行lsblk -a命令既可以查看到所有的磁盤信息,下圖中sda為系統盤,已經存在sda1和sda2兩個分區,其他從sdb至sdi均未分區

    

  2)、磁盤分區

    執行命令parted -s /dev/sdb mklabel gpt mkpart primary  ext4 0 100%對sdb磁盤進行分區,此處分區格式為gpt分區,容量為sdb磁盤的全部(這里只創建了一個分區),后面依次對sdc sdd等所有磁盤進行分區

    

  3)、格式化分區

    執行命令mkfs.ext4 -F /dev/sdb1即對磁盤sdb的第一個分區進行格式化為ext4格式,后面依次對剩下的磁盤進行格式化

  4)、創建磁盤分區掛載目錄

    我這里將所有的磁盤分區都掛載在/home目錄下的sdb、sdc、sdd....,所有我們需要在/home目錄下新建目錄sdb、sdc、sdd....

    cd /home
    mkdir sdb sdc sdd ...

  5)、掛載分區

    首先通過blkid命令查看所有分區的UUID

    

    然后編輯/etc/fstab文件,將sdb1至sdi1所有分區添加進去,如下圖

    

    最后重啟系統即可  

 

  3、編寫shell腳本自動化

    有了以上的實踐,就想着寫一個shell腳本能自動進行磁盤的分區和掛載,以下貼上代碼

    

 1 #!/usr/bin/bash
 2 DISK=`lsblk -a |grep disk|grep -v sda|awk '{print $1}'`
 3 
 4 function partedDisk
 5 {
 6     for disk in $DISK
 7     do
 8         echo -e "\033[33m Starting parted Disk $disk \033[0m"
 9         parted -s /dev/${disk} mklabel gpt
10         parted -s /dev/${disk} mkpart primary ext4  0 100%
11     done
12     echo -e "\033[47;32m All disk parted Done! \033[0m"
13     sleep 1s
14 }
15 
16 function formatPartition
17 {
18     for disk in $DISK
19     do
20         echo -e "\033[33m Starting format partition /dev/${disk}1 \033[0m"
21         mkfs.ext4 -F /dev/${disk}1
22         sleep 0.5s
23     done
24     echo -e "\033[47;32m All partition format Done!!! \033[0m"
25     sleep 1s
26 }
27 
28 function makeDir
29 {
30     echo -e "\033[33m Starting make the mount diretory \033[0m"
31     for disk in $DISK
32     do
33         mkdir /home/${disk}
34     done
35     echo -e "\033[31m The mount diretories are: \033[0m"
36     for disk in $DISK
37     do
38         echo /home/${disk}
39     done
40     echo -e "\033[47;32m Make mount diretories Done!! \033[0m"
41     sleep 1s
42 }
43 
44 function mountDisk
45 {
46     for disk in $DISK
47     do
48         uuid=`blkid /dev/${disk}1|awk '{print $2}'|awk -F "\"" '{print $2}'`
49         cat <<EOF >>uuid.txt
50 UUID=$uuid /home/${disk}               ext4    defaults        1 2
51 EOF
52     done
53     cat uuid.txt>>/etc/fstab
54     echo -e "\033[31m The file /etc/fstab is: \033[0m"
55     cat /etc/fstab
56     echo -e "\033[31m Please comfirm it and reboot your system!!! \033[0m"
57 }
58 
59 formatDisk
60 partedDisk
61 makeDir
62 mountDisk

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM