在 Linux 上製作 RAM 磁碟,重新啟動後不會更改檔案系統

在 Linux 上製作 RAM 磁碟,重新啟動後不會更改檔案系統

我使用以下命令在 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

調查usernoauto選項(請參閱 參考資料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>,我從未遇到任何問題。

相關內容