天天看點

linux檔案系統介紹

RHEL7.2 如何設定block

[root@localhost ~]# mkfs.xfs -b size=1024 /dev/sdb1 -f

meta-data=/dev/sdb1 isize=256 agcount=4, agsize=24064 blks

= sectsz=512 attr=2, projid32bit=1

= crc=0 finobt=0

data = bsize=1024 blocks=96256, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=0

log =internal log bsize=1024 blocks=2564, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

注:

[root@localhost ~]# mkfs.ext4 -b 1024 /dev/sdb1

Linux檔案系統由三部分組成 :檔案名,inode,block(真正存資料)

inode:檔案資料都儲存在"塊"中,那麼很顯然,我們還必須找到一個地方儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做inode,中文譯名為"索引節點"。

inode的内容

inode包含檔案的元資訊,具體來說有以下内容:

 檔案的位元組數

 檔案擁有者的User ID

 檔案的Group ID

 檔案的讀、寫、執行權限

 檔案的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指檔案内容上一次變動的時間,atime指檔案上一次打開的時間。

 連結數,即有多少檔案名指向這個inode

檔案資料block的位置

[root@localhost ~]# stat a.txt

File: ‘a.txt’

Size: 0 Blocks: 0 IO Block: 4096 regular empty file

Device: fd00h/64768d Inode: 36433003 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2016-02-24 08:45:42.182854288 -0500

Modify: 2016-02-24 08:45:42.182854288 -0500

Change: 2016-02-24 08:45:42.182854288 -0500

[root@localhost ~]# ll a.txt

-rw-r--r-- 1 root root 0 Feb 24 08:45 a.txt

inode的大小

inode也會消耗硬碟空間,是以硬碟格式化的時候,作業系統自動将硬碟分成兩個區域。一個是資料區,存放檔案資料;另一個是inode區(inode table),存放inode所包含的資訊。

16G

1 G = 1024 MB =1024 1024 KB

1 G = 1000 MB =1000 1000 KB

檢視每個硬碟分區的inode總數和已經使用的數量,可以使用df指令。

[root@localhost ~]# df -i

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/mapper/rhel-root 10485760 138134 10347626 2% /

devtmpfs 500087 404 499683 1% /dev

tmpfs 503976 6 503970 1% /dev/shm

tmpfs 503976 563 503413 1% /run

tmpfs 503976 13 503963 1% /sys/fs/cgroup

/dev/sr0 0 0 0 - /mnt

/dev/sda1 204800 327 204473 1% /boot

tmpfs 503976 17 503959 1% /run/user/42

tmpfs 503976 1 503975 1% /run/user/0

使用ls -i指令,可以看到檔案名對應的inode号碼:

[root@localhost ~]# ls -i a.txt

36433003 a.txt

檢視目錄的inode号

[root@localhost ~]# ll -di /etc/

16777345 drwxr-xr-x. 136 root root 8192 Feb 24 08:03 /etc/

擴充:linux中ctime,mtime,atime的差別

ctime:“改變時間(change time)”

mtime :“修改時間(modification time)”

改變和修改之間的差別在于是改檔案的屬性還是更改它的内容。chmod a-w myfile,那麼這是一個改變;

echo foo >> myfile,那麼這是一個修改。

改變是檔案的索引節點發生了改變;修改是文本本身的内容發生了變化。

atime :“通路時間(access time)”

通路時間是檔案最後一次被讀取的時間。是以閱讀一個檔案會更新它的通路時間。但是它的改變時間和修改時間并沒有變。

ls -lc filename         列出檔案的 ctime

ls -lu filename         列出檔案的 atime

ls -l filename          列出檔案的 mtime 

執行個體:

web伺服器中小檔案很多,導緻硬碟有空間,但無法建立檔案。

inode數被用光了。

/dev/mapper/rhel-root 10485760 138138 10347622 2% /

本文轉自信自己belive51CTO部落格,原文連結: http://blog.51cto.com/11638205/2048928,如需轉載請自行聯系原作者

繼續閱讀