一,概述
設備文件
I/O ports: I/O設備地址
一切皆文件
open() read() write()close()
設備類型:
塊設備:block,存取單位“塊”,磁盤
字符設備:char,存取單位”字符“,鍵盤
塊設備和字符設備的區別
塊設備可以隨機訪問,字符設備必須連續訪問,如,/dev/null
塊設備有緩存,字符設備沒有緩存,因為字符設備是個邏輯上的設備
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:
主設備號:major number,標識設備類型
次設備號:minor number,標識同一類型下的不同設備
磁盤設備的設備文件命名:/dev/DEV_FILE
IDE: /dev/hd
但是從centos 6以后IDE也是以sd顯示,不再以hd顯示
另外還有vd*,顯示的是虛擬化的硬盤顯示
SCSI, SATA, SAS, USB: /dev/sd
不同設備:a-z
/dev/sda, /dev/sdb, …
同一設備上的不同分區:1,2, …
/dev/sda1, /dev/sda5
硬盤結構
磁頭(head,早起最多8位,就是2的8次方是256個)
track(磁道,以前最多1024個字節)
sector(扇區,以前最多放63個扇區)
(扇區,512字節)
扇區起始到結束
所以早期硬盤最多的容量就是512*63*12024*256
一個磁道的的容量=512*63
cylinder柱面容量=512*63*256=8M左右
現在技術更新,硬盤的存儲的方式不一樣,可以在磁道上內圈放置的扇區數和外圈放置的扇區數可以不同.
CHS
LBA 邏輯快尋址
使用分區空間:
設備識別
設備分區
創建文件系統
標記文件系統
在/etc/fstab文件中創建條目
掛載新的文件系統
磁盤分區:
為什么要分區?
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
兩種分區方式:MBR,GPT
MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
當大型企業分區數據不足以2T來滿足,就會使用更好的分區方式GPT
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader(系統加載) 引導程序
64bytes:分區表 這里存放的是分區的信息
16bytes: 標識一個分區 16個字節標識一個分區,所以從從這里就可以看出一塊硬盤最多分4個主分區
2bytes: 55AA 存放的是一個標識位,如果沒有55AA,系統認定為你這個硬盤為裸盤,會提示你重新分區
4個主分區;3主分區+1擴展(N個邏輯分區)
增加新硬盤重新加載 "echo "- – -" > /sys/class/scsi_host/host2/scan"
lsblk 查看內存中的信息
fdisk -l 查看磁盤中信息
備份分區表: dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512
if是inputfile的/dev/sda里面的connt=512的字節數按bs=1個字節輸出到of(outputfile)輸出到/testdir/mabbak文件中
還原備份: dd if=/testdir/mbrbak of=/dev/sda
hexdump 命令可以查看十六進制內容
MBR 硬盤分區結構圖
整個硬盤的第一個扇區稱為MBR,512字節,其中512字節包含前面的446字節為引導程序的和后面的64字節為分區表,最后結束標志2字節,如果為空,系統將認定為裸盤,就是沒有分區的磁盤,如果為55AA,則是磁盤分區表的正確的校驗.
其中中間的64字節是以每16字節存放一個分區表信息,所以一塊磁盤最多4個主分區.
其中每16額字節的的定義為
第一個字節為引導標志,如果為80,表示活動分區,00表示非活動分區
第二個字節到第第四個字節為分區起始CHS位置:
(第二個字節為磁頭號,
第三個字節和第四個字節分別表示扇區號和柱面號)
第五個字節表示分區類型,0表示分區未使用
第六個字節到第八個字節為分區結束CHS位置
(第六個字節為磁頭號,
第七個字節和第八個字節分別表示扇區號和柱面號)
第九個字節到第十二字節為分區起始LBA地址
第十三個字節到第十六個字節為分區結束LBA地址
其中最后的十六個字節為擴展分區,
擴展分區的16個字節又重新指向一個新的EBR,結構類似MBR,就是邏輯分區1,前面446個字節為空,后面64字節第一個16個字節為邏輯分區1的分區表,第二個16個字節為指向下一個擴展分區表的EBR,后面2個16字節暫未使用.,最后兩個字節同樣為標志位55AA/
GPT分區:
GPT:GUID patition table 支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)
使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT
Protective MBR 為GPT的頭,因為傳統的分區表不識別GPT,所以必須要以原始的MBR來保護GPT
Primary G UID Partition Header 為磁盤,下面的都是分區表,GPT總共可以分128個分區
Partition 1
為存數分區數據的
最后就是備份分區數據的.
管理分區:
列出塊設備
blkid
創建分區使用:
fdisk創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區
gdisk創建GPT分區
GNU parted高級分區操作(創建、復制、調整大小等等)
partprobe-重新設置內存中的內核分區表版本
parted命令:
parted的操作都是實時生效的,小心使用(因為為非交互方式執行的命令,而fdisk為交互式的)
用法:parted [選項]… [設備[命令[參數]…]…]
parted /dev/sdbmklabelgpt|msdos
parted /dev/sdbprint
parted /dev/sdbmkpartprimary 1 200
parted /dev/sdbrm1
parted -l
重點掌握的命令fdisk
fdisk /dev/sdb
gfisk /dev/sdb GPT分區模式
# fdisk -l [-u] [device…]
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
w 保存并退出
q 不保存并退出
同步分區表:因為partprobe命令對centos6不好使,所以我們就在6上就可以使用partx命令
查看內核是否已經識別新的分區:
# cat /proc/partations
通知內核重新讀取硬盤分區表
新增分區用
partx-a -n M:N /dev/DEVICE
kpartx-a /dev/DEVICE -f: force
這樣就可以給新增分區進行同步到內存
刪除分區用
partx-d -n M:N /dev/DEVICE
centos6: –nrN-M
CentOS 5,7: 使用partprobe
partprobe[/dev/DEVICE]
原創文章,作者:Kartik,如若轉載,請注明出處:http://www.www58058.com/43051