最小檔案系統分析(aufs c)

2021-10-03 13:56:32 字數 1984 閱讀 2418

參考:

1、檔案系統的目的是用來管理檔案的。

2、檔案系統管理檔案的方式: struct super_block,  struct vfsmount。

3、檔案的組織方式:struct inode,struct dentry。

4、檔案系統加入(登記)到核心:

4.1 register_filesystem(&au_fs_type); /* au_fs_type:檔案系統的型別,如果是sys,則引數為:sysfs_fs_type */

static struct file_system_type au_fs_type = ;

static struct file_system_type sysfs_fs_type = ;

實際上register_filesystem()只是根據傳入引數的檔案系統名字(aufs)在檔案(fs/filesystems.c)的全域性變數static struct file_system_type *file_systems;中查詢相同名字的檔案系統型別,如果沒有就新增到全域性鍊錶file_systems的結尾。

4.2 kern_mount(&au_fs_type);

這個函式是vfs_kern_mount()函式的封裝。主要實現vfsmount結構、super_block結構的建立,同時實現根結點的inode和dentry的建立,並且用inode和dentry,填充super_block。以下是對應的建立函式:

vfsmount:alloc_vfsmnt(name);

super_block:static struct super_block *alloc_super(struct file_system_type *type)

inode:struct inode *new_inode(struct super_block *sb)

dentry:truct dentry *d_alloc(struct dentry * parent, const struct qstr *name) /* 建立新的dentry */

5、檔案的建立。

目錄也被當作檔案來建立。

/* 建立檔案的inode和dentry結構 */                           

static int aufs_create_by_name(const char *name, mode_t mode, struct dentry *parent,  struct dentry **dentry)

第一步:判斷父目錄是否為空,如果為空,則以根目錄為父目錄建立檔案,(檔案是用dentry和inode代表的)就是建立dentry和inode。

第二步:在父目錄中查詢是否有同名的檔案。不存在就建立乙個。

核心中的dentry結構都根據hash值鏈結到眾多的hash鍊錶中,而這些hash鍊錶的頭儲存在dentry_hashtable中。

在查詢檔案的過程中, 會根據檔案的hash和parent在dentry_hashtable中獲得hash鍊錶的煉表頭,然後遍歷這個煉表頭,找到匹配的dentry。

如果找不到,則建立乙個dentry。

6、檔案系統的掛載過程:

static int attach_recursive_mnt(struct vfsmount *source_mnt,  

____________struct nameidata *nd, struct nameidata *parent_nd)

static void commit_tree(struct vfsmount *mnt)

list_add_tail(&mnt->mnt_hash, mount_hashtable +     

____________hash(parent, mnt->mnt_mountpoint));     /* 新增檔案系統的vfsmount物件連線到全域性的hash表(mount_hashtable)中 */

list_add_tail(&mnt->mnt_child, &parent->mnt_mounts); /* 同時也鏈結到父vfsmount物件的煉表頭 */

hadoop檔案系統分析

hadoop分布式檔案系統 架構和設計 為了容錯,檔案的所有資料塊都會有副本。每個檔案的資料塊大小和副本係數都是可配置的。應用程式可以指定某個檔案的副本數目。副本係數可以在檔案建立的時候指定,也可以在之後改變。通過乙個機架感知的過程,namenode可以確定每個datanode所屬的機架id。乙個簡...

Yaffs 檔案系統分析

1 yaffs檔案系統結構 1.1 簡介 1.1.1 應用場合 yaffs yet another flash file system 檔案系統是專門針對nand快閃儲存器設計的嵌入式檔案系統,目前有yaffs和yaffs2兩個版本,兩個版本的主要區別之一在於yaffs2能夠更好的支援大容量的nan...

檔案 FAT檔案系統分析

一 硬碟儲存結構 硬碟總體儲存圖 採用希捷硬碟120g,winhex檢視,主引導記錄mbr如下 硬碟分割槽表,64位元組,分四個分割槽,每個分割槽佔16位。擴充套件分割槽,就像加入了乙個u盤,第乙個扇區512位元組,為分割槽引導記錄dbr,還有其他。二 fat檔案儲存基本原理 fat表就是乙個簇號的...