zoukankan      html  css  js  c++  java
  • Linux之内存交换分区(swap)

    1、什么是内存交换分区(swap)

    物理内存:计算机内存的大小,即内存条的大小;

    虚拟内存:计算机拿出一部分硬盘的空间来充当内存;

    交换分区(swap):当物理内存不够用时,可以拿这个部分来存放内存中较少被使用的数据。

    2、使用物理分区创建内存交换分区

    2.1使用物理分区创建swap

    建立swap的步骤:

    1. 分区:先使用【gdisk】在你的磁盘中划分出一个分区给系统作为swap,由于Linux的【gdisk】默认会将分区的ID设置为Linux的文件系统,所以可能还得要设置【system ID】
    2. 格式化:利用建立swap格式的【mkswap 设备文件名】就能够格式化该分区成为swap格式
    3. 使用::启动swap设备,【swapon 设备文件名】
    4. 观察::通过【free】与【swapon -s】来观察内存的使用量

    (1)先进行分区操作

    [root@study ~] gdisk /dev/vda
    Command (? for help) : n #【n】 add a new partition
    Partition number (6-128, default 6):
    First sector (34-83886046, default = 69220352) or {+-}size{KMGTP}:
    Last sector (69220352-83886046, default = 83886046) or {+-}size{KMGTP}: +512M
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 8200 #在分区内的可能的文件系统类型Linux为8300,swap为8200
    Changed type of partition to 'Linux swap'
    Command (? for help) : p #【p】print the partition table
    Number  Start (sector)   End (sector)    size     Code  Name
      6       69220352        70268927     512.0 MiB  8200  Linux swap
    Command (? for help) : w #上述操作生效,write table to disk and exit
    Do you want to proceed? (Y/N) : y
    [root@study ~] partprobe #更新Linux内核的分区表信息
    [root@study ~] lsblk #列出系统上的所有磁盘列表
    NAME    MAJ:MIN    RM    SIZE   RO   TYPE    MOUNTPOINT
    vda     252:0      0     40G     0   disk 
    ......
    -vda    252:6      0     512M    0   part
    #结果中有了一个 /dev/vda6 可以用于swap
    

      

    (2)开始创建swap格式

    [root@study ~] mkswap /dev/vda6 #将【/dev/vda6】这个文件格式化为内存交换文件的文件格式
    Setting up swapspace version 1, size = 524284 KiB
    no label, UUID=6b17e4ab-9bf9-43d6-88a0-73ab47855f9d
    [root@study ~] blkid /dev/vda6
    /dev/vda6: UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" TYPE="swap" #格式化成功
    

      

    (3)观察与挂载

    [root@study ~] free #观察内存和硬盘的swap
              total     used     free    shared  buff/cache  available
    Mem:     1275140   227244   330124    7804    717772      875536     #物理内存
    Swap:    1048572   101340   947232                                   #swap相关
    #1275140K的物理内存,使用227244K,剩余330124K,使用掉的内存有717772K被缓存使用
    #swap有1048572K
    [root@study ~] swapon /dev/vda6 #观察/dev/vda6容量
    [root@study ~] free #观察内存和硬盘的swap
              total     used     free    shared  buff/cache  available
    Mem:     1275140   227244   330124    7804    717772      875536     #物理内存
    Swap:    1572856   101260   1471596   #这里total、free均有增加,used有减少
    [root@study ~] swapon -s #【-s】:显示交换区的使用状况
    Filename      Type           Size      Used    Priority
    /dev/dm-1     partition    1048572    101260      -1
    /dev/vda6     partition    524284       0         -2
    [root@study ~] nano /etc/fstab # 写入配置文件,启动时自动挂载
    UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" swap swap defaults  0  0
    # 不是文件系统,所以没有挂载点,第二栏写入swap
    # [设备 / UUID等]   [挂载点]   [文件系统]  [文件系统参数]  [dump]  [fsck]
    

      

    3、使用文件创建内存交换分区

    (1)使用【dd】命令在 【/tmp】下新增一个 128MB的文件

    [root@study ~] dd if=/dev/zero of=/tmp/swap bs=1M count=128 #从/dev/zero中读入128M的0到/tmp/swap中
    128+0 records in #读入128条数据
    128+0 records out #输出128条数据
    134217728 Bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s
    [root@study ~] ll -h /tmp/swap
    -rw-r--r--  1  root  root  128M  Jun 26  17:47  /tmp/swap
    # if : input file,输入文件,/dev/zero 是会一直输出 0 的设备
    # of : output file,将一堆 0 写入到后面的文件中(这里是/srv/loopdev) 
    # bs : 是block的size,就像文件系统那样的block意义
    # count : 总共bs的个数,文件容量=bs*count
    

      

    (2)使用【mkswap】将【/tmp/swap】这个文件格式化为内存交换文件的文件格式

    [root@study ~] mkswap /tmp/swap #写此命令时注意不要写错字符,否则可能使文件系统挂掉
    Setting up swapspace version 1, size = 131068 KiB
    no label,UUID=4746c8ce-3f73-4f83-b883-33b12fa7337c
    

     

    (3)使用【swapon】来将【/tmp/swap】启动

    [root@study ~] swapon /tmp/swap #观察 /tmp/swap 的容量
    [root@study ~] swapon -s #【-s】:显示交换区的使用状况
    Filename      Type           Size      Used    Priority
    /dev/dm-1     partition    1048572    101260      -1
    /dev/vda6     partition    524284       0         -2
    /tmp/swap     file         131068       0         -3
    

      

    (4)使用【swapoff】关闭swap file,并设置自动启用

    [root@study ~] nano /etc/fstab #nano文本编辑器来编辑启动时的配置文件【/etc/fstab】
    /tmp/swap  swap  swap  defaults  0  0
    # [设备 / UUID等]   [挂载点]   [文件系统]  [文件系统参数]  [dump]  [fsck]
    # 为什么这里第一栏不使用UUID,因为系统仅会查询区块设备(block device)不会查询文件
    [root@study ~] swapoff /tmp/swap  /dev/vda6 #关闭swap file
    [root@study ~] swapon -s #【-s】:显示交换区的使用状况
    Filename      Type           Size      Used    Priority
    /dev/dm-1     partition    1048572    101260      -1
    [root@study ~] swapon -a #【-a】:将/etc/fstab文件中所有设置为swap的设备,启动为交换区
    

      

    本文学习内容来自:《鸟哥的Linux私房菜》

    2021-07-02 11:59:40

  • 相关阅读:
    vs2010创建文件夹
    strlen源码,远没有想象中的那么简单、、、、
    排序
    字符数组,字符指针,sizeof,strlen总结
    QT中的QInputDialog的小例子
    QT实现启动画面
    QT中Dialog的使用

    QT中的文件浏览
    Python日期操作
  • 原文地址:https://www.cnblogs.com/zrs123/p/14962686.html
Copyright © 2011-2022 走看看