swap交换文件系统管理:

swap解决内存不足,另外某些app软件硬性要求swap大小。把硬盘当作内存使用。


swap内存一般分为多大呢?

       一般当物理内存为<=4G时候swap内存应为物理内存的1.5-2倍

       物理内存大于4G时候,建议和物理内存一样大

1)swap生成的方式:

    a.安装系统时划分的。

    b.使用硬盘格式化后生成。

 

安装系统后创建swap分区的流程:

 

  1. 对硬盘分区

  2. 格式化

  3. 挂载

  4. 查看验证


创建分区生成swap分区


fdisk -l /dev/sdb

free -m ##查看swap的大小,同时也会显示内存大小

fdisk -cu /dev/sdb##n-p-1-回车-+2G-t-82-w


partx -a /dev/sdb  ##重读分区表

cat /proc/partitions     ##查看磁盘及分区信息

mkswap /dev/sdb1   ##格式化swap,新建swap

swapon /dev/sdb1   ##临时启用swap

free -m ##查看验证

swapon -s ##查看swap详细信息

vi /etc/fstab   ##永久挂载

/dev/sdb1 swap    swap   defaults    0 0

:wq

mount -a ##验证     (mound无法查到这种方式挂载的swap分区,)

swapoff /dev/sdb1   ##停止swap

swapon -s ##验证

free -m

 

使用文件格式化后生成swap分区


dd if=/dev/zero of=/swap bs=1G count=2  ##生成文件,/dev/zero由二进制0组成的文件

ls /swap

du -sh /swap   ##查看大小

mkswap -f /swap   ##新建swap文件系统

swapon /swap  ##临时启用

swapon -s

free -m

vi /etc/fstab

/swap swap swap  defaults 0 0

:wq

mount -a

reboot

 

2)swap的管理:查看、启用、禁用、开机挂载

查看:swapon -s

启用:swapon 分区

禁用:swapoff 分区

开机挂载:echo "分区  swap swap defaults 0 0">>/etc/fstab;mount -a

拷贝数据流的命令:

dd if=源文件  of=输出目标  bs=一次拷贝的大小 count=拷贝总数  ##可以盘对盘拷贝数据,制作U盘启动,测试磁盘配额等

 

 

案例一: 创建swap分区,对swap进行扩容


    在服务器上新加入一块磁盘进行测试

    fdisl -l /dev/sdb      ##查看磁盘sdb的信息

[root@localhost ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 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: 0x00000000

    

    给磁盘进行分区,分区大小调整到想要为swap扩展的大小,然后选择分区类型为82(82是swap类型的分区格式)

                fdisk /dev/sdb      

输入 n   回车             ##新建分区

输入  p  回车             ##新建主分区   

输入1    回车             ##选择新建第一个分区

             回车             ##选择新建分区的位置,回车选择默认

输入      +2G             ##输入新建分区的大小

输入       t                  ##输入t   选择分区类型

输入       82               ## 分区类型选择82swap

输入       p                 ##打印出分区信息

输入       w                ##保存新建分区



[root@localhost ~]# fdisk  /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x30ddcc05.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
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): 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, +cylinders or +size{K,M,G} (1-2610, default 2610): +2G
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 82
Changed system type of partition 1 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/sdb: 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: 0x30ddcc05
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  82  Linux swap / Solaris
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

查看分区信息,可以看到刚新建的sdb1分区。

[root@leslie ~]# cat /proc/partitions 
major minor  #blocks  name
   8        0   83886080 sda
   8        1     512000 sda1
   8        2   83373056 sda2
   8       16   20971520 sdb
   8       17    2104483 sdb1
 253        0   52428800 dm-0
 253        1    2031616 dm-1
 253        2   28909568 dm-2

格式化分区为swap

[root@leslie ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 2104476 KiB
no label, UUID=3c61e26d-6693-4f6a-960c-c50e0cda27a2

临时启用swap分区         (临时关闭使用swapoff  /dev/分区名)

[root@leslie ~]# swapon /dev/sdb1
[root@leslie ~]# free -m       ##查看内存信息包括swap分区
             total       used       free     shared    buffers     cached
Mem:           474        123        351          0          9         37
-/+ buffers/cache:         76        398
Swap:         4039          0       4039
[root@leslie ~]# swapon -s        ##显示swap详细信息
FilenameTypeSizeUsedPriority
/dev/dm-1                               partition20316080-1
/dev/sdb1                               partition21044720-2


永久挂载:(由于临时挂载在系统重启后就会失效,这里使用永久挂载长驻系统)

    编辑/etc/fstab文件实现开机挂载存储分区swap。

          ##这里使用重定向输入的方法写入信息到配置文件,可以使用vim进入文件写

    

[root@leslie ~]# echo "/dev/sdb1 swap swap defaults 0 0" >>/etc/fstab 
[root@leslie ~]# tail -1 /etc/fstab 
/dev/sdb1 swap swap defaults 0 0


案例二: 使用文件对swap分区扩容。

   生成一个我们要对swap分区扩容大小的文件。

        ##dd 命令可以生成任意大小任意数量的文件  

                if=/dev/zero(这个是从哪个地方取文件,zero是无限大的一个逻辑设备)

                of=/swap(这个是生成文件的位置/名称)

                bs=1G(生成文件的大小)

                connt=2(生成2个1G,)

                (总的意思就是凭空生成一个大小为2G的文件swap)


[root@leslie ~]# dd if=/dev/zero of=/swap bs=1G count=2
记录了2+0 的读入
记录了2+0 的写出
2147483648字节(2.1 GB)已复制,188.949 秒,11.4 MB/秒

查看生成文件的大小:

[root@leslie ~]# du -sh /swap 
2.1G/swap

将生成的文件格式化为wap分区

[root@leslie ~]# mkswap /swap -f
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=92711869-3c7d-4264-9961-25f2c8e66677

临时启用swap分区

[root@leslie ~]# swapon /swap   
[root@leslie ~]# free -m     ##查看内存信息
             total       used       free     shared    buffers     cached
Mem:           474         74        400          0          2         17
-/+ buffers/cache:         54        420
Swap:         4031         22       4009
[root@leslie ~]# swapon -s    ##查看swap分区信息
FilenameTypeSizeUsedPriority
/dev/dm-1                               partition203160823296-1
/swap                                   file20971440-2

开机挂载swap分区:

[root@leslie ~]# echo "/swap swap swap defaults 0 0 ">>/etc/fstab 
[root@leslie ~]# tail -1 /etc/fstab
/swap swap swap defaults 0 0 
[root@leslie ~]#