Mount

如何防止 Linux 配額計算綁定掛載兩次

  • April 29, 2019

如果您在 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 )。

引用自:https://serverfault.com/questions/779838