磁盤存儲
機械硬碟的原理,分區類型,磁盤管理工具
裝置檔案
- 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*]