首頁 > 軟體

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

2020-06-16 18:06:36

一、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


IT145.com E-mail:sddin#qq.com