Jump to content
xisto Community
qwijibow

How-to Add More Swap Without Having To Re-partiton

Recommended Posts

If you dont have nough mmory, (ram + swap) there are 3 things you can do.
the first 2 are the most obviouse,

1) buy more memory.
2) use knoppix and qtparted to re-size your parttions
3) the little known easy method.

You may not know, but linux has a loop driver in the /dev/ folder that allows a file on the hard disk to act as a disk drive / disk partiton. you can use it in exactly the same way your would use /dev/hda1 or /dev/cdrom.

here is how to use it to quickly add extra virtual memory.

before we start, make sure your loop driver is loaded... have a look in the /dev/ folder for files named loopX where X is a number between 0 and 7, possably by using the ommand "ls /dev/ | grep loop"
if its not there, then as root run "modprobe loop" and look again.

all these commands need to be done as root user.
to become root user run the command "su -" and enter the root password.
when you have finished, be sure to run "exit" to giveup the root privilages.

first, create the file that will contain the virtual disk drive.

dd if=/dev/zero of=/SWAP.img bs=1M count=256
the abouve command will copy 256 * 1Megabyte from the file /dev/zero into the file /SWAP.img.
/dev/zero is a pretend file, which dontains an infinite number of "0"'s for more info, read "man dd"
replace 256 with the extra amount of memory you require.

secondly, we need to setup the loop driver, to create a /dev/ interface to the file.
their are 8 loop devices, somtimes the first one or 2 is in use, so to be save, lets use the 6th.

losetup /dev/loop5 /SWAP.img

now /dev/loop5 will act as a disk drive, and save all its information to the /SWAP.img file automatically.
for more information about losetup, read "man losetup" (you can delete a loop device like so "losetup -d /dev/loopX" where X is the loop number.

thirdly... we need to format the disk as swap.
mkswap /dev/loop5

finally, activate the swap
swapon /dev/loop5

if you ever need to remove the swap file, first de-activate, then delete the interface, then delete the file.
swapoff /dev/loop5losetup -d /dev/loop5rm /SWAP.img

to make the added swap activate automatically add the following lines to the end or your rc.local startup script. this script is in different places for different distro's but i will be somwhere in your /etc/ folder.
most likely /etc/init.d/rc.local

losetup /dev/loop5 /SWAP.imgswapon /dev/loop5

Share this post


Link to post
Share on other sites

I don't know that by mounting a virtual device you could extend you swap. It's a great an easy solution if you do not want to re-partition your drive. But what about performance? Because one of the advantages of Unix systems over Windows is that "virtual memory" is stored in an individual and exclusive partition (swap) and Windows stores it in the same partition of the system (usually C:).The advantage of having an exclusive partition for virtual memory is that the swapped pages do not need to "compete" for allocation and virtual memory is faster, may be in this solution you propose the performance is similar as to having the complete virtual memory as one unit because I see that you pre-allocate this memory file.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.