1. 程式人生 > >存儲管理之硬件基礎、機械磁盤原理以及設備規範、MBR格式的分區管理

存儲管理之硬件基礎、機械磁盤原理以及設備規範、MBR格式的分區管理

linux存儲管理

Linux系統管理

存儲管理(服務器數據處理速度大於日常PC及移動端設備,多顆cpu,CPU多核心,每個核心可以完成一個進程的處理)

傳統的機械磁盤及分區管理

RAID技術,軟RAID實現

LVM

Btrfs


文件系統管理:

ext、xfs、btrfs


Linux存儲管理(數據存儲):

存儲器在馮諾依曼體系中叫做存儲器,存儲設備在馮諾依曼體系中稱為輸入輸出設備;

在計算機中除CPU【包括運算器(NU)和控制器(CU)】和內存外,其他都是輸入輸出設備;

北橋芯片是高速芯片,用來連接CPU和內存之間的數據傳輸(也會連接PCI-E高速率傳輸數據);南橋芯片是低速芯片,通常連接北橋芯片和輸入輸出設備(包括適配器)之間的數據傳輸;

適配器上的設備插拔最好在短點的額情況下進行插拔,否則可能會對主板造成毀滅性傷害;

不同(型號、廠家)的硬盤通過統一的磁盤控制器連接到主板上,進行數據交互;


磁盤控制器,總線(bus),接口


磁盤接口的類型:

IDE:並行接口,來源於ATA,133Mbps,266Mbps;

SCSI:小型計算機系統接口,

UltraSCSI320:320Mpbs

UltraSCSI640:640Mbps

窄帶控制器:提供7個接口,連接7個硬盤;

寬帶控制器:提供15個接口,連接15個硬盤;


SATA:Serial ATA,串行接口;

SATA1, SATA2, SATA3(可達6Gbps)

SAS:串行接口(運用於服務器,軍用,少見於民用)

6Gbps

可以接1023個硬盤


USB:1.0 1.1 2.0 3.0 3.1

2.0:60Mbps

3.0:480Mbps

3.1:10Gbps


衡量磁盤IO能力的另一個指標:IOPS (一秒鐘完成多少次讀寫操作)

IDE接口:機械磁盤,50-100 IOPS

SCSI接口:機械磁盤,100-200 IOPS

固態磁盤,400 IOPS


SATA接口:機械磁盤,100 IOPS左右

固態磁盤,400 IOPS左右


SAS接口:機械磁盤,200 IOPS左右

固態磁盤,800 IOPS左右


PCI-E接口的固態硬盤,接近於內存的速度

讀的IOPS:400000-800000 IOPS

寫的IOPS:50000-100000 IOPS


固態硬盤有讀寫壽命限制,但效率高


ES3000:華為PCI-E固態硬盤

DEC數字設備公司


普通的X86的主板上的磁盤控制器的接口:

IDE:2個接口,每個接口接一個主盤和一個從盤,共4塊磁盤;如果有光驅的話,可能會減少至3個磁盤+1個光驅;


SATA:4-6個接口;


SCSI:7個接口或15個接口;


SAS:1023-16384個接口;


CPU:控制總線(控制器發送控制命令讀取內存中的數據),數據總線(CPU通過內存RAM調取磁盤中的數據),地址總線(CPU通過內存RAM調取磁盤中的數據時,需要指定地址進行讀取操作);

控制總線、數據總線、地址總線這三條線在物理上的主板上是一條線,只是具有不同的功能,稱為總線的復用;

前段總線(DDR4 2666Mhz)的帶寬速率與CPU的速率相當,否則無法進行數據的交互;



機械磁盤:現階段最高是4TB;

磁盤的存儲方式:磁頭在磁盤的表面運動判斷磁盤表面磁性材料N/S極來代表0/1進而轉換為二進制來表示數據的存儲狀態;

磁盤轉速:現階段最高是15000rpm,磁盤內部絕對真空(絕對無塵)不存在任何灰塵

術語:

track:磁道(並不存在),磁頭在磁盤表面的運行軌跡的投影;

sector:扇區(每個扇區大小相同),512Byte;現在所說的扇區,實際上是平均值,有些扇區跨磁道;最小管理單元;

cylinder:柱面,從某個磁道向所有盤片做投影,所形成的圓柱表面;實際上是由所有盤片上相同位置的磁道組成;

partition:分區,從某個柱面到另一個柱面之間所有的柱面存儲空間;(邏輯映射分區,並不存在,只在操作系統內對硬盤的一個邏輯映射)

head:磁頭(不與磁盤表面接觸,一旦接觸會導致磁盤完全損壞),每個盤片每個磁面都有一個磁頭,用於數據的讀寫操作;


磁盤性能的指標:

主軸轉速:磁盤每分鐘旋轉的圈數(5400rpm、7200rpm、10000rpm、15000rpm);

平均尋道時間:磁頭從某個位置移動到指定的磁道位置所用的時間,所用時間越短,數據讀寫速度越快;

緩存:預先加載數據,需要的時候直接被內存瞬間取走,但是緩存有限(局限性);


基於一切皆文件的Linux的思想,磁盤也是文件:

/dev用於存放硬件設備被映射出的文件,磁盤的設備文件也存放於此;

設備文件:是關聯到硬件設備的驅動程序和設備的訪問入口;


設備號:

major, minor


major:主設備號,區分不同設備的設備類型,用於標明設備所需的驅動程序;

主設備號8:代表磁盤設備;

主設備號4:代表虛擬終端設備;

主設備號5:代表控制臺物理終端設備;(這裏的主設備號4、5雖然主設備號不同,但是他們是同一個類型的設備)

主設備號10:代表虛擬機設備;

minor:次設備號,在同種類型的設備中的不同設備,用於對設備提供訪問入口;

主設備號10,次設備號238:代表虛擬機網卡設備;

主設備號10,次設備號56:代表虛擬機套接字設備;

主設備號1(內核當中虛擬出來的設備),次設備號5:zero代表設備;


設備類型:

塊設備:

以塊為基本單位進行隨機訪問的設備,通常為存儲數據的設備;

字符設備:

以字節為基本單位進行線性訪問的設備,通常為處理數據的設備;


設備文件名:

IANA (美國國內互聯網地址委員會)--> ICANN(互聯網名稱與數字地址分配機構,管理域名,硬件命名)


設備文件存放在/dev目錄下:

IDE接口設備: hd[a-d]

SCSI|SATA|SAS|USB接口設備: sd[a-z]+ (+代表sd後面可以加1個或多個小寫字母來代表磁盤名稱)


RedHat Enterprise Linux 從RHEL6開始,將IDE接口的磁盤也命名為sd*,自此以後,所有的磁盤設備被統一命名為sd[a-z]+


設備的引用方式:

1.設備文件名

2.卷標(Volume Lable)

3.UUID:全局唯一標識符;Universal Unique IDentifier(最無解的引用方式,標識符重復幾率為0)


mknod命令來引用設備:

mknod - make block or character special files

制造一個塊或者設備特殊文件

格式:

mknod [OPTION]... NAME TYPE [MAJOR MINOR]

選項 設備名 設備類型 [主設備號 次設備號]

常用選項:

-m:指明設備權限,否則默認是讀寫權限減去權限遮罩碼;

-b:創建一個塊設備或者一個緩沖區設備;

-c | -u :創建一個非塊設備或者非緩沖區設備;

-p:創建一個管道設備;



如何使用的新的磁盤設備?

1.讓Linux系統內核識別設備,對設備進行分區;

2.格式化

低級格式化:磁盤初始化,磁道劃分;

高級格式化:創建或重建文件系統;

3.使用文件系統:

掛載

卸載


為何分區?

1.優化磁盤IO性能;

2.可以實現對某個存儲空間的配額限制;

3.進行高速的磁盤問題修復;

4.隔離系統文件和其他應用程序文件;

5.安裝多個操作系統;


如何分區?

MBR:整個磁盤空間小於2TB容量,建議使用MBR分區格式;

MBR:Master(Main) Boot Record,主引導記錄,始於1982年(比爾蓋茨提出,他認為分隔出四個分區足夠);

MBR其實也是一段數據,默認保存在磁盤的0磁道0扇區中(磁盤的第一個磁道第一個扇區中);

MBR數據分為三部分:

446Bytes:boot loader,引導加載程序;

Windows中:NTLDR(windows引導加載程序)

Linux中:LILO,GRUB(Linux默認的引導加載程序,但是446bytes不足以存放下全部的引導程序數據,將會存放在磁盤的1磁道1扇區到1磁道14扇區中)

64Bytes:Partition table,分區表;每16Bytes為一段,表明一個分區的內容,因此,默認最多只有四個分區;

1.最多有四個主分區;

分區編號依次為:1, 2, 3, 4

2.想要劃分更多的分區數量時,可以將任意一個主分區改為擴展分區,在擴展分區中建立邏輯分區;

邏輯分區的編號默認從5開始,不管前面的四個數字是否都被占用;


sda1, sda3, sda5


註意:擴展分區可以沒有,但最多只能有一個,只要是5之後的編號數字的分區就是擴展分區;

2Bytes:MBR結束標記,55AA;


GPT:整個磁盤空間超過2TB容量,建議使用GPT分區格式;

GUID Partition table,支持128個主分區;


Linux下常用的分區工具:

fdisk:

用於創建和管理MBR分區,對同一塊磁盤,最多只能管理15個分區;


gdisk:GNU disk

用於創建和管理GPT分區;


註意:

如果使用fdisk或gdisk命令對於一個已經有分區被掛載的磁盤的剩余空間再次進行分區,即便將分區的結果保存下來,也不會被內核立即識別;


想要讓內核識別出此類新建分區,可以采用下列方法:

1.重啟計算機(線上生產環境避免重啟);

2.強制內核重讀分區表:

partprobe命令

partx命令


在RHEL系或CentOS系5|7:

partprobe [device]

註意:如果省略了設備名,則表示重讀所有磁盤設備的分區表;強烈建議,直接給出指定的磁盤設備名稱;


在RHEL系或CentOS系6|7:

partx -a [device]

kpartx -af [device]


fdisk分區工具:

fdisk - manipulate disk partition table

操縱磁盤分區表,是一個菜單化工具;不能查看單個分區超過2^64Gb(超過這個大小需要使用parted命令);在這個菜單化工具中刪除輸入的字符需要按住“Ctrl”鍵+backspace鍵進行刪除操作;

格式:

fdisk device

fdisk -l [device...]


選項:

-c=dos | -u=cylinders :來查看Dos系統的分區表;

-l:表示查看之意,如果給出設備名稱,則查看指定設備的分區表;否則查看所有磁盤設備文件的分區表;


fdisk device

對於指定設備進行分區管理和操作;(在這個菜單化工具中刪除輸入的字符需要按住“Ctrl”鍵+backspace鍵進行刪除操作;)

Command action

d delete a partition :刪除一個分區;

l list known partition types :當前支持哪些分區類型;

m print this menu :顯示當前菜單;

n add a new partition :添加一個新分區;

p print the partition table :顯示分區列表;

q quit without saving changes :不保存退出;

t change a partition's system id :改變一個分區的系統id;

w write table to disk and exit :保存分區並退出;


在fdisk交互式菜單模式中創建分區的過程:

n --> p|e|l --> 分區的起始扇區(柱面),直接回車使用默認值設置 --> 分區的結束扇區(柱面),也可以使用+#UNIT(#指數字,UNIT指單位)直接指定分區大小


parted命令:高級分區工具,其操作結果實時生效;

parted - a partition manipulation program

格式:

parted [options] [device [command [options...]...]]

1 2

常用選項:

-l:查看分區列表;

-s:執行一個腳本;

-v:查看版本號;

-a alignment-none:使用最小化的配置參數;

-a alignment-cylinder:設置這個分區有多少柱面;

-a alignment-minimal:創建一個最小化的分區;

-a alignment-optimal:使用一個可選的內容;


示例:

~]# parted /dev/sda mkpart logical 103GB 105GB

~]# parted /dev/sda rm 8


在通電開機狀態下添加SCSI接口的磁盤至本服務器,要想使設備被內識別並創建出相應的設備文件,有下列方法:

1.重啟計算機;

2.~]# echo "- - -" > /sys/class/scsi_host/host2/scan

強制內核識別在通電狀態下熱插接的新SCSI接口的磁盤設備;


存儲管理之硬件基礎、機械磁盤原理以及設備規範、MBR格式的分區管理