Running out of disk space
Well my good ‘friend’ with their inappropriately provisioned Linux VPS Â that runs UML (User Mode Linux) inside of it, ran into an issue where he needed to add a second virtual disk device.
Creating the disk file is no big issue, adding a whopping 1GB is pretty simple!
Using the ‘dd’ command it is trivial to make a 1GB file like this:
dd if=/dev/zero of=node1_swap.ubda bs=1M count=1024
And then just append it to the script that they are using to run the UML:
/virtual/kernel ubda=/virtual/node1.ubda mem=384M eth0=slirp,,/virtual/sl1.sh
to this:
/virtual/kernel ubda=/virtual/node1.ubda ubdb=/virtual/node1_swap.ubda mem=384M eth0=slirp,,/virtual/sl1.sh
Of course the real fun comes from trying to find the devices. Â Having to dig around I found that the device major is 98 for the UBD’s and that they incrament by 16, so that the first 3 devices are as follows:
mknod /dev/ubda b 98 0 mknod /dev/ubdb b 98 16 mknod /dev/ubdc b 98 32
Adding to that, you can partition them, and then they break out like this:
mknod /dev/ubda1 b 98 1 mknod /dev/ubda2 b 98 2 mknod /dev/ubda3 b 98 3 mknod /dev/ubdb1 b 98 17 mknod /dev/ubdb2 b 98 18
You get the idea.
With the disk added you can partition the ubd like a normal disk
node1:~# fdisk /dev/ubdb Command (m for help): p Disk /dev/ubdb: 1073 MB, 1073741824 bytes 128 heads, 32 sectors/track, 512 cylinders Units = cylinders of 4096 * 512 = 2097152 bytes Device Boot Start End Blocks Id System /dev/ubdb1 1 245 501744 83 Linux /dev/ubdb2 246 512 546816 82 Linux swap / Solaris
etc etc. Â And yes, you can then format, mount and all that.
First let’s setup the swap:
mkswap /dev/ubdb2 swapon /dev/ubdb2
Now let’s format the additional /tmp partition
node1:~# mke2fs /dev/ubdb1 mke2fs 1.40-WIP (14-Nov-2006) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 125488 inodes, 501744 blocks 25087 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67633152 62 block groups 8192 blocks per group, 8192 fragments per group 2024 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
Now adding the following to the /etc/fstab so it’ll automatically mount the /tmp directory and add the swap:
/dev/ubdb1 /tmp ext2 defaults 0 0 /dev/ubdb2 none swap defaults 0 0
Now he’s got a dedicated swap partition, and a separate /tmp filesystem.