存儲管理

機械硬盤:

track:磁道,

sector:扇區,512Bytes,現在所說的扇區,實際上是平均值;

cylinder:柱面,從磁道向所有盤片做投影

partition:分區,分區就是基於柱面來劃分的存儲空間

head:磁頭,每個磁盤表面都有一個磁頭;


設備文件:/dev

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


設備號:

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

minor:次設備號,區分同種類型下的不同設備,是特定設備的訪問入口;


mknod命令:

mknod - make block or character special files

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


設備類型:

塊設備:用於隨機訪問的設備,數據存儲和交換的單位是塊;

字符設備:用於線性訪問的設備,數據的交換單位一般是字符;


設備文件名:IANA-->ICANN 

/dev/

IDE:hd[a-d]

SCSI/SATA/SAS/USB:sd[a-z]


RHEL6、CentOS6開始:

所有的接口類型的硬盤設備統一命名爲sd[a-z]


設備引用方式:

設備文件名

卷標(Volume Lable)

link

UUID:全局唯一標識符,128bit


如何使用一個新的硬盤設備?

分區

創建文件系統(格式化)

掛載分區


爲何分區?

1.優化I/O性能

2.實現磁盤空間的配額限制

3.進行高速修復

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

5.安裝多個操作系統


如何分區?

MBR:硬盤空間小於2TB

MBR:Master(Main) Boot Record, 主引導記錄,起源於1982年,

0磁道0扇區:512Byte

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

64Bytes:partition table,分區表,每16Bytes表明一個分區的內容;因此一共有四個主分區;

注意:

1.主分區+擴展分區,最多可以有4個,其分區表位的編號依次爲:1,2,3,4

2.邏輯分區的編號從5開始,不管前面的四個數字編號是否被佔用;

2Bytes:結束標記,55AA


GPT:硬盤空間大於2TB

GUID Partition Table,GUID分區表,支持128個分區

UEFI(統一擴展固件接口)的硬件可以支持GPT  Boot Legacy


通常使用的分區工具:

fdisk:

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


gdisk:GNU disk

用於創建和管理GPT分區,


如果使用fdisk或gdisk命令對於已經有分區並掛載的磁盤的剩餘空間進行再次分區,分區的信息即便是保存了,也不會被內核重新讀取;如果要讓內核識別此類分區:

1.重啓計算機;

2.partprobe命令或者partx命令,強制內核重讀分區表;

CentOS5/7:partprobe -a [device] 如果省略了設備名,則表示重讀所有磁盤的分區表

CentOS6/7:partx -a [device]

kpartx -af [device]


fdisk分區示例:

fdisk - Partition table manipulator for Linux


fdisk -l [device...]

查看指定磁盤的分區表,如果省略device參數,則顯示所有磁盤設備的分區表;


fdisk device

對於指定設備進行分區管理;


fdisk子命令:

d   delete a partition

l   list known partition types

m   print this menu

n   add a new partition

e   extended

p   primary partition (1-4)

l logical 


p   print the partition table

q   quit without saving changes

t   change a partition's system id

w   write table to disk and exit


parted:GNU

高級分區工具,實時生效;

parted - a partition manipulation program


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


parted /dev/sdb mklabel gpt|msdos

parted /dev/sdb print

parted /dev/sdb mkpart primary 1 200

parted /dev/sdb rm 1


~]# echo '- - -' > /sys/class/scsi_host/host2/scan

強制內核識別在開機狀態下插上的SCSI接口的磁盤



創建文件系統:

FHS /bin /dev /etc

權限

文件的命名規則


爲什麼要創建文件系統?

一百萬冊圖書

平面分類管理

想要搜索需要的圖書,需要遍歷;

空間分類管理

門類

幾次有限的但有效的查找即可;


創建文件系統實際上就是給分區進行存儲空間的邏輯編址;


格式化:

低級格式化:

物理層面完成格式化,在磁盤設備出廠時,通過低級格式化來創建磁道;

主要作用:劃分磁道


高級格式化:

分區之後進行,

主要作用:用來創建文件系統,爲分區構建邏輯編址單元,簇,塊

無論是簇還是塊,都是將一個或多個扇區組織在一起,共同完成數據存儲;

簇:512B 1024 2048 4096 8192 16384 32768 65536

塊:1024 2048 4096


注意:

1.一個塊只能放置一個文件的內容,一個文件可以佔用多個塊;

2.如果在某個分區中,將創建大量的小文件,把塊劃分的小一些;反之,塊就大些

3.如果分區空間比較大,塊也應該大一些;


在一個分區中創建了文件系統:

首先,會將分區劃分成大小相等的若干塊;

元數據塊

元數據——inode(index node)

文件的屬性:

文件大小

文件權限

文件所有者

文件時間戳

數據塊指針


存放元數據的固定的存儲空間,稱爲inode;


每個inode都有其對應的inode編號


數據塊

存放文件中所包含的流式數據


特殊文件:

設備文件:block special 或 character special

僅僅是將元數據中的數據塊指針換成了設備號

符號鏈接文件:symbolic link

僅僅是將元數據中的數據塊指針換成了另一個文件的訪問路徑;


這類文件只佔據元數據區域,沒有數據塊佔用;


隨着磁盤空間越來越大,劃分的塊的數量也越來越多,管理起來很不方便


劃分塊組可以解決該問題


塊組:

每個塊組中有獨立的元數據塊和數據塊

存放數據的時候,以塊組內的數據塊優先選擇,如果塊組內的數據塊不夠,可以通過存儲策略來請多個塊組協同存儲;


超級塊:

主要定義了有多少個塊組,以及每個塊組的邊界。


爲了防止超級塊發生故障倒置整個文件系統崩潰,對超級塊進行冗餘備份。


日誌塊:

對於數據的寫入操作做記錄的塊;


防止數據不一致;


數據不一致通常都是由不潔關機,不潔斷電導致;


一個完整的文件系統:

超級塊,inode,inode bitmap,block bitmap,data block,journal block


想要查找/var/log/messages文件的內容,是怎樣的過程?


首先查找/目錄inode編號,從元數據區域中找到對應inode,再讀取inode中的數據塊指針,找到存放/目錄內容的數據塊;

然後,在數據塊中查找名稱爲var的文件名,如果有,就定位其inode編號,再到元數據區域中查找對應編號的inode,再根據數據塊指針找到保存var目錄內容的數據塊;

再然後,在該數據塊中查找名稱爲log的文件名,如果有,就定位其inode編號,再到元數據區域中查找對應編號的inode,再根據數據塊指針找到保存log目錄內容的數據塊;

之後,在該數據塊中查找名稱爲messages的文件名,如果有,就定位其inode編號,再到元數據區域總查找對應編號的inode,再根據數據塊指針找到messages文件對銀的數據塊,就可以讀取數據;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章