How to Expand Swap on a Linux VM
I searched for a while to come up with a method for expanding swap in an online way thinking that it might now be possible given all kinds of disk and file system advances over the past few years. It's been a little bit since I've had to do this after all. Unfortunately, no such luck so I thought I'd post the quick on the way that I did it so I remember better in the future.
The main goal of this excersize is to expand the swap partition without a reboot. It should be noted that this process is for a flat disk, not a LVM disk group.
– Information Gathering
First is information gathering. You need your /etc/fstab contents and it couldn't hurt to get the swap sizing as well.
[root@vm-guest ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Mon Jan 28 12:10:28 2013 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=dd126223-ae2a-438b-9f15-bb5fbc65b235 / ext4 defaults 1 1 UUID=8b2358d7-2010-46d8-8685-73632b25a8ea swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
Check your swap entry
[root@vm-guest ~]# swapon -s Filename Type Size Used Priority /dev/sdb1 partition 2096120 1736 -1
Now check the actual partition table with fdisk
[root@vm-guest ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c1142 Device Boot Start End Blocks Id System /dev/sda1 * 1 2611 20970496 83 Linux Disk /dev/sdb: 2147 MB, 2147483648 bytes 22 heads, 16 sectors/track, 11915 cylinders Units = cylinders of 352 * 512 = 180224 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000de00f Device Boot Start End Blocks Id System /dev/sdb1 6 11916 2096128 82 Linux swap / Solaris
– Rescan The Drive
Now you should expand your swap disk in the VM. In this case I used VMware which is as simple as right clicking on the system, finding the associated drive in the configuration, increasing to the size desired and clicking OK.
Once complete, you'll need to rescan the disk to get it to show up on the OS. Keep in mind, your volume information may be different on your system, you'll need to adjust the rescan to the right disk entry.
[root@vm-guest ~]# cd /sys/class/scsi_disk/ [root@vm-guest scsi_disk]# ls 2:0:0:0 2:0:1:0 [root@vm-guest scsi_disk]# cd 2\:0\:1\:0/ [root@vm-guest 2:0:1:0]# ls allow_restart app_tag_own cache_type device FUA manage_start_stop power protection_mode protection_type provisioning_mode subsystem thin_provisioning uevent [root@vm-guest 2:0:1:0]# echo '1' > device/rescan
Check that your expansion succeeded as follows.
[root@vm-guest 2:0:1:0]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c1142 Device Boot Start End Blocks Id System /dev/sda1 * 1 2611 20970496 83 Linux Disk /dev/sdb: 3221 MB, 3221225472 bytes 22 heads, 16 sectors/track, 17873 cylinders Units = cylinders of 352 * 512 = 180224 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000de00f Device Boot Start End Blocks Id System /dev/sdb1 6 11916 2096128 82 Linux swap / Solaris
– Unmount Existing Swap and Create New Swap Partition
Now you'll need to turn off, unmount, the existing swap in order to create and expand the swap.
[root@vm-guest ~]# swapoff -v /dev/sdb1 swapoff on /dev/sdb1
Now fdisk the partition again to remove the existing swap partition and create a new one with the larger size.
[root@vm-guest ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): p Disk /dev/sdb: 3221 MB, 3221225472 bytes 22 heads, 16 sectors/track, 17873 cylinders Units = cylinders of 352 * 512 = 180224 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000de00f Device Boot Start End Blocks Id System /dev/sdb1 6 11916 2096128 82 Linux swap / Solaris Command (m for help): d Selected partition 1 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-17873, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-17873, default 17873): Using default value 17873 Command (m for help): t Selected partition 1 Hex code (type L to list codes): L 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx 5 Extended 42 SFS 86 NTFS volume set da Non-FS data 6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt 9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT 1e Hidden W95 FAT1 Hex code (type L to list codes): 82 Changed system type of partition 1 to 82 (Linux swap / Solaris) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
– Create New Swap, Update FSTAB and Turn On Swap
Now make your swap partition and note the new UUID, you'll need this to update your fstab file.
[root@vm-guest ~]# mkswap /dev/sdb1 Setting up swapspace version 1, size = 3145636 KiB no label, UUID=82bb14fc-fa5b-4dca-bb24-9aceb0ba9061
Now you'll need to update your /etc/fstab file with the new UUID so you can mount the swap. Once you edit the fstab file then you can turn on the swap.
[root@vm-guest ~]# vim /etc/fstab [root@vm-guest ~]# swapon -a [root@vm-guest ~]# swapon -s Filename Type Size Used Priority /dev/sdb1 partition 3145632 0 -1
And that should be all. As you can see, the swap is now increased.
0 Comments