RVBoards-D1内存 1GB不够怎么办,交换 ”文件/分区" 为你解忧



  • 一、基础知识

        SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.
        它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。
    
        需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,
        因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存.SWAP分区只是临时的解决办法.    
    
        linux下得分区推荐一个交换分区,一个根分区,其中交换分区如上所说作为redhat或者其它虚机所划分的内存不够时候来使用!    
    
        交换分区(swap)的合理值一般在内存的2 倍左右,可以适当加大。
        实际上具体还是以实际应用为准,swap为内存的2倍也不过是一种以讹传讹的说法。
        如果交换分区的使用都超过4GB以上了,可想而知服务器的性能应该差很多了。    
    
        Linux下可以创建两种类型的交换空间,一种是swap分区,一种是swap文件。
        前者适合有空闲的分区可以使用,后者适合于没有空的硬盘分区,硬盘的空间都已经分配完毕。
    

    二、创建交换文件

        在d1开发板上直接运行以下命令
         #1、在根目录创建交换文件swapfile,bs为块大小,count为块的数量
            sudo dd if=/dev/zero of=/swapfile bs=64M count=16
         #2、格式化交换文件
            sudo mkswap /swapfile
         #3、挂载交换文件
            sudo swapon /swapfile
         #如果,不再使用交换文件,如下卸载并删除
         #4、卸载交换文件
            sudo swapoff /swapfile
         #5、删除交换文件
            sudo rm /swapfile
        #top命令查看交换文件是否生效
            top - 10:57:07 up 11 min,  1 user,  load average: 1.00, 1.08, 0.80
            Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie
            %Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
            MiB Mem :    992.7 total,     67.3 free,    140.3 used,    785.1 buff/cache
        #"*************MiB Swap表示交换文件使用情况**************"
            MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.    831.7 avail Mem  
                PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND  
                794 root      20   0    7044   2828   2252 R   1.0   0.3   0:04.21 top      
                641 root      20   0   18084   3904   1612 S   0.7   0.4   0:03.06 systemd+ 
                118 root      20   0   18084   5236   2960 S   0.3   0.5   0:01.90 systemd+ 
                143 avahi     20   0    5028   2696   2272 S   0.3   0.3   0:01.44 avahi-d+ 
                623 root      -2   0       0      0      0 S   0.3   0.0   0:00.33 xradio_+ 
    

    三、创建交换分区

           #注:请提前对sd卡进行备件,防止数据丢失
          下面分区方式仅适用于RVBoards_D1_Debianv_img_v0.5镜像 ,
          删除原sd卡mmcblk0p6分区,新建swap分区和新的扩展存储分区
          原sd卡mmcblk0p6分区是扩展存储分区,不会影响系统运行
    
    
          [email protected]:~# fdisk -l         #fdisk -l查看分区信息
              Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 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
              Disklabel type: gpt
              Disk identifier: AB6F3888-569A-4926-9668-80941DCB40BC
              Device          Start      End  Sectors  Size Type
              /dev/mmcblk0p1    41464    47549     6086    3M Microsoft basic data
              /dev/mmcblk0p2    47550    48053      504  252K Microsoft basic data
              /dev/mmcblk0p3    48054    48557      504  252K Microsoft basic data
              /dev/mmcblk0p4    49152   251903   202752   99M Microsoft basic data
              /dev/mmcblk0p5   253358 10739117 10485760    5G Microsoft basic data
              /dev/mmcblk0p6 10739712 62333948 51594237 24.6G Linux filesystem
    
          [email protected]:~# fdisk /dev/mmcblk0    #利用fdisk 命令对sd卡重新分区
    
                  Welcome to fdisk (util-linux 2.36.1).
                  Changes will remain in memory only, until you decide to write them.
                  Be careful before using the write command.
                  Command (m for help): d                                   #输入’d‘,删除第6分区
                  Partition number (1-6, default 6): 6                      #输入’6‘,删除第6分区
                  Partition 6 has been deleted.
                  Command (m for help): n                                   #输入’n‘,新建分区
                  Partition number (6-8, default 6): 6                      #输入’6‘,新建6分区
                  First sector (48558-62333948, default 10739712):          #输入’回车‘,选择默认启始位置
                  #输入分区大小
                  Last sector, +/-sectors or +/-size{K,M,G,T,P} (10739712-62333948, default 62333948): 30000000 
                  Created a new partition 6 of type 'Linux filesystem' and of size 9.2 GiB.
                  Command (m for help): n                                   #输入’n‘,新建分区
                  Partition number (7,8, default 7):                        #输入’7‘,新建7分区
                  First sector (48558-62333948, default 30001152):          #输入’回车‘,选择默认启始位置
                  #输入分区大小,直接输入“回车”,默认大小
                  Last sector, +/-sectors or +/-size{K,M,G,T,P} (30001152-62333948, default 62333948):
                  Created a new partition 7 of type 'Linux filesystem' and of size 15.4 GiB.
                  Command (m for help): w                                   #输入’w‘,完成分区,写入并退出
                  The partition table has been altered.
                  Syncing disks.
    
          [email protected]:~# fdisk -l    #查看新分区信息
                  Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 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
                  Disklabel type: gpt
                  Disk identifier: AB6F3888-569A-4926-9668-80941DCB40BC
                  Device            Start      End  Sectors  Size Type
                  /dev/mmcblk0p1    41464    47549     6086    3M Microsoft basic data
                  /dev/mmcblk0p2    47550    48053      504  252K Microsoft basic data
                  /dev/mmcblk0p3    48054    48557      504  252K Microsoft basic data
                  /dev/mmcblk0p4    49152   251903   202752   99M Microsoft basic data
                  /dev/mmcblk0p5   253358 10739117 10485760    5G Microsoft basic data
                  /dev/mmcblk0p6 10739712 30000000 19260289  9.2G Linux filesystem
                  /dev/mmcblk0p7 30001152 62333948 32332797 15.4G Linux filesystem
    
          [email protected]:~# mkswap /dev/mmcblk0p6    #格式化交换分区
                  Setting up swapspace version 1, size = 9.2 GiB (9861263360 bytes)
                  no label, UUID=a38e9d65-5619-4ec5-b9cb-5547da777295
    
          [email protected]:~# mkfs.ext4 /dev/mmcblk0p7 #格式化扩展存储分区
                  mke2fs 1.46.2 (28-Feb-2021)
                  Creating filesystem with 4041599 4k blocks and 1011840 inodes
                  Filesystem UUID: 63494eb8-ffed-43fd-a630-d8a8c5c3397d
                  Superblock backups stored on blocks: 
                          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
    
                  Allocating group tables: done                            
                  Writing inode tables: done                            
                  Creating journal (16384 blocks): 
                  done
                  Writing superblocks and filesystem accounting information: done   
    
    #编辑 /etc/fstab,挂载交换分区和存储分区
          [email protected]:~# vim /etc/fstab 
                  # UNCONFIGURED FSTAB FOR BASE SYSTEM
                  /dev/mmcblk0p5  /       ext4    rw      0       1
                  /dev/mmcblk0p6 swap    swap    defautls        0       0
                  /dev/mmcblk0p7  /mnt       ext4    rw      0       2
    #重启后,用top命令查看交换分区是是否生效
          [email protected]:~# top     #MiB Swap表示交换文件使用情况
                  top - 12:38:23 up 1 min,  1 user,  load average: 3.01, 1.09, 0.39
                  Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
                  %Cpu(s):  1.0 us,  1.0 sy,  0.0 ni, 88.3 id,  9.7 wa,  0.0 hi,  0.0 si,  0.0 st
                  MiB Mem :    992.7 total,    679.9 free,    139.9 used,    172.9 buff/cache
                  'MiB Swap:   9404.4 total,   9404.4 free,      0.0 used.    832.1 avail Mem '
                      PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND  
                      205 avahi     20   0    5028   2708   2296 S   1.0   0.3   0:00.26 avahi-d+ 
                       59 root     -51   0       0      0      0 S   0.7   0.0   0:01.02 irq/56-+ 
                      725 root      20   0    7044   2868   2288 R   0.7   0.3   0:00.09 top      
                      554 root      20   0   18092   5476   3184 S   0.3   0.5   0:00.37 systemd+ 
                        1 root      20   0   94772   8500   6012 S   0.0   0.8   0:03.08 systemd  
                        2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd 
                        3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp 
    

Log in to reply