2012-09-27 59 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