試圖了解 Linux 配額,數據儲存在哪裡?
因此,Linux 配額系統的所有教程和文件都讓我感到困惑。對於每個啟用/啟用配額的文件系統,實際配額資訊儲存在哪裡?它是文件系統元數據還是在文件中?
假設使用者 foo 在 /home 上創建了一個新文件。核心如何確定使用者 foo 是否低於其硬限制?核心是否必須每次都統計該文件系統上的配額資訊,或者它是在超級塊中還是在其他地方?
據我了解,核心會查閱 aquota.user 文件以獲取實際規則,但目前配額使用數據儲存在哪裡?這可以使用 repquota 等以外的任何工具查看嗎?蒂亞!!
更新:
謝謝您的幫助。我已經讀過那個迷你HOWTO。我很清楚使用者空間工具的使用。我不清楚的是使用數據是否也存在於儲存每個使用者限制的文件中,而您的回答是肯定的。
據我所知,rc.sysinit 在啟動時執行 quotacheck 和 quotaon。quotacheck 程序分析文件系統,更新 aquota.* 文件。然後它使用 quota.h 和 quotactl() 系統呼叫來通知核心配額資訊。
從這一點開始,核心散列該資訊並隨著更改發生而增加/減少配額統計資訊。關機後,init.d/halt 腳本會在解除安裝文件系統之前執行 quotaoff 命令。quotaoff 命令似乎不會使用核心在記憶體中的資訊來更新 aquota.* 文件。我這樣說是因為 aquota.user 文件的 {a,c,m} 次僅在系統重新啟動或手動執行 quotacheck 命令時更新。看來 - 據我所知 - 核心只是在關機時將其最新的使用數據放在地板上。此資訊永遠不會用於更新 aquota.* 文件。它們在啟動期間由 quotacheck(rc.sysinit) 更新。對我來說似乎很愚蠢,因為核心已經收集了更新的資訊。所以… 總之,我對這些方法仍然不完全清楚。;)
對於每個啟用/啟用配額的文件系統,實際配額資訊儲存在哪裡?
參見quotaon 聯機幫助頁。在文件系統根目錄中會有名為 .quota* 的文件,其中包含必要的資訊(.quota.user、.quota.group、.quota.ops.user、.quota.ops.group)。
假設使用者 foo 在 /home 上創建了一個新文件。核心如何確定使用者 foo 是否低於其硬限制?核心是否必須每次都統計該文件系統上的配額資訊,或者它是在超級塊中還是在其他地方?
不,核心會持續跟踪 fs 的使用情況,因此它不需要在每次分配時重新計算(這將非常昂貴)。啟用配額後,它將執行一次計算,然後更新。初始計算由quotacheck執行。
據我了解,核心會查閱 aquota.user 文件以獲取實際規則,但目前配額使用數據儲存在哪裡?這可以使用 repquota 等以外的任何工具查看嗎?蒂亞!!
配額資訊儲存在 .quota* 中(見上文)。除了repquota,我不知道有任何工具可以生成配額使用報告。但是您應該能夠使用/腳本 repquota 生成大多數報告。或者你將不得不破解原始碼……
順便提一句:
Quota mini-HOWTO很好地概述了 Linux 配額系統。它有點過時了,但基本面沒有太大變化。