Linux磁盤管理

一、磁盤設備基本概念

1.1 磁盤接口類型

目前市面上磁盤設備接口通常有兩大類:

  • 並口:
    • IDE: 133MB/s(已經淘汰)
    • SCSI: 640MB/s
  • 串口:
    • SATA: 6Gbps
    • SAS: 6Gbps
    • USB 3.0: 480MB/s

NOTE: 磁盤接口速率不代表磁盤本身的性能.

1.2 機械硬盤結構

機械硬盤主要由盤片、磁頭、盤片轉軸、控制電機、磁頭控制器、數據轉換器、接口和緩存等幾個部分組成; 在盤片上我們又有磁道(track)、柱面(cylinder)和扇區(sector)的概念, 如下圖:
機械硬盤盤片結構
機械硬盤有一個術語叫RPM(Rotations Per Minute, 每分鐘轉數).

二、Linux下設備文件名

在linux下設備由設備號碼進行標識, 設備號分爲主設備號和次設備號:

  • 主設備號(major number, 標識設備類型): IDE(/dev/hd), SCSI、SATA、SAS、USB(/dev/sd), ...
  • 次設備號(minor number, 同一類型的不同設備): /dev/sd[a-z]
    • 分區編號: /dev/sda[1,2,3, ...]

三、MBR、GPT和UEFI

3.1 MBR

MBR(Master Boot Record), 即硬盤的主引導記錄, 位於硬盤的clinder 0, head 0和sector 0, 它由512 bytes構成, 前446 bytes爲boot loader, 中間64 bytes爲分區表(每16 bytes標識一個分區), 最後2 bytes(55AA)爲MBR有效性標識.
MBR最大支持2 TB磁盤容量.

3.2 GPT和UEFI

GPT(GUID Patition Table), 即全局唯一標識分區表, 是一個物理硬盤的分區結構, GPT最大支持18 EB空間.
GPT和MBR屬於硬盤類名詞, UEFI(Unified Extensible Firmware Interface)則屬於主板類名詞, 即統一的可擴展固件接口, 是一種全新類型的接口標準, 不同於傳統BIOS開機啓動要進行外設檢查(開機速度慢), UEFI減少了BIOS自檢的步驟, 加快了系統啓動時間, 啓動流程對比如下:

  • 傳統BIOS運行流程: 開機 --> BIOS初始化 --> BIOS自檢 --> 引導操作系統 --> 進入系統
  • UEFI運行流程: 開機 --> UEFI初始化 --> 引導操作系統 --> 進入系統

3.2.1 UEFI + GPT的優勢

  • GPT支持最大卷爲18 EB
  • GPT支持無限分區(微軟目前限定128個)
  • GPT分區磁盤有備份分區表來提高分區數據結構的完整性
  • UEFI提供更友好的操作界面, 支持鼠標操作
  • UEFI + GPT啓動速度更快
  • UEFI + GPT支持secure boot(能夠抵禦bootkit***, 從而提高安全性)

四、Linux下分區管理命令

4.1 fdisk

fdisk只能管理15個分區(對於一塊硬盤), fdisk已經支持GPT分區

#用法: fdisk -l [-u] [device]; fdisk device(進入磁盤管理界面, 通過子命令管理磁盤)
[root@zabbix ~]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a8238

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    41943039    20458496   8e  Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos_docker--package-root: 18.8 GB, 18756927488 bytes, 36634624 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/centos_docker--package-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# fdisk /dev/DEVICE
[root@zabbix ~]# fdisk /dev/sdb 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6d1961e8.

Command (m for help): # 使用m查看子命令幫助, 就不多做演示

# cat /proc/partitions: 查看內核是否已經識別新分區
[root@zabbix ~]# cat /proc/partitions 
major minor  #blocks  name

   8        0   20971520 sda
   8        1     512000 sda1
   8        2   20458496 sda2
   8       16   10485760 sdb
   8       17   10484736 sdb1 # 新分區已經識別
  11        0    1048575 sr0
 253        0   18317312 dm-0
 253        1    2097152 dm-1

4.2 partx、kpartx

partx和kpartx用於通知內核重新讀取新分區

# partx用法: partx -a /dev/DEVICE; partx -n M:N(指定分區範圍) /dev/DEVICE

# kpartx用法: kpartx -a /dev/DEVICE

以上兩個命令支持系統爲CentOS 6和7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章