天天看點

磁盤分區

我們都知道要對磁盤進行分區,但是為什麼要進行分區呢?當然有很多好處啦!接下來我們就說道說道:1.優化I/O性能 

      2.實作磁盤空間配額限制

      3. 提高修複速度

      4. 隔離系統和程式

      5. 安裝多個OS

      6. 采用不同檔案系統

有兩種分區方式:MBR和GPT  

MBR:使用32位位表示扇區數 , 分區不超過2T, 4 個主分區;3 主分區+1 擴充(N 個邏輯分區)

GPT:支援128個分區,使用64 位 .使用128 位UUID 表示磁盤和分區。 

fdisk和parted都可以對磁盤進行分區,但是兩者又有不同之處。

fdisk 建立MBR分區(disk類似于fdisk,但建立GPT分區)

      p 分區清單

      t 更改分區類型

      n 建立新分區

      d  删除分區

      w 儲存并退出

      q 不儲存并退出

fdisk /dev/sdX  進行分區(fdisk屬于标準輸入)

<a href="https://s1.51cto.com/wyfs02/M01/9E/DC/wKioL1mYC4nBRr9qAAB7divrpkQ049.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M00/9E/DD/wKioL1mYHBGCgIXKAADjDaqBbYg826.png" target="_blank"></a>

fdisk -l  檢視分區

如果隻是這樣用lsblk檢視裝置時,分區表中并沒有建立的分區,

<a href="https://s3.51cto.com/wyfs02/M01/00/2E/wKiom1mYKgLiAUKzAADTeVKmn2A658.png" target="_blank"></a>

是以要通知核心重新讀取硬碟分區表

進行如下操作:

<a href="https://s5.51cto.com/wyfs02/M02/00/2E/wKiom1mYKmaTaOtZAACSakuj9fw755.png" target="_blank"></a>

                    centos7:partprobe [/dev/DEVICE]

                    centos6:   partx -a /dev/DEVICE

                                    kpartx -a /dev/DEVICE -f: force

                                    删除分區用

                                    partx -d --nr M-N /dev/DEVICE

注意:分完區一定要輸入w進行儲存,否則分區表中不會出現建立的區

parted進階分區操作,是一個可以分區并進行分區調整的工具,它可以建立,破壞,移動,複制,調整大小等等。建立GPT分區。

parted指令

               parted /dev/sdX  對磁盤進行分區

                          mklabel msdos/gpt 建立卷标

                          help幫助

                          mkpart 建立分區

parted分為兩種模式:互動模式和指令行模式

互動模式類似于fdisk  文法:parted [option] device

指令模式:可以直接在指令行下對磁盤進行操作,比較适合程式設計操作   文法:parted [option] device command.  如下圖所示

parted /dev/sdX mkpart primary 1 1000

<a href="https://s1.51cto.com/wyfs02/M00/00/2E/wKiom1mYK0PypptqAABk-c9KRuw037.png" target="_blank"></a>

操作完成後直接寫入硬碟。

習題

查詢指令java來自于哪個rpm包

<a href="https://s3.51cto.com/wyfs02/M02/9E/DE/wKioL1mYM3PgubrZAADAF9yT_oU654.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M01/9E/DE/wKioL1mYMzvhTLZ2AAAo7t84mOA310.png" target="_blank"></a>

2.寫一個通過fdisk/parted自動分區的腳本,會對一個空硬碟/dev/sdb進行分區,增加一個大小為1G的主分區。

這道題如果不寫腳本的話還好做,但一寫腳本就挺麻煩的,要考慮的情況太多。小編确實考慮得沒别人全,借鑒一下别人的,不得不說考慮的太周全了,佩服佩服!

答案:

     read -p "please input diskname (/dev/sd*):" disk;            靜默輸入要分區的硬碟

   ( [[ "$disk" =~ ^/dev/sd. ]] &amp;&amp; fdisk -l $disk &amp;&gt; /dev/null)||exit 1  判斷輸入的磁盤名是否符合 

    type=`fdisk -l $disk |grep "Disk label type"`  取出磁盤的分區類型,指派給變量

    a=`ls ${disk}?|wc -l`     取出分區數

    b=`fdisk -l /dev/sdb|tail -n $a`   列出所有的分區

if echo "$type"|grep "\&lt;gpt\&gt;";then

         echo -e"n\np\n1\n\n+1G\nw\n"|gdisk $disk

   else

         if echo "$b"|grep "\&lt;Extended\&gt;" &amp;&gt; /dev/null;then   

            if echo "$b"|head -3|grep "\&lt;Extended\&gt;" ;then  判斷主分區是否少于3個,列出前三行資訊,有extend則說明主分區少于三個,建一個預設的主分區

                     echo -e"n\n\n\n\nw\n"|fdisk $disk

            else

                   echo -e "n\n\n+1G\nw\n"|fdisk $disk  主分區是3個的話建立一個邏輯分區

               fi

         else

             if [ "$a" -lt 3 ];then 判斷主分區是否少于3個,是的話建一個1G的主分區

                   echo -e "n\np\n1\n\n+1G\nw\n"|fdisk $disk

            elif [ "$a" -eq 3 ];then  主分區是3個,建一個擴充分區,在擴充分區下建一個邏輯分區

                 echo -e "n\ne\n\n\nw\n"|fdisk $disk

                 echo -e "n\n\n+1G\nw\n"|fdisk $disk

           fi

     fi

fi

3.要求輸入挂載點,将顯示其UUID

答案:dir=/app; egrep "[[:blank:]]+$dir[[:blank:]]+" /etc/fstab |cut -d" " -f1

這道題中用到了變量,用變量的話通用性比較好。

不用fstab:

read -p "please input Mounted on name:" Name1  輸入挂載點

if df $Name1 &amp;&gt;/dev/null ; then

        Name2=`df "$Name1" |tail -1 |grep -o "^/[^ ]*"`

        blkid $Name2 |grep -o '\&lt;UUID="[[:alnum:]|-]*"'

        unset Name1 Name2   

else

        echo "error,Mounted on name unknown";exit 1

本文轉自    honeyorange   51CTO部落格,原文連結:http://blog.51cto.com/13172732/1957836

繼續閱讀