16-Linux磁盘管理

本文详细介绍了磁盘的基本概念,包括磁盘的工作原理、存储结构(盘片、磁道、扇区、柱面、磁头),以及磁盘在Linux系统中的命名方式。此外,还深入讲解了磁盘分区,包括使用fdisk创建MBR和GPT分区,以及使用gdisk处理大于2TB的磁盘。最后,探讨了磁盘的格式化、挂载与卸载,以及如何创建和管理SWAP分区。对于磁盘管理,理解这些基本概念和操作至关重要。
摘要由CSDN通过智能技术生成

1.磁盘的基本概念

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

img

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

img

当记录数据时, 硬盘的磁头开始通电形成强磁场, 数据转变成高低电平, 改变电流的流向, 形成不同的磁场,
在电流磁场的作用下, 使颗粒磁化, 从而将信息记录在圆盘上.

写数据时磁头移到到磁盘要写入的位置,输入电流产生感应磁场。
受磁场的影响,磁头下磁性粒子的磁极方向变为与磁场同向。
如此通过给磁头不同的电流方向,使得磁盘局部产生不同的磁极,
产生的磁极在未受到外部磁场干扰下是不会改变的。

img

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

img

2. 磁盘的基本结构

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

img
img

3. 磁盘的预备知识

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

img

1. 淘汰的接口
IDE, Scsi(已经被淘汰)  

2022-09-06_00880

image-20220906185026163

2. 目前企业使用
SATA III 与SAS(企业使用较多)  

img

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

111

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

image-20220906181213565

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。

image-20220906182838387

image-20220906182820992

2022-09-06_00876

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

1662460346494

3.2 磁盘的基本术语
尺寸: 2.5英寸 3.5英寸 
容量:KB MB GB TB PB EB  
转速:7500 15000  
IOPS:每秒能够发生IO的次数
3.3 磁盘在系统上的命名方式
设备名称分区信息设备类型
/dev/sda/dev/sda1第一块物理磁盘第一分区
/dev/sdb/dev/sdb2第二块物理磁盘第二个分区
/dev/vdd/dev/vdd4第四块虚拟磁盘的第四个分区
MBR分区表只能分配4个主分区, 系统中分区由数字编号表示, 1~4留给主分区使用和扩展分区, 逻辑分区从5开始.
GPT支持分配128个主分区.
* 注意MBR与GPT之间不能互转, 会导致数据丢失.  

4. Fdisk磁盘分区

添加一块小于2TB的磁盘进行使用, 步骤如下:  
1. 给虚拟机添加一块新的硬盘  
2. 使用fdisk进行分区  
3. 使用mkfs进行格式化  
4. 使用mount进行挂载  
PS: 生产分区建议, 如无特殊需求直接使用整个磁盘即可, 无需分区. (装系统才分区)
4.1 添加硬盘
虚拟机关机, 为虚拟机添加一个硬盘, 设置都为默认即可.

image-20220906200343416

4.2 查看分区
# 查看所有分区情况
[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
4.3 操作分区的硬盘
# 对/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)   # 拓展功能  
4.4 创建主分区
# 新建分区
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
4.5 创建扩展分区
# 新建分区
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

4.6 创建逻辑分区
# 新建分区 
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   

4.7 fdisk查看分区情况
# 查看分区创建 
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

4.8 保存分区设置
# 保存分区  
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

4.9 格式化磁盘
mkfs格式化磁盘, 实质创建文件系统.
格式化硬盘命令: mkfs [选项] 参数
选项:   
    -b  设定数据区块占用空间大小, 目前支持102420484096 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 
4.10 挂载硬盘
挂载硬盘命令: 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

5. Gdisk分区

fdisk不支持给高于2TB的磁盘进行分区.
如果有单块盘高于2TB, 使用Gdisk进行分区.
# 安装gdisk分区工具  
[root@kid ~]# yum install gdisk -y  
5.1 新建分区
# 创建一个新分区, 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'


5.2 查看分区
# 打印查看 
Command (? for help): p  
Number  Start (sector)    End (sector)  Size       Code  Name  
   1            2048         1026047   500.0 MiB   8300  Linux filesystem  
5.3 保存分区
# 保存分区
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
5.4 格式化硬盘
# 直接格式化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

5.5 挂载硬盘
# 创建挂载点
[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.

6. 磁盘的挂载与卸载

6.1 临时挂载
前面我们已经提到过, 如果需要使用磁盘的空间, 需要准备一个空的目录作为挂载点, 与该设备进行关联.
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

6.2 卸载磁盘
使用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  
6.3 永久挂载
如果需要实现永久挂载则需要将挂载信息写入/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
...
6.5 自动挂载硬盘配置文件介绍
/etc/fstab配置文件编写格式
要挂载的设备挂载点(入口)文件系统类型挂载参数是否备份是否检查
/dev/sdb/sdbxfsdefaults00
第四列:挂载参数.挂载参数有很多, 在这块我们了解即可, 不必深究.
参数含义
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级别检验)

7. 虚拟磁盘介绍SWAP

Swap分区在系统的物理内存不够时, 将硬盘空间中的一部分空间释放出来, 以供当前运行的程序使用.  
PS: 当物理内存不够时会随机kill占用内存的进程, 从而产生oom, 临时使用swap可以解决.
7.1 创建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

7.2 查看当前swap分区大小
查看当前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  # 看这一行
7.3 拓展缩小swap分区
# 扩展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

7.4 检查当前swap分区设备
[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

7.5 以文件形式创建swap虚拟内存
如果磁盘没有过多的分区可用, 也可以通过文件增加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即可.

————————————————
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言是为了避免文章提示质量低.
————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值