2012-09-27 28 views
4

我需要使用C++将虚拟机安装到Linux中的目录。我想让它像一个用户(没有sudo)。在Linux上使用C++创建虚拟硬盘

我需要在我创建的文件上调用一个应用程序,它会经常发生。将其写入HDD非常缓慢。

我发现刚:

system("mkdir /mnt/ram"); 
system("mount -t ramfs -o size=20m ramfs /mnt/ram"); 

,但说不好。我想成为一个普通用户,并且命令mount只能作为root用户调用。 我能做什么?

+1

您可以将文件读取一次到内存并只处理内存中的表示。完成后,将其写回磁盘。 – MadScientist

+0

为什么不添加一个tmpfs条目到'fstab'文件?添加'用户'标志,以便用户可以根据需要安装它。或者只是使用内存映射文件。 –

+0

我想获得超级用户权限是唯一的方法。这可以用一些C++代码来完成,或者用setuid位给你的可执行文件root权限。 – Paolo

回答

-1

我检查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的说明和用法。唯一的是tmpfswill not grow dynamically,但为了我的目的,它将足够(20MB - 1GB)。

+0

正如我们注意到的那样,'/ tmp'中的文件将在RAM中。不是因为它是一个tmpfs,而是因为文件缓存很懒。 – MSalters