文件系統知識總結node
新買的硬盤要存放數據須要怎麼作?數據庫
首先將硬盤裝機作RAID,作完RAID後進行分區,分完區後格式化建立文件系統,最後存放數據。安全
硬盤的內外部結構:併發
物理形狀:運維
接口類型:高併發
IDE(Integrated Drive Electronics)即「電子集成驅動器」。工具
SCSI(Small Computer System Interface)小型計算機系統接口。佈局
SATA(Serial Advanced Technology Attachment)串口硬盤。性能
SAS(Serial Attached SCSI)串行鏈接SCSI,是新一代的SCSI技術,向下兼容SATA。測試
採購磁盤考慮因素:
選型:
Note:千萬不要用SATA磁盤來作在線高併發服務的數據存儲或數據庫業務。
企業生產環境主流磁盤的相關信息對比:
單位容量對比性能和價格:SSD > SAS > SATA >SCSI
單位價格購買磁盤容量:SATA > SAS > SSD
企業生產場景普及程度:SAS > SATA > SSD
SSD固態硬盤(Solid State Drive)用固態電子存儲芯片陣列而製成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的徹底相同,在產品外形和尺寸上也徹底與普通硬盤一致。
固態硬盤優勢 |
優勢說明 |
啓動快 |
沒有點擊加速轉動的過程 |
寫入速度快 |
基於DRAM的固態磁盤寫入速度極快 |
碎片不影響讀取時間 |
相對固定的讀取時間。因爲尋址時間於數據存儲位置無關,所以磁盤碎片不會影響讀取時間 |
無噪音 |
由於沒有機械馬達和風扇,工做時噪音值爲0分貝。某些高端或大容量產品裝有風扇,所以仍會產生噪音 |
發熱量較低 |
低容量的基於閃存的固態磁盤在工做狀態下能耗和發熱量較低,但高端或大容量產品能耗會較高 |
無機械故障 |
內部不存在任何機械活動部件,不會發生機械故障,也不怕碰撞、衝擊、振動。這樣即便在高速移動甚至伴隨翻轉傾斜的狀況下也不會影響到正常使用,並且在筆記本電腦發送意外掉落或硬物碰撞時能將數據丟失的可能性降到最小 |
工做溫度範圍更大 |
普通硬盤只能在5到55℃範圍內工做,而大多數固態硬盤能在10~70℃工做,一些工業級的還能夠在-40~85℃,甚至更大的溫度範圍下工做 |
體積小重量輕 |
低容量的固態磁盤比同容量磁盤體積小、重量輕。但這一優點隨容量增大而逐漸減弱,直至256GB,固態磁盤仍比同容量的普通硬盤輕 |
抗震動 |
比起傳統磁盤,固態磁盤抗震能力要強不少,使得數據能更加安全地保存 |
固態硬盤缺點 |
缺點說明 |
成本高 |
每單位容量價格是傳統磁盤的5~10倍(基於閃存),甚至200~300倍(基於DRAM) |
容量低 |
目前固態磁盤最大容量遠低於傳統磁盤。美國公司Foremay推出了EC188M系列固態磁盤2TB。傳統磁盤的容量仍在增加,目前已有4TB的了 |
易受外界影響 |
因爲不像傳統磁盤那樣屏蔽於法拉第籠中,固態磁盤更易受到某些外界因素的不良影響。如斷電(基於DRAM的固態磁盤尤甚)、磁場干擾、靜電等 |
寫入壽命有限 |
寫入壽命有限(基於閃存),通常閃存寫入壽命爲1萬到10萬次,特製的可達100萬到500萬,然而整臺計算機壽命期間內文件系統的某些部分(如文件分配表)的寫入次數仍將超過這一極限。特製的文件系統或者固件能夠分擔寫入的位置,使固態磁盤的總體壽命達到20年以上 |
數據難以恢復 |
數據損壞後難以恢復,一旦在硬件上發送損壞,若是是傳統的磁盤或磁帶存儲方式,經過數據恢復也許還能挽救一部分數據,可是若是是固態存儲,一旦芯片發生損壞,想要在碎成幾塊或電流擊穿的芯片中找回數據那幾乎是不可能的,固然這種不足也是能夠犧牲存儲空間來彌補的,主要用RAID |
電池續航較短 |
根據實際測試,使用固態磁盤的筆記本在空閒或低負荷運行下,電池續航短於使用5400RPM的2.5英寸的傳統硬盤 |
能耗較高 |
基於DRAM的固態磁盤在任什麼時候候的耗能都高於傳統磁盤,尤爲是關閉時仍需供電,不然數據丟失 |
Note:運維工做中要合理規劃好分層存儲機制,根據業務及數據使用頻率結合着使用SSD+SAS(15000轉/分鐘)+SATA(10000轉/分鐘)。
磁盤相關術語:主軸,盤片,磁道,扇區,0號盤面,磁頭,傳動手臂,傳動軸,起停區,尋道,扇區(標識符(磁頭,磁道,扇區號)+數據)
計算磁盤大小公司:磁盤大小=512字節 * 扇區數 * 磁道數 * 磁頭數
機械磁盤讀寫磁盤數據的原理小結:
一、磁盤是按照柱面爲單位讀寫數據的,即先讀取同一個盤面的某一個磁道,讀完以後,若是數據沒有讀完,磁頭也不會切換到其餘的磁道,而是選擇切換磁頭,讀取下一個盤面的相同半徑的磁道,直到全部盤面的相同半徑的磁道讀取完成以後,若是數據尚未讀寫完成,纔會切換其餘不一樣半徑的磁道,這個切換磁道的過程稱過尋道。
二、不一樣磁頭間的切換時電子切換,而不一樣磁道間的切換須要磁頭作徑向運動,這個徑向運動須要步進電機調節,這個動做時機械的切換。
磁頭尋道是機械運動,切換磁頭是電子切換。
RAID:廉價冗餘磁盤陣列
作raid最直接的好處:
各級RAID優缺點對比:
RAID級別 |
關鍵優勢 |
關鍵缺點 |
實際應用場景 |
RAID 0 |
讀寫速度最快 |
沒有任何冗餘 |
MySQL Slave,集羣的節點RS |
RAID 1 |
100%冗餘,鏡像 |
讀寫性能通常、成本高 |
單獨的,數據重要,且不能宕機的業務,監控,系統盤 |
RAID 5 |
具有必定性能和冗餘,能夠壞一塊盤,讀性能不錯 |
寫入性能不高 |
通常的業務均可以用 |
RAID 10 |
讀寫速度很快,100%冗餘 |
成本高 |
性能和冗餘要求都很高的業務,數據庫主庫和存儲的主節點 |
Note:RAID 0不能壞盤,RAID 1容許壞50%的盤,RAID 5容許壞1塊盤,RAID 6(專門作硬件存儲)容許壞2塊盤。
RAID 10和01
磁盤分區
16字節分區表的內容
字節數 |
說明 |
1Bytes |
State:分區狀態,0=未激活,0x80=激活 |
1Bytes |
StartHead:分區起始磁頭號 |
2Bytes |
StartSC:分區起始扇區和柱面號。低字節的低6位爲扇區號,高2位爲柱面號的第9,10位;高字節爲柱面號的低8位 |
1Bytes |
Type:分區類型,如0x0B=FAT32,0x83=Linux等,00表示此項未用 |
1Bytes |
EndHead,分區結束磁頭號 |
2Bytes |
EndSC:分區結束扇區和柱面號,定義同前 |
4Bytes |
Relative:線性尋址方式下分區相對扇區地址(對於基本分區即爲絕對地址) |
4Bytes |
Sectors:分區大小(總扇區數) |
分區的本質:修改0磁頭0磁道1扇區的前446字節以後的64字節的分區表信息。
分區工具:fdisk(適合給小於2T的磁盤分區),parted(擅長給大於2T的磁盤分區,也能夠對小於2T的磁盤分區),首選fdisk,大於2T時纔去選parted。
Note:
一、 GUID磁盤分區表(GUIDPartition Table,縮寫:GPT)是一個實體硬盤的分區表的結構佈局的標準。它是可擴展固件接口(EFI)標準(被Intel用於替代我的計算機的BIOS)的一部分,被用於替代BIOS系統中的一個扇區來存儲邏輯塊地址和大小信息的主開機紀錄(MBR)分區表。由於對於那些扇區爲512字節的磁盤,MBR分區表不支持容量大於2.2TB(2.2 × 10^12字節)的分區。
二、 fdisk命令不支持gpt分區方式,parted支持gpt分區方式。
三、 parted的操做是實時的
文件系統
文件系統新增文件操做流程
一、 先肯定用戶對欲新增文件的目錄是否具備w與x的權限,如有的話才能新增;
二、 根據inode bitmap找到沒用使用的inode號碼,並將新文件的權限/屬性寫入;
三、 根據block bitmap找到沒有使用中的block號碼,並將實際的數據寫入block中,並更新inode指向數據存放地block;
四、 將剛剛寫入的inode與block數據同步更新到inode bitmap與block bitmap中,並更新superblock的內容。
在通常正常的狀況下,上述的新增操做固然能夠順利完成,但若是遇到意外狀況,就會產生superblock、inode bitmap、block bitmap這些中間數據與實際數據存放區產生不一致的狀況。
系統讀取數據流程:
一、 找到文件名
二、 找到inode,查看訪問權限
三、 找到block
四、 反覆循環1-3步驟
格式化(建立文件系統):文件系統是操做系統用於明確在存儲設備上組織文件(數據的存儲、分級組織、訪問和獲取等操做)的方法。
格式化(建立文件系統)工具:mkfs
查看系統支持的文件系統格式:ls /lib/modules/`uname -r`/kernel/fs
建立文件系統時會產生必定數量的Inode和Block:
Inode:存放文件的屬性信息(包括不限於文件大小、屬主(用戶)、屬組(用戶組)、文件權限、文件類型、修改時間,還包含指向文件實體的指針的功能(inode-block對應關係)等,但inode裏惟獨不包含文件名)。
Block:存儲實際數據(圖片、視頻,普通文件數據)。
文件屬性:
inode小結:
一、 磁盤被分區並格式化爲ext4文件系統後會生成必定數量的inode和block
二、 inode成爲索引節點,它的做用是存放文件的屬性信息以及做爲文件的索引(指向文件的實體)。
三、 ext3/4文件系統的block存放的是文件的實際內容。
四、 inode是磁盤上的一塊存儲空間,C6非啓動區inode默認大小256字節,C5是128字節。
五、 inode的表現是一串數字,不一樣的文件對應的inode(一串數字)在文件系統裏是惟一的。
六、 inode節點號相同的文件,互爲硬連接文件,能夠認爲是一個文件的不一樣入口。
七、 ext3/4文件系統下,一個文件被建立後至少要佔用一個Inode和block。
八、 ext3/4文件系統下,正常狀況一個文件佔用且只能佔用一個Inode(人和身份證的關係)。
九、 block是用來存儲實際數據的,每一個block的大小通常有1K,2L,4K幾種。其中引導分區等爲1K,其餘普通分區多爲4K(C6)。
十、 若是一個文件很大(高清大片4G),須要佔多個block,若是文件很小(0.01K),至少佔一個block,而且這個block的剩餘空間就浪費了,即沒法再存儲其餘數據了。
十一、 查看inode的大小和總量:
dumpe2fs /dev/vda1|egrep -i "block size|Inode size"
dumpe2fs /dev/vda1|egrep -i "block count|Inode count"
十二、 查看inode的總量和使用量
命令df -i
1三、 查看文件的inode信息方法
ls -li 或stat /etc/hosts
1四、 如何生成及指定Inode大小
格式化命令:mkfs.ext4 -b 2048 -I 256 /dev/sdb
block小結:
一、 磁盤要讀取數據是按block爲單位讀取的。
二、 一個文件可能佔用多個block。但每讀取一個block就會消耗一次磁盤I/O。
三、 若是要提高磁盤IO性能,那麼就要儘量一次讀取數據儘可能的多。
四、 一個block只能存放一個文件的內容,不管內容有多小。若是block默認是4K大小,那麼存放一個1K的文件,剩餘3K就不能存放別的文件,只能浪費了。
五、 block並不是越大越好。block太大對於存放小文件就會浪費磁盤空間,例如:1000K的文件,block大小爲4K,佔用250個block,若是block默認爲1K,則須要佔1000個block。訪問效率誰更高?消耗IO分別爲250次和1000次。
六、 根據業務需求,肯定默認的block大小,若是是大文件(大於16K)通常設置block大一點,小文件(小於1K)通常設置小一點。
七、 block太大,例如4K,文件都是0.1K,大量浪費磁盤空間,可是訪問性能高。
八、 block過小,例如1K,文件都是1000K,消耗大量磁盤IO。
九、 block大小設置也是格式化分區時候肯定的,命令mkfs.ext4 -b 2048 -I 256 /dev/sdb
十、 企業文件都會比較大(通常會大於4K),block設置大一些會提高磁盤訪問效率。
十一、 ext3/4文件系統(C5/6),通常都設置爲4K。