Создайте RAM-диск на Linux, который не меняет файловую систему после перезагрузки

Создайте RAM-диск на Linux, который не меняет файловую систему после перезагрузки

Я создаю RAM-диск в Ubuntu 16.10 (работающий внутри виртуальной машины) с помощью следующих команд

sudo mkdir -p /media/RAMDisk
sudo mount -t tmpfs -o размер=2048M tmpfs /media/RAMDisk

После этого, если я зайду в RAMDisk и сделаю это

дф.

Я получаю следующее

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?

Этот сайтзаставляет меня верить, что вы можете запустить systemdunit, когда данный пользователь входит в систему в первый раз, и завершить его, как только будет закрыт последний сеанс для этого пользователя. Я не очень хорошо знаком с systemd, поэтому не могу сказать вам, как (если) вы можете сделать это с .mountunit.

Но если вы используете systemd, то у вас уже должен быть персональный, tmpfsсмонтированный на /run/user/<UID>. Системный должен быть на /dev/shm.


О/media/

Также обратите внимание, /media/что Ubuntu использует для создания точек монтирования, например, для внешних USB-накопителей (я считаю, udisks2что это ответственно). Они могут выглядеть так, /media/<username>/<label>что, я думаю, /media/RAMDiskне будет конфликтовать ни с чем. В целом я бы избегал использования этого расположения. В моих системах (Debian, Kubuntu, Raspbian, OpenWRT) я использую /mnt/<something>и никогда не имел никаких проблем.

Связанный контент