歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux dd命令在擴增SWAP分區時的應用

Linux dd命令在擴增SWAP分區時的應用

日期:2017/2/28 14:22:14   编辑:Linux教程

一、Linux中swap分區的基礎作用:

Linux swap分區是Linux交換分區:Linux系統物理內存不夠用時,系統會自動啟用swap分區,來緩解物理內存的壓力,系統把物理內存裡的訪問頻率低的內存對象移動到swap分區中,再在物理內存裡產生新的連接指向swap分區中的特定的對象;

二、
相對於繁忙的服務器來說,會出現物理內存和物理分區同時不夠用的情況,這時候我們就需要臨時擴增swap分區的大小,達到這種目的有兩種方法:

1.當硬盤的擴展分區還有剩余的內存可用,可以用fdisk命令創建新的分區,並調整分區類型為Linux-swap,然後啟用即可。

具體步驟:

[root@linuxidc ~]# free -m //查看物理內存和swap分區的使用率
total used free shared buffers cached
Mem: 502 474 28 0 76 274
-/+ buffers/cache: 124 378
Swap: 1019 0 1019
[root@linuxidc ~]# fdisk /dev/sdb


The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p //列出當前已創建的分區

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot Start End Blocks Id System


Command (m for help): n //新建一個分區
Command action
e extended
p primary partition (1-4)
p //主分區
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +3G
Command (m for help): t //改變分區類型

Selected partition 1
Hex code (type L to list codes): L //列出內核所支持的分區


0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
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.


WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.


[root@linuxidc ~]# partprobe /dev/sdb //讓內核重讀分區表
[root@linuxidc ~]# cat /proc/partitions //確保內核重讀分區表完成
major minor #blocks name


8 0 20971520 sda
8 1 305203 sda1
8 2 19615365 sda2
8 3 1044225 sda3
8 16 20971520 sdb
8 17 2939863 sdb1
[root@linuxidc ~]#mkswap /dev/sdb1 //格式化
Setting up swapspace version 1, size = 3010412 kB
[root@linuxidc ~]# swapon /dev/sdb1 //啟用該swap分區
[root@linuxidc ~]# free -m
total used free shared buffers cached
Mem: 502 394 107 0 30 273
-/+ buffers/cache: 90 412
Swap: 3890 0 3890


[root@linuxidc ~]# swapoff /dev/sdb1 //關閉該swap分區
[root@linuxidc ~]# free -m
total used free shared buffers cached
Mem: 502 393 108 0 30 273
-/+ buffers/cache: 89 413
Swap: 1019 0 1019

2.當硬盤沒有剩余的存儲可創建新分區時,可以利用dd命令在已存的分區中創建一個文件,充當swap分區。
具體步驟:(現已腳本的形式呈現)
[root@linuxidc ~]# vi createswap.sh
#!/bin/bash
echo -n "Please input your number: "
read number
echo -n "Please input your swapfile name and the whole path: "
read path
dd if=/dev/zero of=$path bs=1M count=$number
mkswap $path
swapon $path
free -m
echo "The swap created"

結束語:到此教程完畢。

Linux dd命令制作U盤系統啟動盤 http://www.linuxidc.com/Linux/2015-02/113585.htm

Linux/UNIX: 使用 dd 命令創建 1GB 大小的二進制 http://www.linuxidc.com/Linux/2014-12/110147.htm

如何在Ubuntu 14.04中創建SWAP交換分區文件 http://www.linuxidc.com/Linux/2014-08/105223.htm

如何擴展/刪除SWAP分區 http://www.linuxidc.com/Linux/2014-03/98311.htm

在OpenStack虛擬機實例中創建SWAP分區的一種方法 http://www.linuxidc.com/Linux/2013-07/87380.htm

Linux 中交換空間 (SWAP)應該分多大才好? http://www.linuxidc.com/Linux/2013-05/84252.htm

Linux SWAP 分區建立及釋放內存 http://www.linuxidc.com/Linux/2013-03/81890.htm

Linux SWAP 交換分區配置說明 http://www.linuxidc.com/Linux/2013-03/82008.htm

Copyright © Linux教程網 All Rights Reserved