Linux认证辅导:swapon,mkswap,swap分区建立
如果我们在装系统时将swap空间分小了,如何扩大swap空间呢?下面再让我们为系统建立新的swap空间吧!
一共分为三个步骤:
1,建立swap分区
2,建立swap文件
3,打开swap功能
<1>用fdisk建立swap分区
下面我以我的160GB的/dev/sdb来实验。先用fdisk建立分区。
[root@Fedora15 software]# fdisk /dev/sdb
Command (m for help): p
Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x624aa2e0
在这里我们可以看到,我的sdb硬盘共有160G,312581808个扇区,每个扇区大小为512bytes,即两个扇区组成1024bytes=1k.
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 1026047 512000 83 Linux
/dev/sdb2 25174800 312575759 143700480 f W95 Ext'd (LBA)
/dev/sdb3 1026048 25174015 12073984 8e Linux LVM
/dev/sdb5 25174863 139648319 57236728+ 7 HPFS/NTFS/exFAT
/dev/sdb6 139653108 221568479 40957686 7 HPFS/NTFS/exFAT
/dev/sdb7 221568543 308383739 43407598+ 7 HPFS/NTFS/exFAT
/dev/sdb8 308383744 312573951 2095104 7 HPFS/NTFS/exFAT
Partition table entries are not in disk order
可以看到我的磁盘又一个/dev/sdb2的windows扩展分区,其中sdb5-sdb8属于该扩展分区。/dev/sdb1,dev/sdb3属于Linux系统分区。现在我删除/dev/sdb1作为swap分区。
Command (m for help): d
Partition number (1-8): 1
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-312581807, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1026047, default 1026047): 821248
这里821248到底是多少容量呢?这里代表的是821248个扇区,一个扇区512b,所以大小为821248/2/1024=401M.这里也可以用 +401M来指定大小!
Command (m for help): t
Partition number (1-8): 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)
这里是改变分区的id号,默认分区为linux分区,即id=83.swap代号为82.改好了在确认下。
Command (m for help): p
Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x624aa2e0
Device Boot Start End Blocks Id System
/dev/sdb1 2048 821248 409600+ 82 Linux swap / Solaris
/dev/sdb2 25174800 312575759 143700480 f W95 Ext'd (LBA)
/dev/sdb3 1026048 25174015 12073984 8e Linux LVM
/dev/sdb5 25174863 139648319 57236728+ 7 HPFS/NTFS/exFAT
/dev/sdb6 139653108 221568479 40957686 7 HPFS/NTFS/exFAT
/dev/sdb7 221568543 308383739 43407598+ 7 HPFS/NTFS/exFAT
/dev/sdb8 308383744 312573951 2095104 7 HPFS/NTFS/exFAT
Partition table entries are not in disk order
可以看到/dev/sdb1已经是swap格式了!记住这里一定要把它设为82,如果用默认的83的话,后面的命令mkswap就无法进行,会报错的!下面我们写入分区表吧!
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
看到没有,警告信息出现了!说是没有更新分区表。内核继续使用原来的分区表!需要重新启动或用partprobe/kpartx来更新分区表!那么我们用partprobe来更新看看!
[root@fedora15 software]# partprobe
Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You should reboot now before making further changes.
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
提示更新错误!/dev/sdb1可能在使用。很显然我们需要看看挂载情况了。
[root@fedora15 software]# df -h /dev/sdb*
文件系统 容量 已用 可用 已用%% 挂载点
udev 995M 0 995M 0% /dev
/dev/sdb1 485M 11M 449M 3% /media/1279ae93-af95-47d9-b45b-b2c920b84554
udev 995M 0 995M 0% /dev
udev 995M 0 995M 0% /dev
/dev/sdb5 55G 52G 2.9G 95% /media/Media
/dev/sdb6 40G 38G 1.4G 97% /media/study
/dev/sdb7 42G 38G 4.0G 91% /media/software
udev 995M 0 995M 0% /dev
原来/dev/sdb1已经被挂了!难怪更新不成功的。赶紧卸载吧!
[root@fedora15 media]# umount /dev/sdb1
[root@fedora15 media]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
可以看到,当我们卸载后,再次partprobe没有提示sdb1的错误了!更新成功,不用重启了!