新建乙個空檔案占用多少磁碟空間?

2022-07-09 20:06:09 字數 1631 閱讀 2571

今天我們來思考乙個簡單的問題。在linux下你用touch命令新建乙個空檔案:

touch empty_file.txt
操作完成後,是否要消耗掉我們的一些磁碟空間?需要的話,大概能消耗多少?嗯,是的,這個問題簡單的超乎你的想象,但是不知道你否能給你自己乙個滿意的答案。

我覺得可能先丟開核心原理,直接動手操作來實驗更有意思一些。你一定知道ls這個命令你可以檢視檔案大小,那麼讓我們就用它來看一下。

# touch abcdefghigklmn.txt  

# ls -l

total 0

-rw-r--r-- 1 root root 0 aug 17 17:49 empty.file

額,ls命令告訴我這個空檔案占用的是0。 檔案的大小確實是0,因為我們還沒有為該檔案寫入任何內容。但是我們現在要思考的是,乙個空檔案是否占用磁碟空間。所以直覺告訴我們這絕對不可能,磁碟上多出來乙個檔案,怎麼可能一點空間開銷都沒有!

為了解開這個謎底,還需要借助df命令。輸入df –i

# df -i

filesystem inodes iused ifree iuse% mounted on

......

/dev/sdb1 2147361984 12785019 2134576965 1% /search

這個輸出幫我們展示了我們檔案系統中inode的使用情況。注意iused是12785019。我們繼續新建乙個空檔案

# touch empty_file2.txt

df -i

filesystem inodes iused ifree iuse% mounted on

......

/dev/sdb1 2147361984 12785020 2134576964 1% /search

[@bjzw_46_76 temp]#

這下注意iused變成了12785020。

哈哈,我們的乙個結論就出來了。新建乙個空檔案會占用乙個inode

struct ext2_inode ;
這個結構體就是我們司空見慣的資料夾。沒錯,檔名是存在其所屬的資料夾資料結構中的,就是其中的char name字段。和檔名一起,資料夾裡還記錄了該檔案的inode等資訊。

所以,看起來新建乙個空檔案而已,只要你想挖,真的能挖出很多知識的。最後分享乙個我們團隊裡同學遇到的乙個故障。我們的一台離線任務機直接歇菜了,重啟後排查原因是inode被消耗光了。再追查發現乙個程序建立了太多的空日誌檔案。雖然檔案都是空檔案,但是inode卻被浪費光了。後來讓負責的同學修改了建立日誌檔案的邏輯,刪掉了多出來的空檔案,該機器恢復正常。

開發內功修煉之硬碟篇**:

新建乙個空檔案占用多少磁碟空間?

今天我們來思考乙個簡單的問題。在linux下你用touch命令新建乙個空檔案,touch empty file.txt操作完成後,是否要消耗掉我們的一些磁碟空間?需要的話,大概能消耗多少?嗯,是的,這個問題簡單的超乎你的想象,但是不知道你否能給你自己乙個滿意的答案。我覺得可能先丟開核心原理,直接動手...

Linux 實現定時檔案占用磁碟空間大小操作方法

開啟定時任務編輯,cent 預設使用vim直接開啟。ubutun如果裝了多種編輯器第一次開啟的時候是指定編輯器的操作。3 1 sh root shell monitor.sh 將這一行新增進檔案中。表示每隔一分鐘執行一次 sh root shell monitor.sh 命令,具體更多的定時格式可以...

Git 如何上傳乙個空資料夾

mkdir aa git status 發現git根本沒發現新建了乙個空資料夾,為何git要忽略空資料夾呢?有的說git開發者不喜歡空資料夾,有的人說空資料夾沒有什麼實際意義,還有的人說空資料夾的話用某些伺服器比如ftp會報錯,總之git不支援空資料夾的提交。解決提交空資料夾的辦法?ignore e...