磁盤管理詳解
一、簡介
對Linux而言,其哲學思想之一就是一切皆文件,因此Linux之上的所有設備都是通過文件接口來實現的,也就是說在訪問設備的時候就如同訪問一個文件一樣,因為它們使用的都是文件系統接口。
那我們要向設備中寫入數據是怎樣操作的?首先硬件設備在系統上會映射成一個一個文件,那我們在向硬件中寫入數據就相當於在文件中寫入數據。
二、設備文件
1.設備類型
塊設備:Block,其存取單位是“塊”,如硬盤;
字符設備:char,其存取單位是“字符”,如鍵盤;
2.設備文件
每一個設備都有一個文件作為它的訪問入口,此文件稱之為設備文件;該文件關聯至一個設備驅動程序,進而能夠跟與之對應的硬件設備進行通信。
3.設備號碼
用來標識設備,不同類別的設備用不同的設備號,同一類別的設備有不同的設備或多個設備,因此就有了主設備號和次設備號。
主設備號:major number,標識設備類型;
次設備號:minor number,標識同一類型下的不同設備;
可以通過ls -l /dev來查看設備文件的設備號碼,主設備號和次設備號通過逗號隔開,前面為主設備號,後面為次設備號,如下圖所示:
三、磁盤設備的設備文件命名
1.硬盤接口類型
並行:數據傳輸有n根線並行傳輸
IDE:133MB/s
SCSI:640MB/s
串口:數據傳輸有一根線按照順序傳輸
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
2.磁盤設備的設備文件命名:/dev/DEV_FILE
IDE:/dev/hd
SCSI,SATA,SAS,USB:/dev/sd
2.1.不同設備表示方法:在設備文件名後面追加一些字母a-z來表示:
/dev/sda,/dev/sdb,/dev/sdc
2.2.同一設備上的不同分區:采用數字遞增方式,如1,2...
/dev/sda1,/dev/sda2,/dev/sda3...
四、硬盤存儲術語
1.head:磁頭
2.track:磁道,存儲數據的地方
3.cylinder:柱面,一個柱面為8MB
4.secotr:扇區,512bytes
五、磁盤分區
1.磁盤兩種分區方式:
MBR:
Master Boot Record,主引導記錄,使用32位表示扇區數,分區不超過2T。
GPT:
GPT:GUID patition table 支持128個分區,使用64位,支 持8Z( 512Byte/block )64Z ( 4096Byte/block);
使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,並有CRC校驗位;
UEFI (統一擴展固件接口)硬件支持GPT;
2.0磁道0扇區
該扇區大小為512bytes,專門用來存儲MBR,MBR即主引導記錄,MBR又分為三部分:
446bytes:存儲boot loader,引導加載器;
64bytes:存儲分區表,有多少個分區,每個分區從哪裏開始到哪裏結束;其中每16bytes標識一個分區,因此一塊硬盤最多只能用4個主分區;
2bytes:前面信息的有效性標識(或者叫做結束標誌),用四個16進制數來表示55AA,表示前面510bytes是有效的;
註:①一塊磁盤要麽最多劃分4個主分區,要麽劃分成3個主分區+1個擴展分區(N個邏輯分區);
②當磁盤容量超過2T的時候,現在的MBR機制是沒辦法識別2T以後的磁盤空間的,此時就是要使用GPT機制來進行分區
六、管理分區
1.磁盤分區管理工具:fdisk、gdisk,parted
fdisk:創建MBR分區,交互式操作
gdisk:創建GPT分區,交互式操作
parted:高級分區操作(創建、復制、調整大小等等),非交互式操作,謹慎使用;
七、使用fdisk劃分分區
1.查看:fdisk -l [DEVICE]...,例如:fdisk -l /dev/sda;
2.創建分區:fdisk [DIVICE]...,例如:fdisk /dev/sda;
3.fdisk創建分區是一個交互式界面,有許多子命令:
p:顯示磁盤分區表;
n:創建新分區;
d:刪除分區;
t:修改分區的系統ID;
l:查看支持哪些分區ID;
w:保存並退出
q:不保存退出
註:centos6劃分分區是按柱面來劃分的;centos7是按扇區劃分的,在centos7上要以柱面方式顯示則可以使用fdisk -l -u=cylinder
4.在Linux系統上增加硬盤後默認不會生效,使用以下命令使其生效: echo "- - -" > /sys/class/scsi_host/host2/scan ; 5.查看/dev/sda硬盤512bytes的內容 hexdump -C -v -n 512 /dev/sda; 6.備份MBR dd if=/dev/sda of=/root/mbr bs=1 count=512; 7.用mbr恢復分區信息 dd if=mbr of=/dev/sdb; fdisk -l /dev/sdb; 8.清零引導加載器 dd if=/dev/zero of=/dev/sdb bs=1 count=446; hexdump -C -v -n 512 /dev/sdb; 9.清零分區表 dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446; hexdump -C -v -n 512 /dev/sdb;
八、同步分區表
1.查看內核是否識別新的分區:
(1)cat /proc/partitions;
(2)lsblk;
(3)ll /dev/sd*
2.對於已經有分區處於使用狀態的磁盤來講,新建分區後需要讓內核重新讀其分區表;
2.1新增分區:
格式: partx -a -n M:N /dev/DEVICE ;
kpartx -a /dev/DEVICE -f: force ;
centos6系列:partx -a /dev/DEVICE;例如:partx -a /dev/sda;
centos5,7系列:partprobe [/dev/DEVICE];
2.2刪除分區:
格式:partx -d -n M:N /dev/DEVICE;
centos6系列:partx -d --nr 7-8 /dev/DEVICE;
centos5,7系列:partprobe [/dev/DEVICE];
九、parted命令
parted的操作都是實時生效的,小心使用
用法:parted [選項]... [設備 [命令 [參數]...]...]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200
parted /dev/sdb rm 1
parted -l
本文出自 “亞成-另一個LINUXER” 博客,請務必保留此出處http://yacheng0316.blog.51cto.com/11878883/1958976
磁盤管理詳解