關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 [論壇 - 新手村]
正在瀏覽:
1 名遊客
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
執行「df -h」 ,可以看到預設掛載一些「tmpfs」。
但是在「/etc/fstab」並沒有設定。 剛剛提的「/etc/default/tmpfs」的機制也沒執行。 所以我現在有個疑問了,預設掛載的那些「tmpfs」,是在那設的 我猜應該跟「systemd有關」,初步看起來好像「在這」。 繼續探索... ![]() ## 探索紀錄
(我曉得為什麼我剛剛回覆提到的「tmp.mount enabled 」那一行會不見了,因為上面指令,我多加了個參數「--type=service」,也就是 「systemctl list-unit-files --type=service | grep mount」。) 顯示
執行
顯示
http://www.freedesktop.org/software/systemd/man/systemd-remount-fs.service.html http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems/ $ man systemd-remount-fs.service $ cat /lib/systemd/system/systemd-remount-fs.service https://github.com/systemd/systemd/blob/master/src/remount-fs/remount-fs.c https://github.com/systemd/systemd/blob/master/src/core/mount-setup.h https://github.com/systemd/systemd/blob/master/src/core/mount-setup.c $ man file-hierarchy $ man systemd.unit $ man tmpfiles.d
2015/5/23 23:25
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
BrLi 寫到:IanHo 寫到: 我個人覺得上面這一段,對於某些講法,我還是充滿了疑惑,所以可以請大家來探討嗎? 另外我想要確認的是,上面的說法,是針對Debian系統嗎?或是其他的「Distribution」。 ============================================================ 關於 BrLi 寫到: 真的是這樣嗎? 我一直想要了解「/dev/shm」到底是什麼作用。 有特定的作用嗎? 還是也可以任意放置檔案? 雖然我查到幾篇有提到,但我還是,不是很了解。 http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems/
http://wiki.linux.org.hk/w/Tmpfs
後來找到一個比較看得懂的了 https://wiki.debian.org/ReleaseGoals/RunDirectory?highlight=%28mount%29#Packages_using_.2Fdev.2Fshm
============================================================ 關於 BrLi 寫到: 可以告訴我,你上面的說法,在哪裡有文件可以閱讀嗎? 還是你自己測試出來的結果,在什麼系統上測試的? 以下是我在「Debian 8 (Jessie) Gnome 32位元 」上測試的數據, 我是灌在「VirtualBox」上,我不知道會不會影響。 ## 硬碟分割狀況,「SWAP」是「2G」 執行
顯示
## 記憶體狀況,「主記憶體: 1G」-「Swap: 2G」 執行
顯示
## 掛載情形 「fstab」並沒有做任何掛載「tmpfs」的設定
執行
顯示
上面的「tmpfs」加起來, 「197 + 504 + 5 + 504 + 101 + 101」 = 1412M。 加起來已經超過了主記憶體的「1G(1024M)」了。 跟你說的「(總記憶體 - 被mount成tmpfs的容量)=「/dev/shm」」,好像有出入 1024 - (197 + 5 + 504 + 101 + 101) = 1024 - 908 = 116 照你的說法來算,「/dev/shm」,應該是「116M」,可是實際顯示的是「504M」。 加上「swap」來當作「總記憶體」好了,「(1+2)*1024 = 3072」。 3072 - (197 + 5 + 504 + 101 + 101) = 3072 - 908 = 2164 照你的說法來算,「/dev/shm」,應該是「2164M」,可是實際顯示的是「504M」。 ---------------------------------------------------------- 換個狀況, 修改「fstab」,將「/tmp」掛載成「tmpfs」,並且不指定大小。
執行
顯示
上面的「tmpfs」加起來, 「197 + 504 + 5 + 504 + 504 + 101 + 101」 = 1916M。 加起來已經超過了主記憶體的「1G(1024M)」了。 跟你說的「(總記憶體 - 被mount成tmpfs的容量)=「/dev/shm」」,好像有出入 1024 - (197 + 5 + 504 + 504 + 101 + 101) = 1024 - 1412 = -338 照你的說法來算,「/dev/shm」,應該是「-338M」,可是實際顯示的是「504M」。 加上「swap」來當作「總記憶體」好了,「(1+2)*1024 = 3072」。 3072 - (197 + 5 + 504 + 504 + 101 + 101) = 3072 - 1412 = 1600 照你的說法來算,「/dev/shm」,應該是「1600M」,可是實際顯示的是「504M」。 所以對照你另一段話 BrLi 寫到: 只有一個有match的。哪就是掛載「tmpfs」預設沒指定大小的話,會是「主記憶體的一半」,(注意是掛載「tmpfs」,不是掛載「/tmp」喔) 這個在「man mount」有說明 ,結果是一致的。
---------------------------------------------------------- 再換個情況好了, 多掛載個「tmpfs」上來好了,掛到「/hi」這個路徑,一樣不指定大小。
執行
顯示
上面的「tmpfs」加起來, 「197 + 504 + 5 + 504 + 504 + 504 + 101 + 101」 = 2420M。 加起來已經超過了主記憶體的「1G(1024M)」了。 跟你說的「(總記憶體 - 被mount成tmpfs的容量)=「/dev/shm」」,好像有出入 1024 - (197 + 5 + 504 + 504 + 504 + 101 + 101) = 1024 - 1916 = -892 照你的說法來算,「/dev/shm」,應該是「-892」,可是實際顯示的是「504M」。 加上「swap」來當作「總記憶體」好了,「(1+2)*1024 = 3072」。 3072 - (197 + 5 + 504 + 504 + 504 + 101 + 101) = 3072 - 1916 = 1156 照你的說法來算,「/dev/shm」,應該是「1156M」,可是實際顯示的是「504M」。 ---------------------------------------------------------- 再換個情況好了, 下指令來重新掛載「/dev/shm」的大小好了 執行
再執行
顯示
上面的「tmpfs」加起來, 「197 + 2048 + 5 + 504 + 504 + 504 + 101 + 101」 = 3964M。 加起來已經超過了主記憶體的「1G(1024M)」了。 而且「/dev/shm」設成「2G(2048M)」,也超過了主記憶體的「1G(1024M)」了。 跟你說的「(總記憶體 - 被mount成tmpfs的容量)=「/dev/shm」」,好像有出入 1024 - (197 + 5 + 504 + 504 + 504 + 101 + 101) = 1024 - 1916 = -892 照你的說法來算,「/dev/shm」,應該是「-892M」,可是實際顯示的是「2048M」。 加上「swap」來當作「總記憶體」好了,「(1+2)*1024 = 3072」。 3072 - (197 + 5 + 504 + 504 + 504 + 101 + 101) = 3072 - 1916 = 1156 照你的說法來算,「/dev/shm」,應該是「1156M」,可是實際顯示的是「2048M」。 對照你說的一段話 BrLi 寫到: ---------------------------------------------------------- 再換個情況好了 把剛剛手動更改「/dev/shm」大小的方式,改為寫在「/etc/fstab」
執行
顯示
上面的「tmpfs」加起來, 「197 + 2048 + 5 + 504 + 504 + 504 + 101 + 101」 = 3964M。 加起來已經超過了主記憶體的「1G(1024M)」了。 而且「/dev/shm」設成「2G(2048M)」,也超過了主記憶體的「1G(1024M)」了。 跟你說的「(總記憶體 - 被mount成tmpfs的容量)=「/dev/shm」」,好像有出入 1024 - (197 + 5 + 504 + 504 + 504 + 101 + 101) = 1024 - 1916 = -892 照你的說法來算,「/dev/shm」,應該是「-892M」,可是實際顯示的是「2048M」。 加上「swap」來當作「總記憶體」好了,「(1+2)*1024 = 3072」。 3072 - (197 + 5 + 504 + 504 + 504 + 101 + 101) = 3072 - 1916 = 1156 照你的說法來算,「/dev/shm」,應該是「1156M」,可是實際顯示的是「2048M」。 對照你說的一段話 BrLi 寫到: 和對照「這篇」的一段話
和對照「這篇」的一段話
---------------------------------------------------------- 現在只有一個想法還沒有實驗,把一個大檔,丟到這些「tmpfs」,大小超過記憶體,會發生什麼事了? 先紀錄到此。有空再來測。 ---------------------------------------------------------- 另外額外一提,上面的回覆,有提到一個「tmp.mount」。
重開機,就會將「tmpfs」掛載到「/tmp」這個路徑。大小預設就是「主記憶體的一半」。 若同時「/etc/fstab」有設定的話,則是以「/etc/fstab」為準。 ----------------------------------------------------------
2015/5/24 4:27
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2010/2/9 18:20 所屬群組:
已註冊使用者 等級: 31
HP : 0 / 758
![]() |
Jessie 應該換到 systemd 上面了吧?
那 /dev/shm 就會變成由systemd自動掛載,似乎就不會受到 fstab 影響了?(待確認)(不過一般真的不需要動它的設定值) 關於/dev/shm的容量問題:之前的說法有破綻,不是加總掛載的容量大小。而是主記憶體 - {各目錄裡,檔案實際消耗的容量的和} 看起來似乎 /dev/shm 的容量政策也跟一般tmpfs一樣,是主記憶體之半(但實際可用的其實是剩下的記憶體位址) 其他使用者自訂的 tmpfs 掛載點我不清楚,不過要是把 /tmp 寫滿的話,系統會很有趣... 把 /dev/shm 寫到快滿時,舊檔案會自動清除,基本上寫不滿,除非用單一大檔
2015/5/24 11:31
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2010/2/9 18:20 所屬群組:
已註冊使用者 等級: 31
HP : 0 / 758
![]() |
samwhelp 寫到: 不需要手動啟用 tmp.mount 的 systemd 單元,這應該是系統自己會去作的事情(否則使用者開機以後怎麼會有/tmp /dev/shm/等tmpfs可以用呢?) 呃...還有,Debian 那一大串 mount service 還真的頗詭異...我只能想像那是為了相容舊版 sysinit 的東西(畢竟都指向 /dev/null) 大概是給直升的用戶用的吧?我這邊沒那些東西。 然後那該死的pulseaudio...算了...標準的「我就是規矩」的姿態,自己創標準,自己弄砸自己最厲害了 而且,小建議,systemd 勞煩到使用者的通常只有 .service 檔,其他的 target, mount 那些都應該是由 service 啟動時自己去找的東西
2015/5/24 11:39
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
BrLi 寫到:samwhelp 寫到: 我裝完「Debian 8 (Jessie) Gnome 」,預設「tmp.mount」是「disabled」的。 至於「/tmp」並沒有特別掛載「硬碟空間」或是「tmpfs」。 我安裝的時候,是讓安裝程式自己分割硬碟空間。 我的系統是只有掛載「/dev/sda1」到「/」。自然就會有一個資料夾「/tmp」,「/tmp」使用的是「硬碟」的空間「/dev/sda1」。 你可以再去看我上面回覆一開始提到的測試環境。 「/dev/shm/」則是系統自己掛載「tmpfs」上來。我在「/etc/fstab」並沒有特別去設定。 這也是上面我後來有一篇「回覆」,我在找這一段是放在哪裡。 ![]()
2015/5/24 11:54
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2010/2/9 18:20 所屬群組:
已註冊使用者 等級: 31
HP : 0 / 758
![]() |
看起來是你自己把測試環境搞爛了wwww
fstab 裡有 /tmp 的設定值的話,tmp.mount 就會被啟動了歐~ 我不認為 Debian 安裝會沒有寫 /tmp 的指令進去啦,不過假如真的這樣的話...只能說 Debian 規矩真多...
2015/5/24 11:59
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
BrLi 寫到: 我裝好就如此了,「/etc/fstab」並沒有去做設定。「tmp.mount」預設就是「disabled」。 等會再來重新安裝一次,再度確認一下。 後記 : (剛重新安裝,讓安裝程式自己分割硬碟, 「/etc/fstab」並沒有設定掛載「/tmp」,「tmp.mount」預設就是「disabled」) ============================================== BrLi 寫到: 這個我要再測試確認, 我的認知,「fstab」裡面的設定,跟「tmp.mount」是沒有連動的。 這可能要去看程式碼的實作才比較清楚。 我只就目前,我測試的結果,來做下面的推論, 他們兩個的機制是分隔的,並不會因為「fstab 裡有 /tmp 的設定值的話,tmp.mount 就會被啟動了」。 但「tmp.mount」若啟動的話,會先檢查「/etc/fstab」有沒有設定, 「/etc/fstab」有設定,就還是依照「/etc/fstab」的設定。 後記 : (用剛剛重新安裝的系統來測試, 「/etc/fstab」加入「tmpfs /tmp tmpfs defaults 0 0」,重新開機, 並不會讓「tmp.mount」變成「enabled」, 但會掛載「/tmp」) 執行
顯示
比較特別是,上面是「tmp.mount disabled」 但是執行下面的指令,顯示「active (mounted) 」,不過它有一個「loaded (/etc/fstab; disabled)」。
顯示
更多參考 * man systemd-fstab-generator * man systemd.mount ---------------------------------------------------- 於是把剛剛的「/etc/fstab」加上的那一行拿掉,重開機。 執行
顯示
執行
顯示
更多參考 $ man hier * http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems ---------------------------------------------------- 再來測試「tmp.mount」給「enable」 執行
顯示
重新開機 執行
顯示
執行
顯示
---------------------------------------------------- 再把剛剛那一行「tmpfs /tmp tmpfs defaults 0 0」加回「/etc/fstab」 重新開機 執行
顯示
執行
顯示
跟我一開始的推論有些一致,在「tmp.mount」設為「enable」,且「/etc/fstab」有設掛載「tmpfs」到「/tmp」的時候。 會以「/etc/fstab」為準。 ============================================== 至於 BrLi 寫到: 另外我昨天有看到「一篇」,「debian」後來的版本,「/tmp」預設就不使用「tmpfs」。 他說的應該是「tmpfs」提到的。
但不過這裡提到的是「/etc/defaut/tmpfs」的設定。「debian 8」看來沒有使用了。 不過我想這應該是debian的統一政策。所以其他的機制應該也會一致。 只是不知道從debian哪個版本開始,「/tmp」預設就不掛載「tmpfs」了。 這個就依照各個版本的實際狀況了。 這個網頁「tmpfs」可以設定不同版本的manual。 ============================================== 關於
所以還是要多了解Debian的系統,才會知道它的行為模式。 才不會遇到一些莫名的Why not work! 還有請依照每個版本為基準,有時候還要加上實際的環境,因為有些因素不同的話,有可能會導致行為不同。 ============================================== ![]()
2015/5/24 12:32
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
剛從「這篇」
看到一句「 該服務會被導向到 /dev/null」。 再回去翻「systemctl」。 看到
看來要再來研究一下「mask」和「unmask」的用法了 暫時紀錄到此 ![]() https://wiki.debian.org/systemd
2015/5/24 21:43
|
||||||||||
![]() |
回覆: 關於設定Debian Jessie /etc/default/tmpfs遇到的狀況 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2009/6/22 14:07 所屬群組:
已註冊使用者 等級: 8
HP : 0 / 179
![]() |
這一篇落落長是怎麼回事...
直接在 /etc/fstab 裡新增底下一行 tmpfs /tmp tmpfs nodev,nosuid,size=2560m,mode=1777 0 0 然後執行以下指令就能把 /tmp 當作 RamDisk 來用了啊 sudo mount -a
2015/5/25 0:03
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.