2014-11-06 673 views
3
ll /srv/node/dcodxx/test.sh 
-rw-r--r--. 1 root root 7 Nov 5 11:18 /srv/node/dcodxx/test.sh 

文件大小以字節爲單位顯示。該文件存儲在一個塊大小爲4096字節的xfs文件系統中。Xfs文件大小,inode大小和塊大小

xfs_info /srv/node/sdaxx/ 
meta-data=/dev/sda    isize=256 agcount=32, agsize=7630958 blks 
     =      sectsz=4096 attr=2, projid32bit=0 
data  =      bsize=4096 blocks=244190646, imaxpct=25 
     =      sunit=0  swidth=0 blks 
naming =version 2    bsize=4096 ascii-ci=0 
log  =internal    bsize=4096 blocks=119233, version=2 
     =      sectsz=4096 sunit=1 blks, lazy-count=1 
realtime =none     extsz=4096 blocks=0, rtextents=0 

這是否意味着一個塊可以容納多個文件,如果不是其餘字節(4096-7)會發生什麼? 另外,如果保存在與文件相同的塊中,爲存儲的inode保留256個字節,那麼文件大小是不是應該更大(256 + 7)?

回答

1

這是否意味着塊可以容納多個文件,如果不是其餘字節(4096-7)會發生什麼?

塊不能包含多個文件。如果文件大於一個塊,則使用多個塊。

像XFS這樣的現代文件系統具有稱爲「inline」的功能,其中足夠小的文件(不超過60個字節)可以存儲在inode中,用於存儲指向塊的空間。

其中是爲存儲的inode保留的256個字節,如果與文件存儲在同一個塊中,文件大小是不是應該更大(256 + 7)?

索引節點信息存儲在索引節點表中。

+0

我不認爲XFS實際上內嵌小文件。 http://xfs.org/index.php/Unfinished_work#Inline_data_in_inodes。 reiserfs可以選擇將多個小文件打包到同一個塊中。實際上在大多數文件系統中發生的是內部碎片(http://en.wikipedia.org/wiki/Fragmentation_%28computing%29#Internal_fragmentation)(除非文件大小是FS塊大小的倍數)。 – 2015-03-02 07:37:47

+0

它也會更多有用的說,inode被拼裝成塊。任何地方都沒有一個「inode表」。據我瞭解,一塊inode可以分配到任何地方。 (這是新crc = 1磁盤格式的動機的一部分,https://www.kernel.org/doc/Documentation/filesystems/xfs-self-describing-metadata.txt) – 2015-03-02 07:41:10

3

文件數據以文件系統塊大小爲單位進行存儲,XFS上的多個文件當前不能共享塊。所使用的磁盤空間總是文件中的字節數,四捨五入到下一個塊大小 - 一個1字節的文件將在4k塊大小的文件系統上消耗4k的磁盤空間。

inode本身包含文件元數據,例如大小,時間戳,擴展數據等 - 並且在xfs上它還可以包含擴展屬性信息。

磁盤inode與文件數據塊是分開的,並且無論使用的元數據量如何,在256字節inode的文件系統上總是會消耗256個字節。如果需要多於256個字節來存儲附加擴展信息或擴展屬性數據,則會分配額外的文件系統塊大小的元數據塊。