我使用以下命令在 Ubuntu 16.10(在虛擬機器中運行)上建立 RAM 磁碟
sudo mkdir -p /media/RAMDisk sudo mount -t tmpfs -o size=2048M tmpfs /media/RAMDisk
之後,如果我進入 RAMDisk 並執行以下操作
df 。
我得到以下內容
tmpfs 2097152 0 2097152 0% /媒體/RAMDisk
到目前為止,一切都很好。
然後我重新啟動 Ubuntu(這會重新啟動透過 Workstation Pro 運行的虛擬機器)。
重新啟動後,我希望該/media/RAMDisk
資料夾根本不存在,或者作為一個存在tmpfs
文件系統中沒有任何內容。
該/media/RAMDisk
資料夾確實存在,沒有任何內容,但令人驚訝的是作為一個/dev/sda1
檔案系統。當我使用 時df .
,/media/RAMDisk
我看到這個:
/dev/sda1 17413904 9577448 6928836 59% /
現在,我可以輕鬆地將命令放入我的命令中.bashrc
並讓它們每次運行並執行正確的操作,但我需要知道發生了什麼。
另外,我的虛擬機器管理器——Workstation Pro——可以做些什麼嗎?
答案1
到底是怎麼回事?
沒什麼不尋常的。
df /media/RAMDisk
,當它引用時/dev/sda1
,告訴您當前目錄屬於/dev/sda1
安裝在其上的檔案系統/
。
這是因為您的命令的效果mount
不是永久性的,它不會在重新啟動後繼續存在。另一方面,該mkdir
命令在 的檔案系統內建立了目錄/dev/sda1
,並且該檔案系統在每次重新啟動後都會安裝,因此目錄本身仍然存在,但作為檔案系統的一部分/dev/sda1
。
您需要RAMDisk
在每次啟動後(或啟動時)以某種方式進行安裝。
如何安裝?
mount
從內部逃跑.bashrc
不是一個好主意,因為該文件可能會被多次獲取在單一會話期間。既然你sudo
無論如何都需要,最好使用/etc/rc.local
作業系統啟動時執行一次的命令。
但更好的方法可能是將以下行添加到您的/etc/fstab
:
tmpfs /media/RAMDisk tmpfs defaults,nosuid,nodev,size=2048M 0 0
調查user
和noauto
選項(請參閱 參考資料man 5 fstab
),也許您想使用它們並mount /media/RAMDisk
僅按需調用。
systemd
?
這個網站讓我相信您可以systemd
在給定用戶第一次登入時運行一個單元,並在該用戶的最後一個會話關閉後立即終止它。我不太熟悉systemd
,所以我無法告訴你如何(如果)使用.mount
單位來做到這一點。
但如果你使用的systemd
話,你應該已經tmpfs
在/run/user/<UID>
.系統範圍的應該是 on /dev/shm
。
關於/media/
另請注意,/media/
Ubuntu 使用它來建立掛載點,例如用於外部 USB 驅動器(我相信udisks2
是負責任的)。它們可能看起來像/media/<username>/<label>
這樣,所以我想/media/RAMDisk
不會與任何東西發生碰撞。一般來說,我會避免使用這個位置。在我使用的系統(Debian、Kubuntu、Raspbian、OpenWRT)中/mnt/<something>
,我從未遇到任何問題。