天天看點

磁盤存儲磁盤存儲

磁盤存儲

機械硬碟的原理,分區類型,磁盤管理工具

裝置檔案

  • Linux上一切皆檔案,包括硬碟,網卡…
  • 檔案一般包含:open(),read(),write(),close()
  • 裝置類型:

    (1)塊裝置:block,存取機關:block,典型的塊裝置:磁盤

      特性①通路機關:block 512B或4K ;塊裝置的存/取都是以塊為機關進行的,若讀取一個位元組資料,進行的操作是先将所要讀取的block讀至記憶體中,然後由CPU進行處理,CPU可以一個一個進行處理,磁盤的存取均是一塊為最小機關的。

      特性②随機讀寫:塊裝置的讀寫是随機的

      特性③支援緩存:塊裝置支援緩存,緩存可加速讀取

    (2)字元裝置:char,存取機關:字元 ,典型的字元裝置:鍵盤

      特性①通路機關:char

      特性②順序讀寫

      特性③無緩存

  • 裝置檔案:關聯至一個裝置驅動程式,進而能夠跟與之對應硬體裝置進行通信
  • 裝置号碼:

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

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

    注意: Linux上主次裝置号相同就表示同一裝置

可使用mknod - 建立裝置
mknod 裝置名  裝置類型  主裝置号  次裝置号
    [[email protected] test]# ll /dev/sr0
    brw-rw----+ 1 root cdrom 11, 0 Aug  2 18:03 /dev/sr0
    [[email protected] test]# mknod /dev/cd   b  11  0 
    [[email protected] test]# ll /dev/cd
    brw-r--r-- 1 root root 11, 0 Aug  8 13:41 /dev/cd
    [[email protected] test]# mount /dev/cd /data/test/
    [[email protected] data]# ls -n1 test/
.... /dev/cd内容部分顯示
/dev/cd和CD光牒内容一樣,/dev/cd 與/dev/sr0 為同一裝置
    drwxr-xr-x 3 0 0    2048 Nov 26  2018 images
    drwxr-xr-x 2 0 0    2048 Nov 26  2018 isolinux
    drwxr-xr-x 2 0 0    2048 Nov 26  2018 LiveOS
    drwxrwxr-x 2 0 0 1656832 Nov 25  2018 Packages
           
  • 硬碟接口類型:

    并行:

      IDE:133MB/s

      SCSI:640MB/s

    序列槽:

      SATA:6Gbps

      SAS:6Gbps

      USB:480MB/s

  • 裝置命名:

    1)centos版本差異:

    centos5及之前版本将IDE接口的硬碟命名為:/dev/hd

      其餘類型接口命名為:/dev/sd

      CD光牒在5版本上被命名為:/dev/hdc

    centos6開始:所有接口類型的硬碟統一命名為:/dev/sd

      CD光牒被命名為:/dev/sr0

    2)裝置命名

      磁盤裝置的裝置檔案名:/dev/DEVICENAME

      SCSI,SATA,SAS,IDE,USE:/dev/sd

      虛拟磁盤:/dev/vd(kvm),/dev/xvd

      不同磁盤辨別:a-z,aa,ab…

        /dev/sda,/dev/sdb,…

      同一裝置上的不同分區:1,2,3…

        /dev/sda1,/dev/sda2…

機械硬碟和固态硬碟

  • 機械硬碟(HDD):Hard Disk Drive,即是傳統普通硬碟,主要由:盤片,磁頭,盤片轉軸及控制電機,磁頭控制器,資料轉換器,接口,緩存等幾個部分組成。機械硬碟中所有的盤片都裝在一個旋轉軸上,每張盤片之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭發絲的直徑還小,所有的磁頭聯在一個磁頭控制器上,由磁頭控制器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每分鐘幾千轉的高速旋轉,磁頭就可以定位在盤片的指定位置上進行資料的讀寫操作。資料通過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也可以通過相反方式讀取。硬碟為精密裝置,進入硬碟的空氣必須過濾
  • 固态硬碟(SSD):Solid State Drive,用固态電子存儲晶片陣列而制成的硬碟,由控制單元和存儲單元(FLASH晶片、DRAM晶片)組成。固态硬碟在接口的規範和定義、功能及使用方法上與普通硬碟的完全相同,在産品外形和尺寸上也與普通硬碟一緻
  • 相較于HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優勢,SSD傳輸速率性能是HDD的2倍
  • 相較于SSD,HDD在價格、容量占有絕對優勢
  • 機械硬碟故障資料可恢複,固态硬碟損壞,資料不可恢複,硬碟損壞很常見,是以備份必不可少,而在存儲資料方面,一般選擇機械硬碟,固态硬碟目前不能完全取代機械硬碟
  • Linux中機械硬碟與固态硬碟如何區分?

    Linux中有一個辨別可以區分機械硬碟與固态硬碟:

      檢視/dev/sda硬碟類型

      cat /sys/block/sda/queue/rotational

       1 – 機械硬碟

       0 – 固态硬碟

       rotational – 是旋轉,轉速之意

機械硬碟的結構

  • 硬碟存儲的術語:

    head:磁頭

    track:磁道

    sector:扇區,512bytes

    cylinder:柱面

  • 機械硬碟結構
磁盤存儲磁盤存儲

CHS前期的扇區劃分:

磁盤存儲磁盤存儲

CHS采用24bit尋址

特點:track=sector

前10bit cylinder

中間8bit head

後面6bit sector

cylinder - head - sector 硬碟三圍

是以磁盤總空間 = cylinder * head * sector * 512 = 8G

最大尋址空間即磁盤總容量為8G

CHS的缺點:CHS的尋址空間最大為8G,在磁盤容量大于8G時,CHS不适用

後期扇區劃分 :ZBR(Zoned Bit Recording)

磁盤存儲磁盤存儲

LBA(logical block addressing)隻關心扇區

  LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址

  ATA-1規範中定義了28位尋址模式,以每扇區512位組來計算,ATA-1所定

義的28位LBA上限達到128 GiB。2002年ATA-6規範采用48位LBA,同樣以

每扇區512位組計算容量上限可達128 Petabytes

  • 根據硬碟的結構,可實作加速IO通路的優化方式

    ①從實體角度:将機械硬碟換成固态硬碟?

    ②從實體角度:機械硬碟的轉速、緩存

    ③資料在機械硬碟存放的位置:資料存放至連續的空間,即同一柱面,通路較快

    ④放置于标号較小的柱面,即磁盤靠外;相同時間内,在靠外圈的柱面讀取速率較快

機械硬碟的使用

  • 磁盤分區,為什麼磁盤要分區?

    優化IO性能

    實作磁盤空間配額限制

    提高修複速度

    隔離作業系統和程式

    安裝多個作業系統

    采用不同的檔案系統

  • 磁盤分區方式有兩種:MBR,GPT

MBR分區方式

  • 1)MBR:Master Boot Record (主引導記錄)
  • 2)MBR分區特點:

      ①使用32位表示扇區數

      ②分區不超過2T

      ③按柱面進行分區

      ④主分區+擴充分區最多4個

      ⑤分區資訊無備份,分區資訊被破壞,即使硬碟資料猶在也無法通路

  • 3)0磁道0扇區:512 bytes

      446 bytes :boot loader

       64 bytes : 分區表,16位辨別一個分區

       2 bytes :55AA 此位有辨別,表示磁盤分區

  • 4)MBR分區結構
    磁盤存儲磁盤存儲

      硬碟主引導記錄MBR由4個部分組成

      主引導程式(偏移位址0000H–0088H),它負責從活動分區中裝載,并運作系統引導程式

      出錯資訊資料區,偏移位址0089H–00E1H為出錯資訊,00E2H–01BDH全為0位元組

      分區表(DPT,Disk Partition Table)含4個分區項,偏移位址01BEH–01FDH,每個分區表項長16個位元組,共64位元組為分區項1、分區項2、分區項3、分區項4

      結束标志字,偏移位址01FE–01FF的2個位元組值為結束标志55AA

GPT分區方式

  • 1)GPT:GUID(Globals Unique Identifiers) partition table 支援128個分區,使用64位,支援8Z( 512Byte/block )64Z ( 4096Byte/block)
  • 2)使用128位UUID(Universally Unique Identifier) 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
  • 3)UEFI (Unified Extensible Firmware Interface 統一可擴充固件接口)硬體支援GPT,使作業系統啟動
磁盤存儲磁盤存儲

EFI部分又可以分為4個區域:EFI資訊區(GPT頭)、分區表、GPT分區、備份區域

管理分區

  • 列出塊裝置

    lsblk

    cat /proc/partitions

      這兩個指令均是檢視記憶體分區資訊,在剛執行完分區操作時,記憶體中的分區表未同步磁盤分區表時,上述兩個指令檢視的分區并不精确

  • 建立分區使用:

    fdisk:建立MBR分區

    gdisk:建立GRT分區

    parted:進階分區操作,既可以建立MBR分區,又可以建立GRT分區

  • 重新設定記憶體中的核心分區表版本

    partprobe

fdisk

  • fdisk - 管理小于2T的硬碟,擅長管理MBR分區;超過2T必須采用GPT分區方式
  • 對GPT的相容性不是特别好,目前不建議使用fdisk管理GPT分區
  • fdisk 互動式指令,其對硬碟分區時,隻在記憶體中儲存,在w之前,均可以撤銷。
  • 注意: fdisk其後是對硬碟進行分區,不要fdisk /dev/sda1不要對分區再分區,這樣fdisk不會報錯,但操作無效。
  • fdisk 指令選項:

    fdisk -l[u]:檢視磁盤分區資訊(檢視的磁盤分區資訊,不是記憶體中分區資訊)

  • fdisk DEVICE 管理分區

    子指令:

      p 分區清單

      t 更改分區類型

      n 建立新分區

      d 删除分區

      v 校驗分區

      u 轉換機關

      w 保持并退出

      q 不儲存退出

fdisk進行分區操作:

磁盤存儲磁盤存儲

檢視MBR資訊:

磁盤存儲磁盤存儲

可見boot loader 中全部是0,表示為非活動,說明boot loader上沒有系統引導的相關檔案,做資料盤,和作業系統無關。其中白色高亮部分是分區表資訊,4個主分區表資訊。擴充分區資訊在擴充分區自己裡面存放的分區資訊。

删除分區:

磁盤存儲磁盤存儲

注意: 在管理硬碟分區時,盡量不要寫裝置名,因為裝置名在删除時會發生變化,尤其是在配置檔案中,不要寫裝置名。當删除裝置時裝置發生改變,可能導緻服務出現問題。

centos6和centos7使用fdisk

磁盤存儲磁盤存儲

centos7 分區以扇區為機關,centos7設計得更加完善和精确。

centos6 分區以柱面為機關,以柱面為機關分區就會存在柱面中間有剩餘的空間未使用,若選擇預設分區時,有時可能會掉坑中~~,分區大小很小并且不能選擇。

centos6上以柱面為機關,柱面會出現跨分區情況:

磁盤存儲磁盤存儲

gdisk

  • gdisk - 用于GPT分區表格磁盤的分區或查詢
  • 用法與fdisk一緻;此處不再累述

parted

  • parted - 管理分區,既能互動式方式,又能非互動式方式運作
  • 注意: parted的操作都是實時生效的,小心使用
  • 支援msdos和gpt,可以支援大硬碟,也可支援小硬碟
  • parted選項:

    parted /dev/sdb mklabel gpt|msdos

    parted /dev/sdb print

    parted /dev/sdb rm 1

    parted -l 列出分區資訊

    parted mkpart part-type [fs-type] start end

  part-type:btrfs, ext2, ext3, ext4, fat16, fat32, hfs, hfs+, linux-swap, ntfs, reiserfs ,xfs.

  [fs-type] :在MBR中為primary 主分區

  start end :從開始到結束,預設是位元組(MB)

  • parted 可以寫在腳本中,批量建立分區

parted互動式操作:

磁盤存儲磁盤存儲

parted檢視磁盤資訊

磁盤存儲磁盤存儲

parted建立标簽,即采取哪種分區方式:

磁盤存儲磁盤存儲

檢視标簽:

磁盤存儲磁盤存儲

可以看到/dev/sdb前512個位元組的資訊,最後兩個位元組存在:55AA

55AA表示分區已存在

當然采用GPT分區方式時,/dev/sdb在前512位元組的最後兩個位元組:55AA

建立分區:

磁盤存儲磁盤存儲
在VMware中添加新磁盤後掃描:
    echo '- - -' > /sys/class/scsi_host/host0/scan
    echo '- - -' > /sys/class/scsi_host/host1/scan
    echo '- - -' > /sys/class/scsi_host/host2/scan
           

同步分區表

  • 檢視核心是否已經辨別新的分區:

    cat /proc/partations

  • centos 6 通知核心重新讀取硬碟分區表

    1)新增分區:

    partx -a /dev/sd*

    kpartx -a /dev/sd* -f: force

    2)删除分區:

    partx -d --nr M_N /dev/sd*

    3)

    centos 6 使用partprobe 沒有作用。

  • centos 5 和centos 7 使用partprobe

    partprobe [/dev/sd*]

繼續閱讀