磁盘(disk): 是指利用磁记录技术存储数据的存储器.
磁盘是计算机主要的存储介质, 可以存储大量的二进制数据, 并且断电后也能保持数据不丢失.

磁盘存储的最基本原理是电生磁。
磁盘的磁道里边有很多的磁颗粒, 每个金属颗粒都有自己的磁化程度, 用于储存数据0和1. (s1bit)

当记录数据时, 硬盘的磁头开始通电形成强磁场, 数据转变成高低电平, 改变电流的流向, 形成不同的磁场,
在电流磁场的作用下, 使颗粒磁化, 从而将信息记录在圆盘上.
写数据时磁头移到到磁盘要写入的位置,输入电流产生感应磁场。
受磁场的影响,磁头下磁性粒子的磁极方向变为与磁场同向。
如此通过给磁头不同的电流方向,使得磁盘局部产生不同的磁极,
产生的磁极在未受到外部磁场干扰下是不会改变的。

由海量颗粒组成的信息, 就是我们存在硬盘里的数据.

| 部件名 | 作用: |
|---|---|
| 盘片 | 硬盘一般有一个或多个盘片, 每个盘片可以有两面, 即第一个盘片的正面为0面, 反面为1面然后依次类推. |
| 磁道 | 每个盘片的盘面在出厂的时候被划分出了多个同心圆环, 数据就存储在这样的同心圆环上面, 我们将这样的圆环称为磁道(Track), 每个盘面可以划分多个磁道.但肉业不可见. |
| 扇区 | 在硬盘出厂时会对磁盘进行一次低格, 其实就是再每个磁道划分为若干个弧段, 每个弧段就是一个扇区. 扇区是硬盘上存储的物理单位, 现在每个扇区可存储512字节数据已经成了业界的约定. |
| 柱面 | 柱面实际上就是我们抽象出来的一个逻辑概念, 简单来说就是处于同一个垂直区域的磁道称为 柱面, 即各盘面上面相同位置磁道的集合.这样数据如果存储到相同半径磁道上的同一扇区, 这样可以实现并行读取, 主要是减少磁头寻道时间. |
| 磁头 | 读取磁盘磁道上面金属块, 主要负责读或写入数据. |


我们需要简单了解下磁盘的接口类型、磁盘涉及的相关术语、磁盘在Linux下的命名方式.

IDE, Scsi(已经被淘汰)


SATA III 与SAS(企业使用较多)

ssd固态硬盘的Msata(SATA接口的mini版)接口为超极本设计. (几乎被m.2接口替代, M.2都远胜于mSATA.)
M.2接口是为超极本量身定做的新一代接口标准,拥有更小巧的规格尺寸, 还是更高的传输性能.

SSD 尺寸与规格: 2280(常用), 2242, 2230.

SSD接口:
按照接口类型分,可以把m.2接口分为Socket 2和Socket 3
Socket 2也可以叫做B key,支持sata,pcie x2
Socket 3也可以叫做M key,支持sata,pcie x4
一开始,B key的只能插在b key(Socket 2)的接口中,m key的只能插在m key(Socket 3)的接口中,
但是随着m key接口的普及,越来越多电脑主板只有m key 接口,b key的ssd根本插不上去,
于是厂商们又设计了一个b&m key接口的ssd。



总线分为:SATA3 PCI-E
协议分为: AHCI NVME

尺寸: 2.5英寸 3.5英寸
容量:KB MB GB TB PB EB
转速:7500 15000
IOPS:每秒能够发生IO的次数
| 设备名称 | 分区信息 | 设备类型 |
|---|---|---|
| /dev/sda | /dev/sda1 | 第一块物理磁盘第一分区 |
| /dev/sdb | /dev/sdb2 | 第二块物理磁盘第二个分区 |
| /dev/vdd | /dev/vdd4 | 第四块虚拟磁盘的第四个分区 |
MBR分区表只能分配4个主分区, 系统中分区由数字编号表示, 1~4留给主分区使用和扩展分区, 逻辑分区从5开始.
GPT支持分配128个主分区.
* 注意MBR与GPT之间不能互转, 会导致数据丢失.
添加一块小于2TB的磁盘进行使用, 步骤如下:
1. 给虚拟机添加一块新的硬盘
2. 使用fdisk进行分区
3. 使用mkfs进行格式化
4. 使用mount进行挂载
PS: 生产分区建议, 如无特殊需求直接使用整个磁盘即可, 无需分区. (装系统才分区)
虚拟机关机, 为虚拟机添加一个硬盘, 设置都为默认即可.

# 查看所有分区情况
[root@kid ~]# fdisk -l
# 磁盘/dev/sda:10.7 GB,10737418240字节,20971520个扇区
Disk /dev/sda: 10.7 GB, 10737418240 bytes, 20971520 sectors
# 单位=1*512=512字节的扇区
Units = sectors of 1 * 512 = 512 bytes
# 扇区大小(逻辑/物理):512字节/512字节
Sector size (logical/physical): 512 bytes / 512 bytes
# I/O大小(最小/最佳):512字节/512字节
I/O size (minimum/optimal): 512 bytes / 512 bytes
# 磁盘标签类型:dos
Disk label type: dos
# 磁盘标识符:0x000c160a
Disk identifier: 0x000c160a
# 设备 引导 开始 结束 块 Id 系统
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 20971519 9436160 8e Linux LVM
# sdb新添加的硬盘
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
# 磁盘/dev/mapper/centos_kid-root:858585MB,8585740288字节,16769024个扇区
Disk /dev/mapper/centos_kid-root: 8585 MB, 8585740288 bytes, 16769024 sectors
# 磁盘/dev/mapper/centos_kid-swap:1073 MB,1073741824字节,2097152个扇区
Disk /dev/mapper/centos_kid-swap: 1073 MB, 1073741824 bytes, 2097152 sectors
# 对/dev/sdb进行分析操作
[root@kid ~]# fdisk /dev/sdb
Command (m for help): m # 输入m列出常用的命令
Command action
a toggle a bootable flag # 切换分区启动标记
b edit bsd disklabel # 编辑sda磁盘标签
c toggle the dos compatibility flag # 切换dos兼容模式
d delete a partition # 删除分区
l list known partition types # 显示分区类型
m print this menu # 显示帮助菜单
n add a new partition # 新建分区
o create a new empty DOS partition table # 创建新的空白分区表
p print the partition table # 显示分区表的信息
q quit without saving changes # 不保存退出
s create a new empty Sun disklabel # 创建新的Sun磁盘标签
t change a partitions system id # 修改分区ID,可以通过l查看id
u change display/entry units # 修改容量单位,磁柱或扇区
v verify the partition table # 检验分区表
w write table to disk and exit # 保存退出
x extra functionality (experts only) # 拓展功能
# 新建分区
Command (m for help): n
Partition type:
# 主分区
p primary (0 primary, 0 extended, 4 free)
# 扩展分区
e extended
# 选择创建主分区
Select (default p): p
# # 默认创建第一个主分区 (默认为第一主分区, 回车即可)
Partition number (1-4, default 1):
# 默认扇区回车
First sector (2048-41943039, default 2048):
Using default value 2048
# # 分配主分区50MB
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +50M
Partition 1 of type Linux and of size 50 MiB is set
# 新建分区
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
# 创建扩展分区
Select (default p): e
# 序号默认为2, 回车即可
Partition number (2-4, default 2):
# 默认即可
First sector (104448-41943039, default 104448):
Using default value 104448
# 什么都不输入,直接回车, 空间都给到扩展分区
Last sector, +sectors or +size{K,M,G} (104448-41943039, default 41943039):
Using default value 41943039
Partition 2 of type Extended and of size 20 GiB is set
# 新建分区
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
# 创建逻辑分区 (建立拓展分区之后, 原本的e选择变成了l选项)
Select (default p): l
Adding logical partition 5
# 默认回车即可
First sector (106496-2097151, default 106496):
Using default value 106496
# 分配100MB空间
Last sector, +sectors or +size{K,M,G} (106496-41943039, default 41943039): +100M
# 查看分区创建
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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
Disk label type: dos
Disk identifier: 0xdd515427
Device Boot Start End Blocks Id System
/dev/sdb1 2048 104447 51200 83 Linux
/dev/sdb2 104448 41943039 20919296 5 Extended
/dev/sdb5 106496 311295 102400 83 Linux
# 保存分区
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# 检查磁盘是否是MBR分区方式
[root@kid ~]# fdisk /dev/sdb -l|grep type
Disk label type: dos
# 安装parted, 刷新内核立即生效,无需重启
[root@kid ~]# yum -y install parted
[root@kid ~]# partprobe /dev/sdb
# 看出创建的分区(sdb是硬盘设备, 1, 2, 5是分区)
[root@kid ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 Sep 6 21:00 /dev/sdb
brw-rw----. 1 root disk 8, 17 Sep 6 21:00 /dev/sdb1
brw-rw----. 1 root disk 8, 18 Sep 6 21:00 /dev/sdb2
brw-rw----. 1 root disk 8, 21 Sep 6 21:00 /dev/sdb5
mkfs格式化磁盘, 实质创建文件系统.
格式化硬盘命令: mkfs [选项] 参数
选项:
-b 设定数据区块占用空间大小, 目前支持1024、2048、4096 bytes每个块.
-t 用来指定什么类型的文件系统, 可以是ext4, xfs
-i 设定inode的大小
-N 设定inode数量, 防止Inode数量不够导致磁盘不足
# 以xfs格式格式化磁盘的sdb1
[root@kid ~]# mkfs.xfs /dev/sdb1
size=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=12800, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# (不要操作) 格式化整个磁盘 格式化成ext4文件系统
# 执行之后创建的sdb1, sdb2, sdb5都没了, 变成sdb
[root@kid ~]# mkfs.ext4 /dev/sdb
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
# 确认
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
挂载硬盘命令: mount 挂载的设备 挂载目录
如果需要使用该磁盘的空间, 需要准备一个空的目录作为挂载点, 与该设备进行关联.
# 创建目录
[root@kid ~]# mkdir /data
# 挂载硬盘
[root@kid ~]# mount /dev/sdb1 /data
# df命令查看设备硬盘的使用情况
[root@kid ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 485824 0 485824 0% /dev
tmpfs 497836 0 497836 0% /dev/shm
tmpfs 497836 7724 490112 2% /run
tmpfs 497836 0 497836 0% /sys/fs/cgroup
/dev/mapper/centos_kid-root 8374272 1528888 6845384 19% /
/dev/sda1 1038336 140320 898016 14% /boot
tmpfs 99568 0 99568 0% /run/user/0
/dev/sdb1 47780 2688 45092 6% /data
fdisk不支持给高于2TB的磁盘进行分区.
如果有单块盘高于2TB, 使用Gdisk进行分区.
# 安装gdisk分区工具
[root@kid ~]# yum install gdisk -y
# 创建一个新分区, 500MB大小
[root@kid ~]# gdisk /dev/sdb
# 之前硬盘格式是MBR, 现在使用gdisk分区, 硬盘分区由MBR转为GPT.
# GPT fdisk(gdisk)版本0.8.10
GPT fdisk (gdisk) version 0.8.10
# 分区表扫描:
Partition table scan:
MBR: MBR only # MBR:仅MBR
BSD: not present # BSD:不存在
APM: not present # APM:不存在
GPT: not present # GPT:不存在
***************************************************************
# 发现无效的GPT和有效的MBR;将MBR转换为GPT格式
Found invalid GPT and valid MBR; converting MBR to GPT format
# 在记忆中。此操作具有潜在的破坏性!退出
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
# 如果不想转换MBR分区,请键入“q”
typing 'q' if you don't want to convert your MBR partitions
# 到GPT格式!n
to GPT format!
**************************************************************
# m查看帮助
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
# 先对之前的分区进行删除(输入d)
Command (? for help): d
# 输入分区编号1, 删除分区1 (现在提示只有1到5)
Partition number (1-5): 1
Command (? for help): d
输入分区编号1, 删除分区2
Partition number (2-5): 2
Command (? for help): d
# 仅剩下5(现在不需要输入编号直接回车即可)
Using 5
# 创建新分区
Command (? for help): n
# 默认即可(回车)
Partition number (1-128, default 1):
# 默认即可(回车)
First sector (34-2097118, default = 2048) or {+-}size{KMGTP}:
# 分配500M大小
Last sector (2048-2097118, default = 2097118) or {+-}size{KMGTP}: +500M
Current type is 'Linux filesystem'
# 回车即可
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
# 打印查看
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
1 2048 1026047 500.0 MiB 8300 Linux filesystem
# 保存分区
Command (? for help): w
# 确认
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
# 创建完成后, 可以尝试检查磁盘是否为gpt格式
[root@kid-node1 /]# fdisk /dev/sdb -l|grep type
Disk label type: gpt
# 安装parted, 刷新内核立即生效, 无需重启
[root@kid ~]# yum -y install parted
[root@kid ~]# partprobe /dev/sdb
# 查看分区
[root@kid ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 Sep 6 21:24 /dev/sdb
brw-rw----. 1 root disk 8, 17 Sep 6 21:24 /dev/sdb1
# 直接格式化sdb(sdb1分区不要了)
[root@kid ~]# mkfs.xfs /dev/sdb
# 设备被占用(重启)
mkfs.xfs: cannot open /dev/sdb: Device or resource busy
# 提示有一个分区建议使用 -f 强制格式
[root@kid ~]# mkfs.xfs /dev/sdb
mkfs.xfs: /dev/sdb appears to contain a partition table (gpt).
mkfs.xfs: Use the -f option to force overwrite.
# 格式化成功
[root@kid ~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 格式化硬盘 sdb1分区也被删除了
[root@kid ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 Sep 6 21:39 /dev/sdb
# 创建挂载点
[root@kid ~]# mkdir /data_gdisk
# 挂载硬盘
[root@kid ~]# mount /dev/sdb /data_gdisk
[root@kid ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 20961280 32992 20928288 1% /data_gdisk
...
如果提示↓, 那么就是格式化硬盘出错了...
mount: /dev/sdb is write-protected, mounting read-only
mount: wrong fs type, bad option, bad superblock on /dev/sdb,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
前面我们已经提到过, 如果需要使用磁盘的空间, 需要准备一个空的目录作为挂载点, 与该设备进行关联.
mount主要是为文件系统指定一个访问入口.
通过mount进行挂载临时生效. (重启将会失效)
选项:
-t 指定文件系统挂载分区
-a 挂载/etc/fstab中的配置文件
-o 指定挂载参数
# 创建挂载目录
[root@kid ~]# mkdir /sdb
# 挂载/dev/sdb至db目录
[root@kid ~]# mount -t xfs /dev/sdb /sdb/
# 查询系统分区
[root@kid ~]# df | grep 'db'
...
/dev/sdb 20961280 32992 20928288 1% /db
使用umount进行卸载掉挂载的磁盘.
选项:
-l 强制卸载
# 卸载目录方式
[root@kid ~]# umount /sdb
# 查询系统分区(没了)
[root@kid ~]# df | grep 'sdb'
# 另一种卸载设备方式
[root@kid ~]# umount /dev/sdb
# umount不能卸载的情况
[root@kid ~]# umount /db1
umount: /db1: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1)
# PS: 如上情况解决办法有两种, 1.切换至其他目录 2.使用'-l'选项强制卸载
[root@student db1]# umount -l /db1
如果需要实现永久挂载则需要将挂载信息写入/etc/fstab配置文件中实现.
# 使用blkid命令获取各设备的UUID
[root@kid ~]# blkid |grep "sdb"
/dev/sdb: UUID="d58900d6-4e56-4adf-b05f-d7ab46bdf791" TYPE="xfs"
# 使用UUID挂载磁盘sdb分区至于sdb, 测试挂载
# 创建挂载目录
[root@kid ~]# mkdir /sdb
[root@kid ~]# mount UUID="d58900d6-4e56-4adf-b05f-d7ab46bdf791" /sdb
# 开机自动挂载 写入/etc/fstab中,
[root@kid ~]# vi /etc/fstab
...
/dev/sdb /sdb xfs defaults 0 0
# 加载fstab配置文件, 同时检测语法是否有错误(不会有提示)
[root@kid ~]# mount -a
[root@kid ~]# df
/dev/sdb 20961280 32992 20928288 1% /sdb
...
# 重启linux查看
[root@kid ~]# reboot
[root@kid ~]# df
/dev/sdb 20961280 32992 20928288 1% /sdb
...
/etc/fstab配置文件编写格式
| 要挂载的设备 | 挂载点(入口) | 文件系统类型 | 挂载参数 | 是否备份 | 是否检查 |
|---|---|---|---|---|---|
| /dev/sdb | /sdb | xfs | defaults | 0 | 0 |
第四列:挂载参数.挂载参数有很多, 在这块我们了解即可, 不必深究.
| 参数 | 含义 |
|---|---|
| async/sync | 是否为同步方式运行.默认async |
| user/nouser | 是否允许普通用户使用mount命令挂载.默认nouser |
| exec/noexe | 是否允许可执行文件执行.默认exec |
| suid/nosuid | 是否允许存在suid属性的文件.默认suid |
| auto/noauto | 执行mount -a 命令时, 此文件系统是否被主动挂载.默认auto |
| rw/ro | 是否以只读或者读写模式进行挂载.默认rw |
| default | 具有rw,suid,dev,exec,auto,nouser,async等默认参数的设定 |
第五列:是否进行备份.通常这个参数的值为0或者1
| 选项 | 含义 |
|---|---|
| 0 | 代表不做备份 |
| 1 | 代表要每天进行备份操作 |
| 2 | 代表不定日期的进行备份操作 |
第六列:是否检验扇区:开机的过程中, 系统默认会以fsck检验我们系统是否为完整
| 选项 | 含义 |
|---|---|
| 0 | 不要检验磁盘是否有坏道 |
| 1 | 检验 |
| 2 | 校验 (当1级别检验完成之后进行2级别检验) |
Swap分区在系统的物理内存不够时, 将硬盘空间中的一部分空间释放出来, 以供当前运行的程序使用.
PS: 当物理内存不够时会随机kill占用内存的进程, 从而产生oom, 临时使用swap可以解决.
创建swap分区, 并格式化为swap分区.
# 接着上面的案例需要先卸载硬盘...(等下还要拿sdb做实验)
[root@kid ~]# umount /sdb
[root@kid ~]# fdisk /dev/sdb # 分1个G大小
# 硬盘分区
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
# 选择主分区(拓展分区e, 后面执行格式化一直说 mkswap: error: swap area needs to be at least 40 KiB
# 都设置1g还是小于40kb
Select (default p): p
# 默认即可, 回车
Partition number (1-4, default 1):
# 默认即可, 回车
First sector (2048-41943039, default 2048):
Using default value 2048
# 分配1G
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G
Partition 1 of type Extended and of size 1 GiB is set
# 查
Command (m for help): P
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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
Disk label type: dos
Disk identifier: 0xe62e2cb7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 5 Extended
# 保存
Command (m for help): W
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# 安装parted, 刷新内核立即生效, 无需重启
[root@kid ~]# yum -y install parted
[root@kid ~]# partprobe /dev/sdb
# 以swap格式 格式化分区
[root@kid ~]# mkswap /dev/sdb1
# 提示使用-f 强制执行
mkswap: /dev/sdb1: warning: don't erase bootbits sectors
(dos partition table detected). Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=5c6e79f7-15ec-4559-917f-e79771bc74e5
[root@kid ~]# mkswap -f /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old swap signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=942ea77c-f6ac-4cc2-987e-e7b1a166b9e4
查看当前swap分区大小, free -m
[root@kid ~]# free -m
总数 可用 免费 共享缓 冲区/缓存 总数
total used free shared buff/cache available
Mem: 972 184 678 7 109 659
Swap: 1023 0 1023 # 看这一行
# 扩展swap分区大小, 将sdb1添加进去
[root@kid ~]# swapon /dev/sdb1
[root@kid ~]# free -m
total used free shared buff/cache available
Mem: 972 184 677 7 109 659
Swap: 2047 0 2047 # 看这一行, 增加了一个G
ps: swapon -a 代表激活所有的swap.
# 缩小swap分区大小
[root@kid ~]# swapoff /dev/sdb1
[root@kid ~]# free -m
total used free shared buff/cache available
Mem: 972 185 676 7 109 658
Swap: 1023 0 1023 # 看这一行, 减少了一个G
[root@kid ~]# swapon -s
文件名 类型 大小 已用 权限
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -2
# 扩展swap分区大小, 将sdb1添加进去
[root@kid ~]# swapon /dev/sdb1
# 再次查看
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -2
/dev/sdb1 partition 1048572 0 -3
如果磁盘没有过多的分区可用, 也可以通过文件增加SWAP空间, 本质上还是磁盘
# 从黑洞中获取数据, 创建一个500m的文件
[root@kid ~]# dd if=/dev/zero of=/opt/swap_file bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 3.93591 s, 133 MB/s
# 设置文件权限
[root@kid ~]# chmod 0600 /opt/swap_file
# 格式化文件
[root@kid ~]# mkswap -f /opt/swap_file
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=a57eaa62-836b-4716-b39a-d34d79e15c5f
# 拓展swap内存
[root@kid ~]# swapon /opt/swap_file
# 查看swap内存
[root@kid ~]# free -m
[root@kid ~]# free -m
total used free shared buff/cache available
Mem: 972 186 160 7 625 636
Swap: 2547 0 2547
# 查看swap的设置
[root@kid ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -2
/dev/sdb1 partition 1048572 0 -3
/opt/swap_file file 511996 0 -4
PS: 如果希望swap开机自动挂载, 将swap信息追加至/etc/fstab即可.
————————————————
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
————————————————