学Linux的第九天--磁盘管理

news2024/11/25 16:12:22

目录

一、磁盘简介

(一)、认知磁盘

(1)结构

(2)物理设备的命名规则

 (二)、磁盘分区方式

MBR分区

MBR分区类型

扩展

GPT格式 

lsblk命令

使用fdisk管理分区

使用gdisk管理分区

拓展

格式化

blkid命令

挂载

umount命令

特殊挂载

挂载大文件

查看磁盘空间使用量

df命令

du命令

RAID

RAID0

RAID1

RAID5

RAID10 (主流)

mdadm命令

基本分区

开机自动挂载

LVM逻辑卷

交换分区


一、磁盘简介


(一)、认知磁盘

(1)结构

硬盘是由一片或多篇带有磁性的铝合金制的盘片构成,是一种大容量、永久性的外部存储设备
组成:盘片、马达驱动、缓存、控制电路、接口
逻辑结构
磁道:由内到外的同心圆
扇区:半径组成的扇形磁道存储区
柱面:多个盘片的统一磁道

(2)物理设备的命名规则

传统设别

固态硬盘
nvmen 磁盘号 [p1-10]

 (二)、磁盘分区方式


分区的目的:文件分类,将一块硬盘分成几个小块。用来根据使用存放不同的文件。

MBR分区

MBR(Master Boot Record ,主引导记录 ) 包含硬盘一系列参数和一段引导程序,硬盘引导程序的主
要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系
统,并将控制权交给启动程序
MBR 位于整个硬盘的 0 磁道 0 柱面 1 扇区
主引导扇区 512B
MBR=446B
DPT Disk Partition Table 硬盘分区表) =64B
最后两个字节 “55 AA” 是分区的结束标志
MBR分区类型
主分区( primary partition)
一块硬盘最多 4 个主分区,主分区不可以再进行二次分区
主分区可以直接建立文件系统,存放数据
可以用来引导、启动操作系统
扩展分区( extended partition) 一块硬盘最多一个扩展分区,加主分区最多 4
不能创建文件系统
可以划分逻辑分区
逻辑分区 (logical partition)
可以创建文件系统,存放数据
逻辑分区的数量没有限制。
支持的分区数量: 4 个主分区或者 3 个主分区 1 个扩展分区
扩展
硬盘最前面512byte划分出来里的最前面446字节=mbr主引导记录,如果这个删掉,叫找不到启动分区,系统启动不了
  剩下的66字节里的64字节就是mpt,剩余的2字节叫55aa--硬盘的有效性标识
  mpt-主分区表-有分区信息,一个分区要有16字节来记录分区,主分区表被划分为4块
  3个主分区-能真实使用,最后一个分区--扩展分区-里面又有逻辑分区
  一共分区不能超过16个,一块的大小不能高于2tb
blkid--查看这个设备是否有id信息--有则表示设备可用
cat   /proc/partitions    查看系统识别的分区表
lsof   -i    /dev/sdb1     磁盘吞吐
以上都是磁盘分区的查看
 

GPT格式 


分区命令:gdisk(parted---rhel6)

GPT(GUID Partition Table, 全局唯一标识分区表 ) 是一种比 MBR 分区更先进、更灵活的磁盘分区模式
GPT 分区表使用 LBA(Logical Block Address) 逻辑区块地址来记录磁盘引导、分区的相关信息
LAB 区块大小( 512B-4KB ),默认为 512B
LAB 区块共 68 个,前 34 个记录分区信息,后 34 个进行备份

一共可以分128个主分区

GPT大于小于2TB都可以。最大超过目前硬件可以支撑的硬盘大小。

GPT格式分区就不存在扩展分区、逻辑分区的概念。

#注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!因为转换格式要格式化硬盘。

lsblk命令

作用
查看磁盘信息
格式
lsblk 参数 设备名 指令
-d :仅列出硬盘本身信息,不显示分区信息
-f :列出磁盘的内的文件系统名称
-i : 使用 ASCII 码格式输出信息
-t :显示磁盘的详细信息
-p :显示设备完整名称

使用fdisk管理分区

作用
fdisk 命令工具默认将磁盘划分为 ==MBR== 格式的分区
命令: fdisk 设备名
注意: fdisk 命令以交互方式进行操作的,在菜单中选择相应功能键即可
a     调整磁盘的启动分区
p     显示当前磁盘的分区信息
d     删除磁盘分区
t      更改分区类型
l      显示所有支持的分区类型
u     切换所显示的分区大小单位
m     查看所有指令的帮助信息
n      创建新分区
q      不保存更改, 退出 fdisk 命令
w      把修改写入磁盘分区表, 然后退出 fdisk 命令
g       新建一个空的GPT 分区表
o       新建一个空的DOS 分区表

使用gdisk管理分区

注意
注意: gdisk 命令针对 GPT 分区格式,若在 MBR 分区格式下进行添加分区,则所有数据会全部丢失,
切记:一块硬盘中 fdisk gdisk 不能混用
格式: gdisk 设备名
实际工作中,硬盘分区是应保留一定的自由空间,以备将来分区空间不足时可以临时扩容

拓展

设置完后wq保存,然后udevadm   等同步分区表(系统识别)
gdisk    --gpt分区,fdisk里也可以设置gpt分区,parted   mkpart   primary   --分区

 

格式化

格式化的目的
当我们拿到了一张大白纸,首先为了使用方便要裁剪,然后为了书写工整要先画格,这里的 白纸
就是原始的硬盘 , 裁剪 意味着分区,然后的 画格 就是格式化,最后写入内容
格式化是对分区建立文件系统,文件系统是操作系统用于明确存储设备或分区上的文件的方法和数
据结构;即在存储设备上组织文件的方法
查看文件系统格式
方法:输入 mkfs 在键入 tab( 点击 2 ) 进行命令补全,可显示支持的文件系统格式
[root@server ~] # mkfs # 点击 2 tab
mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.fat mkfs.minix
mkfs.msdos mkfs.vfat mkfs.xfs
参数
mkfs.xfs - 参数 硬盘分区名
mkfs.ext4 - 参数 硬盘分区名
-f : 强制格式化,已存在文件系统时需要使用
-c : 建立文件系统前先检查坏块。
-V : 输出建立文件系统的详细信息

blkid命令

作用
显示设备的 UUID 值和文件系统名称
UUID
UUID :全局单一标识符 (Universally Unique Identifier),Linux 系统会给所有设备分配一个唯一的
UUID 值,以方便挂载
格式
blkid 设备名

挂载

概念
mount point :挂载点,是一个目录,该目录是进入磁盘分区(文件系统)的入口
挂载:将一个分区或者设备挂载至挂载点目录,建立连接,通过挂载点目录进入分区空间
mount 命令
格式
参数
mount [-t 文件系统类型 ] 设备名 挂载点目录
-a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来
-t :指定文件系统类型
-o 特殊设备选项:挂载设备时使用逗号分割输入额外参数
注意
单一文件系统不应该被重复挂载在不同的挂载点 ( 目录 )
单一目录不应该重复挂载多个文件系统
作为挂载点的目录,应为空目录,否则原有数据会隐藏

umount命令

作用
卸载分区,要移除 USB 磁盘、 U 盘、光盘和硬盘时,需要先卸载
格式
umount 参数 设备名称 [ 挂载点 ]
参数
-f :强制卸载
注意
若正使用文件系统,则应使用 cd 命令离开该目录后再卸载
开机挂载
作用
由于 mount 为手动挂载,重启后就会卸载,则修改 /etc/fstab 配置文件,实现开机自动挂载
配置文件分析
路径: /etc/fstab
注意
根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载
其它 mount point 必须为已建立的目录,可任意指定,但一定要遵守必须的系统目录架构原则 (FHS)
所有 mount point 在同一时间之内﹐只能挂载一次。
所有 partition 在同一时间之内﹐只能挂载一次

特殊挂载

挂载大文件

当只有一个分区,剩余空间还很大,自由空间很小不能进行新的分区,则可以在当前分区制作一个
大文件,在进行挂载,相当于一个新的分区来使用
例:建立根目录下新建 1GB 大文件,挂载并开机挂载使用
[root@server ~] # dd if=/dev/zero of=/loopdev count=1 bs=1G
[root@server ~] # mkfs.xfs -f /loopdev
[root@server ~] # mkdir /mloop
[root@server ~] # mount -o loop /loopdev /mloop
[root@server ~] # lsblk
[root@server ~] # vim /etc/fstab
/loopdev /mloop xfs defaults 0 0
[root@server ~] # mount -a
[root@server ~] # reboot
[root@server ~] # lsblk
增加 swap 分区
swap 分区:类似于 Windows 系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解
决内存容量不足的情况,因为 swap 毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢
查看:
添加过程:新建分区 -> 格式化该分区 -> 启用新的 swap-> 查看系统信息 -> 挂载

查看磁盘空间使用量

df命令
作用
列出文件系统的磁盘空间占用情况
df disk free ,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件
不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据 OS 的规则释
放掉已经删除的文件, df 记录的是通过文件系统获取到的文件的大小,他比 du 强的地方就是能够看
到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了
格式
参数
df - 参数 目录或文件名
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统
-k :以 KB 的容量显示各文件系统
-m :以 MB 的容量显示各文件系统
-h :以人们较易阅读的 GB,MB,KB 等格式自行显示
-H M = 1000K M = 1024K 的进位方式
-T :连同该分区的文件系统名称(例如 ext3 )也列出
-i :不用硬盘容量,而以 inode 的数量来显示
# 由于 df 主要读取的数据几乎都是针对整个文件系统,因此读取的范围主要是在 Super block 内的信息,所以
这个命令显示结果的速度非常快速。
du命令
作用
du :显示磁盘空间使用量(统计目录或文件所占磁盘空间大小),在默认情况下,文件大小的单位
KB
du disk usage ,是通过搜索文件来计算每个文件的大小然后累加, du 能看到的文件只是一些当前
存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统
也确定删除了该文件后,这时候 du df 就一致了
格式
参数
du - 参数 文件或目录名
-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;
-h : 以人们较易读的容量格式( G/M )显示;
-s : 列出总量,而不列出每个个别的目录占用了容量;
-S : 不包括子目录下的总计,与 -s 有点差别;
-k : KB 列出容量显示;
-m : MB 列出容量显示。

RAID

概念
当今 CPU 性能每年可提升 30%-50% 但硬盘仅提升 7%
硬盘在服务器中需要持续、频繁、大量的 I/O 操作,故障机率较大,则需要对硬盘进行技术改造,提
升读写性能、可靠性
1988 年,加利福尼亚大学伯克利分校首次提出并定义了 RAID 技术概念
原理: RAID( Redundant Array of Independent Disks ) 将多个硬盘设备组成一个大容量、安全更
好的磁盘阵列,并将数据切割成多个片段后分别存储到不同的物理硬盘上,利用分散读写技术来来
提升硬盘性能,同时也备份了多个副本到不同硬盘中,拥有了备份冗余功能
常见 RAID 组建方案
RAID0
原理:把至少 2 块硬盘通过硬件或软件方式串联,组成一个大的卷组,并将数据依次写入到各个硬盘
优点:数据同步传输 , 读取 / 写入分开 , 性能大大提升
缺点:若任意一块硬盘故障会导致整个系统的数据损坏,无备份冗余能力错误修复能力
总结:使用率 100%, 至少 2 块磁盘才能使用,优点是快,提升磁盘的读写速度,缺点是不安全
RAID1
产生原因:若生产环境对硬盘的读写速度没有较大要求,但希望增加数据安全性时可使用 RAID
原理:把至少 2 块硬盘绑定起来,写入数据时将数据同时也写入另一或多块硬盘中,
本质:多个硬盘作为镜像备份
优点:数据备份冗余安全性大大提升
缺点:硬盘利用率下降
总结:是镜像,使用两块磁盘,一式两份的方式,支持容错,冗余,数据安全不丢失,缺点是速度
不快,使用率 50% ,成本较大。
RAID5
产生原因:兼顾 读写速度 数据安全 成本 的一种折中方式
原理:需至少三块硬盘,将数据分块存储到不同硬盘中,硬盘中必须存储其它一个硬盘的 parity(
偶校验信息 )
优点:兼顾性能,通过 奇偶校验 替代 镜像备份
缺点:硬盘数据安全性较低
总结:使用率 (n-1)/n* 容量 , 磁盘坏了会立即补上,数据会恢复
RAID10 (主流)
本质: RAID1+RAID0 的组合
原理:至少需要 4 块硬盘,先制作两两的 RAID1 阵列,以保证安全性,在两两制作 RAID0 ,以提高读
写速度
优点:兼具速度和安全性
缺点:成本较高

mdadm命令

作用
管理系统中的 RAID 磁盘阵列
格式
mdadm [ 模式 ] <RAID 设备名 > - 参数 [ 成员设备名称 ] 参数
示例
-a :检测设备名称
-n :指定硬盘数量
-l :指定 RAID 级别
-C :创建 RAID
-v :显示过程
-f :模拟设备损坏
-r :移除设备
-Q : 查看摘要
-D :查看详细信息
-S :停止 RAID 磁盘阵列

基本分区


首先给关机状态的虚拟机添加磁盘

这里在添加硬盘时多添加几块,方便后续练习实验;

[root@localhost ~]# lsblk        #查看磁盘设备。当硬盘已经被添加,但是还没有格式化没有挂载的时候,使用lsblk查看硬盘信息;

NAME:                   设备的名称

MAJ:MIN                主设备号:次设备号

RM:                        设备是否可移动。0表示不可移动设备,1表示制度设备。

TYPE:                     设备的类型。常见的类型包括disk(硬盘)、part(分区)、rom(制度存储设备)等。

1、fdisk
        MBR 14个分区(4个主分区,扩展分区,逻辑分区)

[root@localhost ~]# fdisk -l  /dev/sdb                 #查看磁盘分区信息

[root@localhost ~]# fdisk /dev/sdb                     #开始分区

m:查看帮助
n:新建分区
w:保存退出
p:打印分区信息
parteprobe /dev/sdb        #更新磁盘分区表,手动让内核更新分区表。不需要重启;
 
lsblk                        #查看磁盘设备
        如果在创建三个主分区后需要一个以上的分区,那么就需要在第二步的时候选择创建扩展分区,然后在扩展分区的基础上创建逻辑分区,这样就可以满足创建更多分区的需求;

MBR与GPT分区格式转换的方法:

[root@lnmt ~]# parted -s /dev/sdb malabel gpt        #将/dev/sdb(MBR)格式转化成为(GPT)格式
 
[root@lnmt ~]# parted -s /dev/sdb malabel msdos        #将/dev/sdb(GPT)格式转化成(MBR)格式
2、gdisk创建分区
[root@lnmt ~]# yum -y install gdisk        #安装分区工具
 
[root@lnmt ~]# gdisk -l /dev/sdb                #查看磁盘分区信息
 
[root@lnmt ~]# gdisk /dev/sdb                #开始分区
 
[root@lnmt ~]# partprobe /dev/sdb        #刷新分区表
3、创建文件系统(格式化)
[root@lnmt ~]# mkfs.ext4 /dev/sdb1    #格式化成ext4格式的文件系统
[root@lnmt ~]# mkfs.xfs /dev/sdb2    #格式化成xfs格式的文件系统
4、挂载mount使用
[root@lnmt ~]# mkdir /mnt/disk1    #创建挂载目录
[root@lnmt ~]# mount /dev/sdb1 /mnt/disk1/    #挂载
5、查看磁盘挂载与磁盘使用空间


-T        打印文件系统类型

-h        人性化显示,磁盘空间大小

6、取消挂载
[root@lnmt ~]# umount /mnt/disk1    #卸载硬盘
[root@lnmt ~]# umount -l /mnt/disk1    #强制卸载硬盘,即使目录有资源被进程占用,也可以卸载
[root@lnmt ~]# fuser 挂载点    #查找占用文件的进程pid然后杀死,再进行卸载


开机自动挂载


1、/etc/fstab文件实现开机的时候自动挂载
[root@lnmt ~]# blkid /dev/sdb1    #查看uuid和文件系统类型
/dev/sdb1: UUID="5be2ae51-a819-47e0-aeb6-eb75dcd0b6f4" TYPE="ext4"
[root@lnmt ~]# vim /etc/fstab
    UUID=5be2ae51-a819-47e0-aeb6-eb75dcd0b6f4  /mnt/disk1  ext4   defaults    0 0
参数解释:

第一列:挂载设备

        (1)/dev/sdb1

        (2)UUID=设备的uuid     RHEL6/7的默认写法,同一台机器内唯一的一个设备标识

第二列:挂载点

第三列:文件系统类型

第四列:文件系统属性

第五列:是否对文件系统进行磁带备份:0        #不备份

第六列:是否检查文件系统:0        #不检查

[root@lnmt ~]# mount -a    #自动挂载
2、/etc/rc.d/rc.local开机自动挂载
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。也就是说,如果有任何需要在系统启动时运行的工作,则只需写入 /etc/rc.d/rc.local 配置文件即可;

[root@lnmt ~]# vim /etc/rc.d/rc.local
    mount /dev/sdb1 /mnt/disk1/
[root@lnmt ~]# chmod +x /etc/rc.d/rc.local    #添加执行权限
[root@lnmt ~]# reboot

LVM逻辑卷


1、LVM管理
LVM概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上,文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。

LVM的特点

#传统分区的缺点:

传统的文件系统是基于分区的,一个文件系统对应一个分区。这种方式比较直观,但不宜改变。当一个分区空间已满时,无法对其扩充,只能采用重新分区/建立文件系统,非常麻烦;或把分区中的数据移到另一个更大的分区中。

#当采用LVM时:

1,将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;

2,当硬盘空间不足而加入新的硬盘时,不必将数据从原硬盘迁到新硬盘,而只需把新的分区加入卷组并扩充逻辑卷即可。

3,文件系统建立在LVM上,可以跨分区,方便使用;

#使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。

2、创建LVM
首先准备添加3块磁盘:可以是/dev/sdb这种没有分区的也可以是/dev/sdb这种已经分区了的

注意:如果没有pv命令,安装    #yum -y install lvm2

[root@localhost ~]# pvcreate /dev/sdb    #创建pv
[root@localhost ~]# pvs / pvscan / pvdisplay   #三种查看pv的方法
 


以上是第一步,创建物理卷;

[root@localhost ~]# vgcreate vg1 /dev/sdb    #创建卷组,这里还可以-s来指定创建分区的PE大小
[root@localhost ~]# vgs / vgscan / vgdisplay    #查看卷组


第二步:创建卷组;

[root@localhost ~]# lvcreate -L 2G -n lv1 vg1    #创建lv
[root@localhost ~]# lvcreate -l 200 -n lv2 vg1    #采用PE的方式创建一个lv
[root@localhost ~]# lvcreate -l free PE -n lv2 vg1     #PE的另一种写法
[root@localhost ~]# lvs / lvscan / lvdisplay #查看lv的三种命令


第三步:创建lv,这里我用了三种命令创建了三个lv;

-L:指定lv的大小;

-n:给创建的lv起一个名字;

-l 200 :指定PE数量来制定lv大小;

3、制作文件系统并挂载
[root@localhost ~]# mkfs.xfs /dev/vg1/lv1    #制作xfs的文件系统
[root@localhost ~]# mkfs.ext4 /dev/vg1/lv2    #制作ext4的文件系统
[root@localhost ~]# mkdir /mnt/lv{1..2}    #创建挂载点
[root@localhost ~]# mount /dev/vg1/lv1 /mnt/lv1    #挂载
[root@localhost ~]# mount /dev/mapper/vg1-lv2 /mnt/lv2    #挂载的另一种写法
挂载以后:df -hT        #查看磁盘挂载信息

        不过此时只是临时挂载,要想永久挂载就需要前文提到的修改系统文件以达到开机自己挂载,在这我也就不再多赘述了;

4、LVM逻辑卷扩容
        4.1、VG管理

如果lv所在的vg有空间直接对lv扩容就可以了!

        扩大VG vgextend        

[root@localhost ~]# pvcreate /dev/sdc    #创建新的物理卷
[root@localhost ~]# vgextend vg1 /dev/sdc    #vg1卷组名,将/dev/sdc扩展到vg1中
        扩大LV lvextend

[root@localhost ~]# lvextend -L 5G /dev/vg1/lv1    #这是指将lv1扩容到5G
[root@localhost ~]# lvextend -L +3G /dev/vg1/lv1    #这是指在原有基础上加3G
[root@localhost ~]# lvectend -l +200 /dev/vg1/lv1    #PE写法,在原有的基础上加200个PE
        FS(file system)文件系统扩容

        这里介绍xfs和ext4两种文件系统的扩容;

[root@localhost ~]# xfs_growfs /dev/vg1/lv1    #xfs文件系统扩容
[root@localhost ~]# resize2fs /dev/vg1/lv1    #ext4文件系统扩容
5、LVM逻辑卷缩容
重要提示:在进行任何磁盘操作前,请务必备份重要数据。操作错误可能导致数据丢失;

备份数据:再开始缩小逻辑卷之前,首先备份其中所有的数据,以防止数据丢失。

卸载逻辑卷:如果逻辑卷包含操作系统的根目录或者已挂载的其他重要目录,需要再进入单用户模式下或使用Live CD环境下卸载该逻辑卷。这是因为无法在线缩小当前正在使用的逻辑卷。

卸载文件系统:在缩小逻辑卷之前,确保已卸载文件系统。如果是ext2/ext3/ext4文件系统,可以使用 “umount /mnt/vg/lv”

检查文件系统:在缩小逻辑卷之前,最好使用文件系统检查工具检查文件系统是否有错误。对于ext2/ext3/ext4文件系统可以运行:“e2fsck -f /de/vg/lv”

缩小逻辑卷:使用lvresize命令来缩小逻辑卷。例如缩小到10G,可以运行:

                        lvresize --resizefs --size  10G /dev/vg/lv

重新挂载逻辑卷

验证操作:确认文件系统和逻辑卷已成功缩小到所需大小

请注意,缩小逻辑卷涉及风险,如果操作不当可能导致数据丢失。因此,再进行此操作之前,无比备份所有重要数据,并谨慎操作。如果你对这些步骤不确定或不熟悉,建议寻求专业人士的帮助。

交换分区


        交换分区管理Swap--也叫虚拟内存

        作用:提升内存的容量,防止OOM(Out of Memory)

        现象是当内存不够的时候内核会随即杀死进程,它认为占用内存多的进程。(内核会先删除占用内存多的进程)

swap分区大小的设置规则:

再Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。

内存小于4GB,推荐不少于2GB的swap空间;

内存4GB~16GB,推荐不少于4GB的swap空间;

内存16GB~64GB,推荐不少于8GB的swap空间;

内存64GB~256GB,推荐不少于16GB的swap空间;

1、查看当前的交换分区
[root@localhost ~]# free -m    #查看内存
[root@localhost ~]# swapon -s    #查看交换分区信息


2、增加交换分区
增加交换分区,可以是基本分区,LVM,File;

基本分区制作交换分区

[root@localhost ~]# fdisk /dev/sdd    #分一个主分区出来
[root@localhost ~]# partbrobe /dev/sdd     #刷新分区表
[root@localhost ~]# mkswap /dev/sdd1        #初始化
[root@localhost ~]# blkid /dev/sdd        #查看UUID
[root@localhost ~]# vim/det/fstab        #制作开机自动挂载
[root@localhost ~]# swapon -a        #激活swap分区
[root@localhost ~]# swapoff /dev/sdd         #关闭swap分区
file制作

[root@localhost ~]# dd if=/dev/zero of=/swap.img bs=1M count=2000
[root@localhost ~]# mkswap /swap.img    #初始化
[root@localhost ~]# vim /etc/fstab    #设置开机自动挂载
[root@localhost ~]# chmod 600 /swap.img    #交换分区权限设置为600,默认为644权限不安全
[root@localhost ~]# swapon -a    #激活
[root@localhost ~]# swapon -s    #查看交换分区信息
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2247394.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT实现拷贝复制文件操作 QT5.12.3环境 C++实现

案例需求&#xff1a;利用QT线程操作&#xff0c;实现拷贝复制文件操作 代码&#xff1a; myfile.h #ifndef MYFILE_H #define MYFILE_H#include <QObject> #include <QDebug> #include <QThread> #include <QFile> #include <QtWidgets> class…

IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)

汉化 setting 中选择插件 完成 安装出现问题 1.可能是因为之前下载过的idea&#xff0c;找到连接中 文件&#xff0c;卸载即可。

Jenkins-Git Parameter 插件实现指定版本的发布和回滚

在上一篇文章的基础设置上进行 1. 机器准备 开发10.0.0.204gitlab10.0.0.201jenkins10.0.0.200web10.0.0.202 2. 开发主机 在开发机器上修改不同版本的前端页面&#xff0c;并打上标签 第一次修改 [rootdev wheel]#vim index.html [rootdev wheel]#git commit -am "1…

Ubuntu ESP32开发环境搭建

文章目录 ESP32开发环境搭建安装ESP-IDF搭建一个最小工程现象 ESP32开发环境搭建 最近有个小项目需要用到能够联网的mcu驱动&#xff0c;准备玩玩esp的芯片&#xff0c;记录下ESP32开发环境搭建的过程。 ESP-IDF 是乐鑫科技为其 ESP32 系列芯片提供的官方开发框架。这个框架主…

《剖析 Spring 原理:深入源码的旅程(二)》

六、Spring 的 Bean 注入与装配 Spring 的 Bean 注入与装配的方式有很多种&#xff0c;可以通过 xml、get set 方式、构造函数或者注解等。简单易用的方式就是使用 Spring 的注解&#xff0c;Spring 提供了大量的注解方式&#xff0c;如 Autowired、Qualifier 等。Spring 还支持…

Git的使用_仓库管理_CI/CD介绍

文章目录 一、Git的基础知识一-1、什么是GitLinux命令行的git的简易安装Git项目的组成Git的基本工作流程Git文件的三种状态 一-2、存储库远程存储库与本地存储库创建存储库git init命令的使用方法1. 初始化一个新的 Git 仓库2. 在指定目录初始化一个新的 Git 仓库3. 初始化一个…

Android 实现悬浮球的功能

Android 实现悬浮球的功能 在 Android 中&#xff0c;实现悬浮球可以通过以下方式实现&#xff0c;常见的方法是使用 WindowManager 创建一个悬浮窗口。以下是具体的实现步骤&#xff1a; 1. 配置权限 在 AndroidManifest.xml 中添加悬浮窗权限&#xff1a; <uses-permis…

C语言数据结构学习:循环队列

C语言 数据结构学习 汇总入口&#xff1a; C语言数据结构学习&#xff1a;[汇总] 1. 循环队列 队列的博客&#xff1a;C语言数据结构学习&#xff1a;队列 循环队列会预先定义最大队列空间&#xff0c;然后定义一个数组&#xff0c;通过队列头和队列尾指针分别指向开头和结尾&…

Java教程:SE进阶【十万字详解】(下)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

37_U-Net网络详解

1.U-Net 网络概述 U-Net 是一种深度学习模型&#xff0c;广泛用于图像的语义分割任务。U-Net 网络的结构特别适合医学影像分割&#xff0c;尤其在少量训练数据的情况下表现优异。该网络由一个编码器-解码器架构组成&#xff0c;具有对称的“U”形结构&#xff0c;因此得名为 U…

mysql-分析MVCC原理

一、MVCC简介 MVCC是一种用来解决读写冲读的无锁并发控制&#xff0c;也就是为事务分配单增长的时间戳&#xff0c;为每个修改保存一个版本&#xff0c;版本与事务时间戳关联&#xff0c;读操作只读该事务开始前的数据库的快照&#xff0c;所以MVCC可以为数据库解决一些问题。…

【CSP CCF记录】201812-2第15次认证 小明放学

题目 样例1输入 30 3 30 8 0 10 1 5 0 11 2 2 0 6 0 3 3 10 0 3 样例1输出 30 3 30 8 0 10 1 5 0 11 2 2 0 6 0 3 3 10 0 3 思路 参考&#xff1a;CCF小白刷题之路---201812-2 小明放学&#xff08;C/C 100分&#xff09;_小明放学测试数据-CSDN博客 我们使用一个for循环计算…

Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…

计算机网络-VPN虚拟专用网络概述

前面我们学习了在企业内部的二层交换机网络、三层路由网络包括静态路由、OSPF、IS-IS、NAT等&#xff0c;现在开始学习下VPN&#xff08;Virtual Private Network&#xff0c;虚拟专用网络&#xff09;&#xff0c;其实VPN可能很多人听到第一反应就是梯子&#xff0c;但是其实这…

《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍

经过近一周的USART学习&#xff0c;我深刻体会到通信对单片机的重要性。它就像人类的手脚和大脑&#xff0c;只有掌握了通信技术&#xff0c;单片机才能与外界交互&#xff0c;展现出丰富多彩的功能&#xff0c;变得更加强大和实用。 单片机最基础的“语言”是二进制。可惜&am…

【蓝桥杯C/C++】深入解析I/O高效性能优化:std::ios::sync_with_stdio(false)

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 蓝桥杯C/C 文章目录 &#x1f4af;前言&#x1f4af;C 语言与 C 语言的输入输出对比1.1 C 语言的输入输出1.2 C 语言的输入输出 &#x1f4af; std::ios::sync_with_stdio(false) 的作用与意义2.1 什么是 std::ios::s…

初识Linux—— 基本指令(下)

前言&#xff1a; 本篇继续来学习Linux的基础指令&#xff0c;继续加油&#xff01;&#xff01;&#xff01; 本篇文章对于图片即内容详解&#xff0c;已同步到本人gitee&#xff1a;Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat ​ cat 查看文件…

VM虚拟机装MAC后无法联网,如何解决?

✨在vm虚拟机上&#xff0c;给虚拟机MacOS设置网络适配器。选择NAT模式用于共享主机的IP地址 ✨在MacOS设置中设置网络 以太网 使用DHCP ✨回到本地电脑上&#xff0c;打开 服务&#xff0c;找到VMware DHCP和VMware NAT&#xff0c;把这两个服务打开&#xff0c;专一般问题就…

MCGSMCGS昆仑通态触摸屏

MCGS昆仑通态触摸屏应用实例详解 1目录设置 本案例讲了两个窗口的互相调用 创建工程 首先创建一个新工程 打开软件 McgsPro组态软件 菜单栏&#xff1a;文件&#xff1a;新建工程 打开工程设置窗口 HMI配置中应该是对应的不同型号的触摸屏&#xff0c; 选择一个类型&#x…

aws ses生产环境申请

* aws ses生产环境申请经验&#xff1a; 要有域名邮箱作为反馈联系邮箱 且有收发记录 最好使用aws的WorkMail要说明清晰的使用用途、预估量、如何处理退信和投诉、防spam策略 等内容&#xff0c;这里可以先问问AI&#xff08;比如&#xff1a;如何处理退信和投诉&#xff1f;…