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

sudo mkdir -p /media/RAMDisk
sudo mount -t tmpfs -o size=2048M tmpfs /media/RAMDisk

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

df .

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

tmpfs            2097152     0   2097152   0% /media/RAMDisk

Все идет нормально.

Затем я перезагружаю Ubuntu (который перезагружает виртуальную машину, работающую через Workstation Pro).

После перезагрузки я ожидаю, что папка /media/RAMDisk не будет существовать или будет существовать как файловая система tmpfs без содержимого в ней.

Папка /media/RAMDisk существует без содержимого, но удивительно, как файловая система /dev/sda1 . Когда я делаю df . с /media/RAMDisk я вижу это:

    /dev/sda1       17413904 9577448   6928836  59% /

Теперь я мог бы легко поместить команды в мой .bashrc и заставить их запускаться и каждый раз делать правильные вещи, но мне нужно знать, что происходит.

Кроме того, может ли менеджер виртуальной машины - Workstation Pro - что-то делать?

1 ответ1

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> . Общесистемный должен быть на /dev/shm .


О нас /media/

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .