參考:
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表就是乙個簇號的...