存儲管理之硬件基礎、機械磁盤原理以及設備規範、MBR格式的分區管理
存儲管理(服務器數據處理速度大於日常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格式的分區管理