Mount
如何防止 Linux 配額計算綁定掛載兩次
如果您在 Linux 機器上並且有一個啟動了使用者配額的文件系統,您可以通過以下命令檢查
quotacheck
多次計算文件是否可以通過綁定掛載訪問(如果這些綁定掛載的源和目標都駐留在訪問的文件系統上quotacheck
):# we assume /home has active user-quota repquota /home # check used quota before changes mkdir /home/test_user/dir mkdir /home/other_dir mount -o bind /home/test_user/dir /home/other_dir head -c1000000 /dev/urandom > /home/test_user/dir/test chown test_user /home/test_user/dir/test repquota /home # repquota now reports 1000000 bytes more for test_user # umount /home/test_user/dir # possible solution quotaoff -a quotacheck -vuam quotaon -a # mount -o bind /home/test_user/dir /home/other_dir # possible solution repquota /home # repquota now reports 2000000 bytes more for test_user
我能想到的唯一解決方案是
umount
在執行之前對所有綁定掛載的目錄,quotacheck
然後重新掛載它們。**還有其他解決方案嗎?**從綁定掛載的目錄中刪除usrquota
- 選項似乎不起作用(並不奇怪,不要費心解釋它)。quotacheck
並且似乎不可能排除某些目錄被訪問(手冊頁沒有提到任何相關選項)。順便說一句,我在 Debian 8(核心 3.16.0,配額 4.01)上對此進行了測試。澄清:除了綁定掛載之外,下面的所有內容都
/home
屬於一個文件系統。
事實證明,quotacheck 中有一個錯誤。我送出了一個更新檔來修復它,但不知道何時(甚至是否)包含該更新檔的新版本配額會發布。直接將文件附加到我的答案似乎是不可能的,所以我不會在這裡發布更新檔。但如果有人感興趣,請發表評論,我會將更新檔作為程式碼塊發布。
編輯:我的更新檔沒有被接受,因為它離題了。
EXT2_DIRECT
當使用該選項編譯並在 ext 文件系統上使用時,quotacheck 已經能夠在存在綁定掛載的情況下正常工作。不幸的是,一個錯誤阻止了它在 ext4 文件系統上工作,作者現在已經修復了這個錯誤(在 git://git.code.sf.net/p/linuxquota/code 中送出 2b3795805c8d1bd8873b046508777fa6e9a5c83d )。