我需要使用C++将虚拟机安装到Linux中的目录。我想让它像一个用户(没有sudo
)。在Linux上使用C++创建虚拟硬盘
我需要在我创建的文件上调用一个应用程序,它会经常发生。将其写入HDD非常缓慢。
我发现刚:
system("mkdir /mnt/ram");
system("mount -t ramfs -o size=20m ramfs /mnt/ram");
,但说不好。我想成为一个普通用户,并且命令mount
只能作为root用户调用。 我能做什么?
我需要使用C++将虚拟机安装到Linux中的目录。我想让它像一个用户(没有sudo
)。在Linux上使用C++创建虚拟硬盘
我需要在我创建的文件上调用一个应用程序,它会经常发生。将其写入HDD非常缓慢。
我发现刚:
system("mkdir /mnt/ram");
system("mount -t ramfs -o size=20m ramfs /mnt/ram");
,但说不好。我想成为一个普通用户,并且命令mount
只能作为root用户调用。 我能做什么?
我检查if /tmp
是一个ramfs,但事实并非如此。它在HDD上创建文件。但是当我运行df -h
它输出:
rootfs 25G 9,4G 15G 40%/
devtmpfs 1,9G 0 1,9G 0% /dev
tmpfs 1,9G 1,6G 347M 83% /dev/shm
tmpfs 1,9G 1,3M 1,9G 1% /run
/dev/mapper/vg_micro-root 25G 9,4G 15G 40%/
tmpfs 1,9G 0 1,9G 0% /sys/fs/cgroup
tmpfs 1,9G 0 1,9G 0% /media
/dev/mapper/vg_micro-stack 289G 191M 274G 1% /stack
/dev/mapper/vg_micro-home 322G 40G 266G 14% /home
/dev/sda2 485M 89M 371M 20% /boot
/dev/sda1 200M 19M 182M 10% /boot/efi
这意味着tmpfs
(的ramdisk)为:/dev/shm
,/run
,/sys/fs/cgroup
和/media
。但是,其中只有一个是用于使用文件的进程之间通信的临时ramdisk。 Here是/dev/shm
的说明和用法。唯一的是tmpfs
will not grow dynamically,但为了我的目的,它将足够(20MB - 1GB)。
正如我们注意到的那样,'/ tmp'中的文件将在RAM中。不是因为它是一个tmpfs,而是因为文件缓存很懒。 – MSalters
对于用户空间ramfs解决方案,可以使用python-fuse-ramfs。
您可以将文件读取一次到内存并只处理内存中的表示。完成后,将其写回磁盘。 – MadScientist
为什么不添加一个tmpfs条目到'fstab'文件?添加'用户'标志,以便用户可以根据需要安装它。或者只是使用内存映射文件。 –
我想获得超级用户权限是唯一的方法。这可以用一些C++代码来完成,或者用setuid位给你的可执行文件root权限。 – Paolo