InnoDB 檔案系統管理

2022-04-13 08:38:55 字數 2720 閱讀 4318

1. linux檔案系統

檔案系統的層次結構

linux vfs(virtual file system 又稱 virtual filesystem switch),即虛擬檔案系統。vfs 作為乙個通用的檔案系統,抽象了檔案系統的四個基本概念:檔案、目錄項 (dentry)、索引節點 (inode) 及掛載點,其在核心中為使用者空間層的檔案系統提供統一的api訪問介面。vfs 實現了 open()、read() 等系統調並使得 cp 等使用者空間程式可跨檔案系統。

linux檔案系統基本概念

1扇區(sector)=512位元組(byte)

1資料塊(block)=8扇區=4kb(mkfs時指定,預設4kb,可設定為1kb - 64kb)

(如ext2、ext3、ext4等)將硬碟分割槽時會劃分出目錄塊、inode table區塊和data block資料區域。乙個檔案由乙個目錄項、inode和資料區域塊組成。inode包含檔案的屬性(如讀寫屬性、owner等,以及指向資料塊的指標),資料區域塊則是檔案內容。當檢視某個檔案時,會先從inode table中查出檔案屬性及資料存放點,再從資料塊中讀取資料。

檔案儲存結構大概如下:

1)、superblock:記錄此 filesystem 的整體資訊,包括inode/block的總量、使用量、剩餘量, 以及檔案系統的格式與是否已被掛載、掛載的時間等相關資訊。

2)、inode table:記錄檔案的屬性資訊,可以使用stat命令檢視inode資訊。

3)、data block:實際檔案的內容,如果乙個檔案大於乙個塊時候,那麼將占用多個block,但是乙個塊只能存放乙個檔案。

4)、data block bitmap:記錄哪些block是未使用的,哪些是已被使用,1:已使用,0:未使用。

5)、inode bitmap:記錄哪些inode節點是未使用的,哪些是已被使用,1:已使用,0:未使用。

檔案系統如何訪問檔案的:

1)、根據檔名,通過directory裡的對應關係,找到檔案對應的inodenumber

2)、再根據inodenumber讀取到檔案的inodetable

3)、再根據inodetable中的pointer讀取到相應的blocks

這裡有乙個重要的內容,就是directory,他不是我們通常說的目錄,而是乙個列表,記錄了乙個檔案/目錄名稱對應的inodenumber。

2. innodb的儲存結構

innodb 表空間是在檔案系統之上又構建的一層邏輯儲存的檔案管理系統。除了redo日誌外,表空間,undo都以page的形式管理。普遍使用的btree結構來組織資料。只是針對不同的block的應用場景會分配不同的page型別。

innodb 最小讀寫單位是 page,page 採用預設的 16k。

物理檔案分類,有日誌檔案、主系統表空間檔案ibdata、undo tablespace檔案、臨時表空間檔案、使用者表空間。

2.1 表空間(tablespace)的一些基礎知識

表空間是分段管理的,假如有乙個表只有乙個主鍵索引,那麼這個表就有兩個段,乙個是內部節點段,即非葉子節點段,還有乙個是葉子段,即儲存資料的節點.如果乙個表除了主鍵索引,還有乙個輔助索引,那麼這個這個表空間有四個段,主鍵內部節點段,主鍵葉子節點段,輔助索引內部節點段,輔助索引葉子節點段.innodb儲存引擎有有一張圖很好展示了段,區,頁的關係:

2.2 innodb page結構

乙個表空間檔案都是由乙個乙個16kb的頁組成,每個頁都有乙個32位序號(page number),通常稱為偏移量,即離表空間初始位置的偏移量.因為每個頁大小為16kb,所以第0個頁的偏移量為0,第乙個頁的偏移量為16384等等.因為32位的最大值為2^32,所以乙個表空間的最大值為2^32*16kb=64tb。

ibd檔案中真正構建起使用者資料的結構是btree,在你建立乙個表時,已經基於顯式或隱式定義的主鍵構建了乙個btree,其葉子節點上記錄了行的全部列資料(加上事務id列及回滾段指標列);如果你在表上建立了二級索引,其葉子節點儲存了鍵值加上聚集索引鍵值。

每個btree使用兩個segment來管理資料頁,乙個管理葉子節點,乙個管理非葉子節點,每個segment在inode page中存在乙個記錄項,在btree的root page中記錄了兩個segment資訊。

當我們需要開啟一張表時,需要從ibdata的資料詞典表中load元資料資訊,其中sys_indexes系統表中記錄了表,索引,及索引根頁對應的page no(dict_fld__sys_indexes__page_no),進而找到btree根page,就可以對整個使用者資料btree進行操作。

上圖描述了表空間、inode頁面、inode、段、簇、頁面之間的關係,也是innodb檔案系統管理架構圖。

ibd檔案解析工具

參考

檔案系統管理

1 檔案系統資訊 2 建立檔案系統 3 掛載和解除安裝檔案系統 4 刪除檔案系統 檔案系統資訊 目前啊,在linux作業系統中,最常用的的檔案系統主要有ext2 ext3和ext4。那麼,怎檢視呢?df 檢視檔案系統資訊 df h 更明了檢視檔案系統資訊 對於,系統開機後自動掛載的所有檔案系統,都可...

檔案系統管理

分割槽型別 主分割槽 總共最多只能分四個 擴充套件分割槽 只能有乙個,也算主分割槽的一種,也就是說主分割槽加擴充套件分割槽最多有四個。但是擴充套件分割槽不能儲存資料和格式化,必須再劃分成邏輯分割槽才能使用。邏輯分割槽 邏輯分割槽是再擴充套件分割槽中劃分的,如果是ide硬碟,linux最多支援59個邏...

檔案系統管理

samba samba服務簡介 samba是在linux和unix系統上實現smb協議的乙個免費軟體,由伺服器及客戶端程式構成 samba基本資訊 服務啟動指令碼 smb.service 主配置目錄 etc samba 主配置檔案 etc samba.conf 安全上下文 samba share t...