6.2. Creating a swap space
A swap file is an ordinary file; it is in no way special
to the kernel. The only thing that matters to the kernel is that it
has no holes, and that it is prepared for use with
mkswap. It must reside on a local disk, however;
it can't reside in a filesystem that has been mounted
over NFS due to implementation reasons.
The bit about holes is important. The swap file reserves
the disk space so that the kernel can quickly swap out a page
without having to go through all the things that are necessary
when allocating a disk sector to a file. The kernel merely
uses any sectors that have already been allocated to the file.
Because a hole in a file means that there are no disk sectors
allocated (for that place in the file), it is not good for the
kernel to try to use them.
One good way to create the swap file without holes is through
the following command:
$ dd if=/dev/zero of=/extra-swap bs=1024
count=1024
1024+0 records in
1024+0 records out
$
|
where
/extra-swap is the name of the swap
file and the size of is given after the
count=.
It is best for the size to be a multiple of 4, because the
kernel writes out
memory pages, which
are 4 kilobytes in size. If the size is not a multiple of 4,
the last couple of kilobytes may be unused.
A swap partition is also not special in any way. You create
it just like any other partition; the only difference is that
it is used as a raw partition, that is, it will not contain any
filesystem at all. It is a good idea to mark swap partitions
as type 82 (Linux swap); this will the make partition listings
clearer, even though it is not strictly necessary to the
kernel.
After you have created a swap file or a swap partition, you
need to write a signature to its beginning; this contains some
administrative information and is used by the kernel. The
command to do this is mkswap, used like this:
$ mkswap /extra-swap 1024
Setting up swapspace, size = 1044480
bytes
$
|
Note that the swap space is still not in use yet: it exists,
but the kernel does not use it to provide virtual memory.
You should be very careful when using
mkswap, since it does not check that the
file or partition isn't used for anything else. You
can easily overwrite important files and partitions with
mkswap! Fortunately, you should
only need to use mkswap when you install
your system.
The Linux memory manager limits the size of each swap space to
2 GB. You can, however, use up to
8 swap spaces simultaneously, for a total of 16GB.