天天看點

磁盤管理詳解(01)

一、簡介

    對Linux而言,其哲學思想之一就是一切皆檔案,是以Linux之上的所有裝置都是通過檔案接口來實作的,也就是說在通路裝置的時候就如同通路一個檔案一樣,因為它們使用的都是檔案系統接口。

    那我們要向裝置中寫入資料是怎樣操作的?首先硬體裝置在系統上會映射成一個一個檔案,那我們在向硬體中寫入資料就相當于在檔案中寫入資料。

二、裝置檔案

    1.裝置類型

        塊裝置:Block,其存取機關是“塊”,如硬碟;

        字元裝置:char,其存取機關是“字元”,如鍵盤;

    2.裝置檔案

        每一個裝置都有一個檔案作為它的通路入口,此檔案稱之為裝置檔案;該檔案關聯至一個裝置驅動程式,進而能夠跟與之對應的硬體裝置進行通信。

    3.裝置号碼

        用來辨別裝置,不同類别的裝置用不同的裝置号,同一類别的裝置有不同的裝置或多個裝置,是以就有了主裝置号和次裝置号。

        主裝置号:major number,辨別裝置類型;

        次裝置号:minor number,辨別同一類型下的不同裝置;

    可以通過ls -l /dev來檢視裝置檔案的裝置号碼,主裝置号和次裝置号通過逗号隔開,前面為主裝置号,後面為次裝置号,如下圖所示:

三、磁盤裝置的裝置檔案命名

    1.硬碟接口類型

        并行:資料傳輸有n根線并行傳輸

            IDE:133MB/s

            SCSI:640MB/s

        序列槽:資料傳輸有一根線按照順序傳輸

            SATA:6Gbps

            SAS:6Gbps

            USB:480MB/s

    2.磁盤裝置的裝置檔案命名:/dev/DEV_FILE

        IDE:/dev/hd

        SCSI,SATA,SAS,USB:/dev/sd 

    2.1.不同裝置表示方法:在裝置檔案名後面追加一些字母a-z來表示:

        /dev/sda,/dev/sdb,/dev/sdc

    2.2.同一裝置上的不同分區:采用數字遞增方式,如1,2...

        /dev/sda1,/dev/sda2,/dev/sda3...

四、硬碟存儲術語

    1.head:磁頭

    2.track:磁道,存儲資料的地方

    3.cylinder:柱面,一個柱面為8MB

    4.secotr:扇區,512bytes

五、磁盤分區

    1.磁盤兩種分區方式:

        MBR:

            Master Boot Record,主引導記錄,使用32位表示扇區數,分區不超過2T。

        GPT:

            GPT:GUID patition table 支援128個分區,使用64位,支 持8Z( 512Byte/block )64Z ( 4096Byte/block);

            使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位;

            UEFI (統一擴充固件接口)硬體支援GPT;

    2.0磁道0扇區

        該扇區大小為512bytes,專門用來存儲MBR,MBR即主引導記錄,MBR又分為三部分:

            446bytes:存儲boot loader,引導加載器;

            64bytes:存儲分區表,有多少個分區,每個分區從哪裡開始到哪裡結束;其中每16bytes辨別一個分區,是以一塊硬碟最多隻能用4個主分區;

            2bytes:前面資訊的有效性辨別(或者叫做結束标志),用四個16進制數來表示55AA,表示前面510bytes是有效的;

    注:①一塊磁盤要麼最多劃分4個主分區,要麼劃分成3個主分區+1個擴充分區(N個邏輯分區);

        ②當磁盤容量超過2T的時候,現在的MBR機制是沒辦法識别2T以後的磁盤空間的,此時就是要使用GPT機制來進行分區

六、管理分區

    1.磁盤分區管理工具:fdisk、gdisk,parted

        fdisk:建立MBR分區,互動式操作

        gdisk:建立GPT分區,互動式操作

        parted:進階分區操作(建立、複制、調整大小等等),非互動式操作,謹慎使用;

七、使用fdisk劃分分區

    1.檢視:fdisk -l [DEVICE]...,例如:fdisk -l /dev/sda;

    2.建立分區:fdisk [DIVICE]...,例如:fdisk /dev/sda;

    3.fdisk建立分區是一個互動式界面,有許多子指令:

        p:顯示磁盤分區表;

        n:建立新分區;

        d:删除分區; 

        t:修改分區的系統ID;

        l:檢視支援哪些分區ID;

        w:儲存并退出

        q:不儲存退出

    注:centos6劃分分區是按柱面來劃分的;centos7是按扇區劃分的,在centos7上要以柱面方式顯示則可以使用fdisk -l -u=cylinder   

<code>    </code><code>4.在Linux系統上增加硬碟後預設不會生效,使用以下指令使其生效:</code>

<code>            </code><code>echo</code> <code>"- - -"</code> <code>&gt; </code><code>/sys/class/scsi_host/host2/scan</code> <code>;</code>

<code>            </code> 

<code>    </code><code>5.檢視</code><code>/dev/sda</code><code>硬碟512bytes的内容</code>

<code>    </code> 

<code>            </code><code>hexdump -C -</code><code>v</code> <code>-n 512 </code><code>/dev/sda</code><code>;</code>

<code>    </code><code>6.備份MBR</code>

<code>            </code><code>dd</code> <code>if</code><code>=</code><code>/dev/sda</code> <code>of=</code><code>/root/mbr</code> <code>bs=1 count=512;</code>

<code>    </code><code>7.用mbr恢複分區資訊</code>

<code>            </code><code>dd</code> <code>if</code><code>=mbr of=</code><code>/dev/sdb</code><code>;</code>

<code>            </code><code>fdisk</code> <code>-l </code><code>/dev/sdb</code><code>;</code>

<code>    </code><code>8.清零引導加載器</code>

<code>            </code><code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=</code><code>/dev/sdb</code> <code>bs=1 count=446;</code>

<code>            </code><code>hexdump -C -</code><code>v</code> <code>-n 512 </code><code>/dev/sdb</code><code>;</code>

<code>    </code><code>9.清零分區表</code>

<code>            </code><code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=</code><code>/dev/sdb</code> <code>bs=1 count=64 skip=446 seek=446;</code>

八、同步分區表

    1.檢視核心是否識别新的分區:

        (1)cat /proc/partitions;

        (2)lsblk;

        (3)ll /dev/sd*   

    2.對于已經有分區處于使用狀态的磁盤來講,建立分區後需要讓核心重新讀其分區表;

       2.1新增分區:

            格式: partx -a -n M:N /dev/DEVICE ;

                   kpartx -a /dev/DEVICE -f: force ;

               centos6系列:partx -a /dev/DEVICE;例如:partx -a /dev/sda;

               centos5,7系列:partprobe [/dev/DEVICE];

        2.2删除分區:

        格式:partx -d -n M:N /dev/DEVICE;

             centos6系列:partx -d --nr 7-8 /dev/DEVICE;

             centos5,7系列:partprobe [/dev/DEVICE];

九、parted指令

    parted的操作都是實時生效的,小心使用 

    用法:parted [選項]... [裝置 [指令 [參數]...]...]

    parted /dev/sdb mklabel gpt|msdos

    parted /dev/sdb print

    parted /dev/sdb mkpart primary 1 200

    parted /dev/sdb rm 1 

    parted -l

              本文轉自wzcLINUXER 51CTO部落格,原文連結:http://blog.51cto.com/yacheng0316/1958976,如需轉載請自行聯系原作者

繼續閱讀