当前位置: 首页 > news >正文

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

目录

一、磁盘简介

(一)、认知磁盘

(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    #查看交换分区信息
 

相关文章:

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

目录 一、磁盘简介 &#xff08;一&#xff09;、认知磁盘 &#xff08;1&#xff09;结构 &#xff08;2&#xff09;物理设备的命名规则 &#xff08;二&#xff09;、磁盘分区方式 MBR分区 MBR分区类型 扩展 GPT格式 lsblk命令 使用fdisk管理分区 使用gdisk管理分…...

CLIP-Adapter: Better Vision-Language Models with Feature Adapters 论文解读

abstract 大规模对比视觉-语言预训练在视觉表示学习方面取得了显著进展。与传统的通过固定一组离散标签训练的视觉系统不同&#xff0c;(Radford et al., 2021) 引入了一种新范式&#xff0c;该范式在开放词汇环境中直接学习将图像与原始文本对齐。在下游任务中&#xff0c;通…...

D74【 python 接口自动化学习】- python 基础之HTTP

day74 http基础定义 学习日期&#xff1a;20241120 学习目标&#xff1a;http定义及实战 -- http基础介绍 学习笔记&#xff1a; HTTP定义 HTTP 是一个协议&#xff08;服务器传输超文本到浏览器的传送协议&#xff09;&#xff0c;是基于 TCP/IP 通信协议来传递数据&…...

维护表空间和数据文件(一)

学习目标 定义表空间和数据文件的用途创建表空间管理表空间使用Oracle管理文件&#xff08;OMF&#xff09;创建和管理表空间获取表空间信息 表空间和数据文件 Oracle逻辑上将数据存储在表空间中&#xff0c;物理上将数据存储在数据文件中。 Tablespaces&#xff1a; 一次只…...

H.265流媒体播放器EasyPlayer.js H5流媒体播放器关于如何查看手机端的日志信息并保存下来

现今流媒体播放器的发展趋势将更加多元化和个性化。人工智能的应用将深入内容创作、用户体验优化等多个方面&#xff0c;带来前所未有的个性化体验。 EasyPlayer.js H.265流媒体播放器属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#…...

Apple Vision Pro开发003-PolySpatial2.0新建项目

unity6.0下载链接:Unity 实时开发平台 | 3D、2D、VR 和 AR 引擎 一、新建项目 二、导入开发包 com.unity.polyspatial.visionos 输入版本号 2.0.4 com.unity.polyspatial&#xff08;单独导入&#xff09;&#xff0c;或者直接安装 三、对应设置 其他的操作与之前的版本相同…...

解决 npm xxx was blocked, reason: xx bad guy, steal env and delete files

问题复现 今天一位朋友说&#xff0c;vue2的老项目安装不老依赖&#xff0c;报错内容如下&#xff1a; npm install 451 Unavailable For Legal Reasons - GET https://registry.npmmirror.com/vab-count - [UNAVAILABLE_FOR_LEGAL_REASONS] vab-count was blocked, reas…...

leetcode 面试150之 156.LUR 缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…...

Vue 动态给 data 添加新属性深度解析:问题、原理与解决方案

在 Vue 中,动态地向 data 中添加新的属性是一个常见的需求,但它也可能引发一些问题,尤其是关于 响应式更新 和 数据绑定 的问题。Vue 的响应式系统通过 getter 和 setter 来追踪和更新数据,但 动态添加新属性 时,Vue 并不会自动为这些新属性创建响应式链接。 1. 直接向 V…...

Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ UI部分暂时完结&#xff01;&#xff01;&#xff01; 本章节优化了UI中物品描述的显示效果&#xff0c;技能描述的显示效果 并且可以批…...

面试:请阐述MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用

大家好&#xff0c;我是袁庭新。星球里的小伙伴去面试&#xff0c;面试官问&#xff1a;MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用&#xff1f;一脸懵逼&#xff5e;不知道该如何回答。 在MySQL的配置文件my.cnf中&#xff0c;log-bin和binlog-do-db是与二进制日志…...

监控报警系统的指标、规则与执行闭环

随笔 从千万粉丝“何同学”抄袭开源项目说起&#xff0c;为何纯技术死路一条&#xff1f; 数据源的统一与拆分 监控报警系统的指标、规则与执行闭环 java 老矣&#xff0c;尚能饭否&#xff1f; 一骑红尘妃子笑&#xff0c;无人知是荔枝来! 有所依 我们如何知道系统交易…...

玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

动态反馈控制器(DFC)和 服务率控制器(SRC);服务率和到达率简单理解

目录 服务率和到达率简单理解 服务率 到达率 排队论中的应用 论文解析:队列等待成本动态感知控制模型 动态反馈和队列等待成本意识: 服务速率调整算法: 动态反馈控制器(DFC)和 服务率控制器(SRC) SRC公式4的原理 算力资源分配系统中的调整消耗 举例说明 服务…...

Flutter-Web首次加载时添加动画

前言 现在web上线后首次加载会很慢&#xff0c;要5秒以上&#xff0c;并且在加载的过程中界面是白屏。因此想在白屏的时候放一个加载动画 实现步骤 1.找到web/index.html文件 2.添加以下<style>标签内容到<head>标签中 <style>.loading {display: flex;…...

stl 实现非容器类型元素和容器元素比较

在 C 标准模板库&#xff08;STL&#xff09;中&#xff0c;有许多算法可以接受自定义的比较函数&#xff08;Compare&#xff09;。这些算法通常涉及排序、查找、合并、集合操作等场景&#xff0c;允许用户通过 Compare 函数指定如何比较两个元素。 自定义compare的算法 排序…...

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址&#xff1a;https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后&#xff0c;会有一个exe安装包&#xff0c;点击运行安装即可。 注意事项&#xff0c;如果Windows操…...

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…...

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 4.Spring Task 4.1cron表达式 4.2入门案例 1.HttpClient 简单来说&#xff0c;HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发&#xff0c;对于后端程序员来…...

Java Stream API - 高效数据处理的核心工具_01

文章目录 概述&#xff1a;高效数据处理的核心工具1. 流的创建1.1 从集合创建流1.2 从数组创建流1.3 直接创建流 2. 中间操作&#xff1a;流的转换和处理2.1 map()&#xff1a;映射操作2.2 filter()&#xff1a;过滤操作2.3 flatMap()&#xff1a;扁平化映射操作2.4 sorted()&a…...

【计算机网络】网段划分

一、为什么有网段划分 IP地址 网络号(目标网络) 主机号(目标主机) 网络号: 保证相互连接的两个网段具有不同的标识 主机号: 同一网段内&#xff0c;主机之间具有相同的网络号&#xff0c;但是必须有不同的主机号 互联网中的每一台主机&#xff0c;都要隶属于某一个子网 -&…...

HTML和CSS 表单、表格练习

HTML和CSS 表格练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML表格练习</title>…...

ByteBuffer模拟拆包输出消息字符串

以下代码模拟网络编程中的粘包现象&#xff0c;用\n进行分割消息块 源码 public static void main(String[] args) {ByteBuffer byteBuffer1 ByteBuffer.allocate(60) ;byteBuffer1.put("Hello World\nWhat is you name?\nI am Licky!\nHo".getBytes());splice(byt…...

Java FastJson 踩坑记录

newtonsoft.json 第一次用。java 转的json给newtonsoft.json解析&#xff0c;一直解析不出来。 直到写这个文章的时候&#xff0c;我都还觉得是newtonsoft.json和fastjson都有问题。 先看java JSONField(name"Rank​Value") public long Rank1​1000; JSONField(na…...

深入理解 Java 阻塞队列:使用场景、原理与性能优化

在并发编程中&#xff0c;线程安全的队列是解决线程间任务传递和调度的关键工具之一。阻塞队列&#xff08;BlockingQueue&#xff09;作为一种线程安全的队列&#xff0c;实现了在并发环境下对共享数据的安全访问&#xff0c;广泛应用于生产者-消费者模型、任务调度和多线程计…...

Python常用高阶函数:map()、filter()、reduce()

Python常用高阶函数&#xff1a;map()、filter()、reduce() 高阶函数是一类以函数作为参数或者返回值的函数&#xff0c;能够显著提高代码的简洁性和灵活性。在Python中&#xff0c;map()、filter()和reduce()是三种非常常用的高阶函数&#xff0c;它们常被用来对列表或其他可…...

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法&#xff08;Polar Lights Optimization, PLO&#xff09;是2024年提出的一种新型的元启发式优化算法&#xff0c;它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下&#xff0c;与地球大气层中的气体分子碰撞而产…...

【大数据学习 | Spark-Core】关于distinct算子

只有shuffle类的算子能够修改分区数量&#xff0c;这些算子不仅仅存在自己的功能&#xff0c;比如分组算子groupBy&#xff0c;它的功能是分组但是却可以修改分区。 而这里我们要讲的distinct算子也是一个shuffle类的算子。即可以修改分区。 scala> val arr Array(1,1,2,…...

ShuffleNet:一种为移动设备设计的极致高效的卷积神经网络

摘要 https://arxiv.org/pdf/1707.01083 我们介绍了一种名为ShuffleNet的计算效率极高的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如10-150 MFLOPs&#xff09;而设计。新架构利用两种新操作&#xff1a;逐…...

AIGC-------AIGC在社交媒体内容生成中的应用

AIGC在社交媒体内容生成中的应用 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;社交媒体平台上的内容创作方式发生了巨大变化。AIGC使得内容创作的门槛大大降低&#xff0c;从而让更多的人能够参与到社交媒体内容的创作中&#xff0c;同时也使…...

提取图像中的高频信息

三种方法 1. 傅里叶变换提取高频和低频【有损】2. 傅里叶变换提取振幅和相位【无损】3. 小波变换【不涉及恢复代码】代码1.代码2代码3 1. 傅里叶变换提取高频和低频【有损】 环境&#xff1a;集群210.30.98.11效果: 2. 傅里叶变换提取振幅和相位【无损】 环境&#xff1a;集…...

js函数声明

在 JavaScript 中&#xff0c;函数是一等公民&#xff08;first-class citizen&#xff09;&#xff0c;这意味着函数可以作为变量、参数和返回值使用。JavaScript 提供了多种定义函数的方式&#xff0c;以下是几种常见的方法&#xff1a; 1. 函数声明&#xff08;Function De…...

语言模型中的多模态链式推理

神经网络的公式推导 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果运行代码补充细节安装包下载Flan-T5数据集准备rougenltkall-MiniLM-L6-v2运行 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reason…...

【Java 解释器模式】实现高扩展性的医学专家诊断规则引擎

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

CTF之密码学(Polybius密码)

棋盘密码&#xff0c;也称为Polybius密码或方格密码&#xff0c;是一种基于替换的加密方法。以下是对棋盘密码的详细解析&#xff1a; 一、加密原理 棋盘密码使用一个5x5的方格棋盘&#xff0c;其中填充了26个英文字母&#xff08;通常i和j被视为同一个字母并放在同一个格子中…...

java excel 导入各种踩坑

在 Java 中处理 Excel 导入时&#xff0c;常见的问题&#xff08;即“踩坑”&#xff09;很多&#xff0c;下面列举了处理 Excel 导入时可能遇到的一些问题&#xff0c;并给出了解决方案和优化技巧。 1. POI 库与版本问题 Apache POI 是处理 Excel 的常用库&#xff0c;但是不…...

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…...

js版本之ES5特性简述【String、Function、JSON、其他】(二)

目录 String相关方法 string.charAt() string.charCodeAt() string.concat() string.match() string.search() string.replace() string.split() string.trim() string.slice() string.substr() string.substring() Function相关方法 arguments.length function…...

【redis】哈希类型详解

哈希类型详解 一、哈希类型的介绍二、哈希类型的常用命令2.1 HSET2.2 HGET2.3 HEXISTS2.4 HDEL2.5 HKEYS2.6 HAVLS2.7 HGETALL2.8 HMGET2.9 HLEN2.10 HSETNX2.11 HINCRBY2.12 HINCRBYFLOAT 三、哈希类型命令小结四、哈希类型内部编码五、哈希类型应用场景 一、哈希类型的介绍 …...

每日练题之动态规划(子序列问题讲解 1.最长递增子序列 2.摆动序列)

前言&#xff1a; 需要对「子序列」和「子数组」这两个概念进行区分&#xff1b; 子序列&#xff08;subsequence&#xff09;&#xff1a;子序列并不要求连续&#xff0c;但是我们调出来的顺序必须和原数组的顺序相同。例如&#xff1a;序列 [4, 6, 5] 是 [1, 2, 4, 3, 7, 6,…...

JSON 性能测试 - WastJson 性能也很快

WAST 是一个高性能 Java 工具集库包&#xff0c;包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. WastJson 无论是小中大文本各种数据类型等性能都没有明显的短板&#xff0c;除了推广外可以说是六边形战士&#xff0c;更多测试参考 wast-jmh-test: wast性能测试 (并非所…...

Windows 软件之 FFmpeg

文章目录 前言1 FFmpeg 视频处理1.1 编解码1.2 其它视频编辑命令1.3 视频抽帧 2 FFmpeg 音频处理3 FFmpeg 图片处理3.1 编解码3.2 拼接图片3.3 图片合成视频 附录1&#xff1a;mediainfo.ps1 前言 FFmpeg 是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的…...

接口的扩展

1. 接口中新增的方法 JDK7之前接口中只能定义抽象方法。 JDK8的新特性&#xff1a;接口中可以定义有方法体的方法。&#xff08;默认、静态&#xff09; JDK9的新特性&#xff1a;接口中可以定义有私有方法体的方法。 有方法体的方法&#xff1a;接口升级时&#xff0c;为了兼容…...

Vue ECharts 基本数据图表绘制详解:让数据飞起来

1. 引言 1.1 什么是数据可视化 大家好&#xff0c;欢迎来到数据可视化的世界&#xff01;如果你以为数据就是冷冰冰的数字&#xff0c;那你就大错特错了。数据&#xff0c;可是有灵魂的&#xff01;只要给它一副好看的外衣&#xff0c;比如我们今天要聊的图表&#xff0c;它们…...

目录遍历漏洞-CVE-2021-41773

目录 简介 原理 例子 Apache路径穿越漏洞 环境搭建 漏洞原理 漏洞利用 简介 目录遍历漏洞&#xff08;也称为路径遍历漏洞&#xff09;是一种由于Web服务器或Web应用程序对用户输入的文件名称的安全性验证不足而导致的安全漏洞。 原理 目录遍历漏洞允许攻击者在未授权…...

ajax (一)

什么是 AJAX [ˈeɪdʒks] &#xff1f; 概念&#xff1a;AJAX是浏览器与服务器进行 数据通信 的技术&#xff0c;动态数据交互 怎么用AJAX? 1. 先使用 axios [k‘sio ʊ s] 库&#xff0c; 与服务器进行 数据通信 ⚫ 基于 XMLHttpRequest 封装、代码简单、月下载量在 1…...

cocos creator 3.8 物理碰撞器Collider+刚体RigidBody 8

遇到一个朋友&#xff0c;你来就行的朋友&#xff0c;我过去了&#xff0c;管吃管住&#xff0c;这样的朋友真的很难求。 最近离职了&#xff0c;很难想象&#xff0c;一份策划书一天能给你改n次&#xff0c;一周能郁闷&#xff0c;上一个功能没搞完&#xff0c;让你搞下一个功…...

[Python3学习笔记-基础语法] Python3 基础语法

本篇文章详细介绍Python3的基础语法&#xff0c;主要包括编码、标识符、Python保留字、注释、行缩进、多行语句、Number类型、字符串、空行、print打印等。 这些是Python最基础的东西&#xff0c;掌握好了才能更好的学习后续的内容。 有兴趣共同结伴学习Python的朋友&#xff0…...

自制游戏:监狱逃亡

第一个游戏&#xff0c;不喜勿喷&#xff1a; ​ #include<bits/stdc.h> #include<windows.h> using namespace std; int xz; int ruond_1(int n){if(xz1){printf("撬开了&#xff0c;但站在你面前的是俄罗斯内务部特种部队的奥摩大帝&#xff0c;你被九把加…...

Linux的开发工具(三)

条件编译 预处理本质&#xff1a;对代码进行裁剪 像网易云音乐有vip和普通用户&#xff0c;可以通过条件编译来&#xff0c;这样只用写一份代码&#xff0c;也只用维护一份代码&#xff0c;是vip就走vip代码&#xff0c;不是就普通用户代码&#xff0c;条件编译来动态裁剪。 …...