Я создаю 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
?
Этот сайтзаставляет меня верить, что вы можете запустить systemd
unit, когда данный пользователь входит в систему в первый раз, и завершить его, как только будет закрыт последний сеанс для этого пользователя. Я не очень хорошо знаком с systemd
, поэтому не могу сказать вам, как (если) вы можете сделать это с .mount
unit.
Но если вы используете systemd
, то у вас уже должен быть персональный, tmpfs
смонтированный на /run/user/<UID>
. Системный должен быть на /dev/shm
.
О/media/
Также обратите внимание, /media/
что Ubuntu использует для создания точек монтирования, например, для внешних USB-накопителей (я считаю, udisks2
что это ответственно). Они могут выглядеть так, /media/<username>/<label>
что, я думаю, /media/RAMDisk
не будет конфликтовать ни с чем. В целом я бы избегал использования этого расположения. В моих системах (Debian, Kubuntu, Raspbian, OpenWRT) я использую /mnt/<something>
и никогда не имел никаких проблем.