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

【Linux】-学习笔记04

第十二章、磁盘管理

1.查看磁盘空间使用量

1.1df命令

作用:

列出文件系统的磁盘空间占用情况
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 -a

df -k

df -m

df -h

df -H

df -i

1.2du命令

作用:

du:显示磁盘空间使用量(统计目录或文件所占磁盘空间大小),在默认情况下,文件大小的单位
是KB。
du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前
存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和,当文件系统
也确定删除了该文件后,这时候du与df就一致了。

格式:

du -参数 文件或目录名

参数:

-a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已;
-h : 以人们较易读的容量格式(G/M)显示;
-s : 列出总量,而不列出每个个别的目录占用了容量;
-S : 不包括子目录下的总计,与-s有点差别;
-k : 以KB列出容量显示;
-m : 以MB列出容量显示。

示例:

du -a

2.RAID

2.1 概念

当今CPU性能每年可提升30%-50%但硬盘仅提升7%。
硬盘在服务器中需要持续、频繁、大量的I/O操作,故障机率较大,则需要对硬盘进行技术改造,提升读写性能、可靠性。
1988年,加利福尼亚大学伯克利分校首次提出并定义了RAID技术概念。
原理:RAID(Redundant Array of Independent Disks)将多个硬盘设备组成一个大容量、安全更
好的磁盘阵列,并将数据切割成多个片段后分别存储到不同的物理硬盘上,利用分散读写技术来来
提升硬盘性能,同时也备份了多个副本到不同硬盘中,拥有了备份冗余功能。

2.2 常见的RAID组件方案

RAID0

原理:把至少2块硬盘通过硬件或软件方式串联,组成一个大的卷组,并将数据依次写入到各个硬盘
优点:数据同步传输,读取/写入分开,性能大大提升
缺点:若任意一块硬盘故障会导致整个系统的数据损坏,无备份冗余能力错误修复能力
总结:使用率100%,至少2块磁盘才能使用,优点是快,提升磁盘的读写速度,缺点是不安全

RIAD1

产生原因:若生产环境对硬盘的读写速度没有较大要求,但希望增加数据安全性时可使用RAID
原理:把至少2块硬盘绑定起来,写入数据时将数据同时也写入另一或多块硬盘中,
本质:多个硬盘作为镜像备份
优点:数据备份冗余安全性大大提升
缺点:硬盘利用率下降
总结:是镜像,使用两块磁盘,一式两份的方式,支持容错,冗余,数据安全不丢失,缺点是速度
不快,使用率50%,成本较大。

RAID5

产生原因:兼顾“读写速度”、“数据安全”、“成本”的一种折中方式
原理:需至少三块硬盘,将数据分块存储到不同硬盘中,硬盘中必须存储其它一个硬盘的parity(奇
偶校验信息)
优点:兼顾性能,通过“奇偶校验”替代“镜像备份”
缺点:硬盘数据安全性较低
总结:使用率(n-1)/n*容量,磁盘坏了会立即补上,数据会恢复

RAID10

本质:RAID1+RAID0 的组合
原理:至少需要4块硬盘,先制作两两的RAID1阵列,以保证安全性,在两两制作RAID0,以提高读
写速度
优点:兼具速度和安全性
缺点:成本较高

2.3 mdadm命令

作用:

管理系统中的RAID磁盘阵列

格式:

mdadm [模式] <RAID设备名> -参数 [成员设备名称]

参数:

-a :检测设备名称
-n :指定硬盘数量
-l :指定RAID级别
-C :创建RAID
-v :显示过程
-f :模拟设备损坏
-r :移除设备
-Q : 查看摘要
-D :查看详细信息
-S :停止RAID磁盘阵列

示例:

关机后添加4块硬盘,创建RAID10

分析:

-Cv:创建RAID 并显示过程
/dev/md0:新的RAID阵列名
-a yes:检测并自动创建RAID设备文件
-n 4:硬盘数量为4块
-l 10:RAID级别为RAID10

查看信息

mdadm -D /dev/md0

2.4 取消RAID

注意:实际生产环境中,若取消RAID10之前必须备份出其数据,否则已存在数据无法使用

[root@server ~]# umount /dev/md0
[root@server ~]# vim /etc/fstab # 删除开机挂载项,切记
[root@server ~]# mdadm -S /dev/md0 # 停止
mdadm: stopped /dev/md0

2.5 RAID 备份盘技术

产生原因:

在RAID10中若RAID1中的某个硬盘损坏,在修复完毕前恰巧另一块RAID1的硬盘也损坏,则数据就彻底丢失。

原理:

在RAID中添加一个大容量的备份盘来预防此类事故,某块硬盘故障,备份盘同步恢复,无须人工干预。
分析RAID10需要4块硬盘,备份盘需要1块硬盘,共5块硬盘。

3.管理逻辑卷

3.1工作原理

产生原因:

硬盘分区或部署为RAID后在修改分区大小时就非常不容易,此时用户随着实际的需求变化而动态调整硬盘分区大小时受到限制,无灵活性
LVM(Logical Volume Manager )允许用户对硬盘资源进行动态调整

认识Linux逻辑卷:

LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个
整块的卷组,形成一个存储池。
通过LVM技术,屏蔽了磁盘分区的底层差异,管理员可以在卷组上任意创建逻辑卷,并进一步在逻
辑卷上创建文件系统
管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管
理和分配。
假设有三块磁盘/dev/sdb、/dev/sdc和/dev/sdd用来划分逻辑卷,LVM模型如图所示:

3.2LVM基本概念

PE(physical extent)物理区域:物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小默认为4MB。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致.
物理卷(physical volume):简称PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区
具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁
盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):简称VG,可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少
要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义。
逻辑卷(logical volume):简称LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配
空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,
可以属于同一个卷组,也可以属于不同的多个卷组。

3.3部署逻辑卷

常用的LVM部署命令

示例:

恢复快照,在虚拟机中添加3块新硬盘,2块硬盘创建物理卷及卷组,划分出150MB空间的逻
辑卷并格式化挂载使用

首先创建物理卷,接着创建卷组/dev/VG1,然后查看信息

创建逻辑卷,查看信息

格式化

创建挂载目录

开机挂载

3.4 调整逻辑卷的大小

扩展卷组

[root@server ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@server ~]# vgextend /dev/VG1 /dev/sdc
Volume group "VG1" successfully extended
[root@server ~]# vgdisplay /dev/VG1

逻辑卷的扩大与缩小

xfs文件系统类型的lvm的扩容

# 将lv1逻辑卷扩容到300MB
[root@server ~]# umount /dev/VG1/lv1
[root@server ~]# lvextend -L 300M /dev/VG1/lv1
Size of logical volume VG1/lv1 changed from 152.00 MiB (38 extents) to 300.00
MiB (75 extents).
Logical volume VG1/lv1 successfully resized.
[root@server ~]# lsblk
NAME      MAJ:MIN RM    SIZE   RO TYPE  MOUNTPOINTS
sda         8:0    0    20G    0  disk
├─VG1-lv1 253:2    0    300M   0  lvm   /LVM1
└─VG1-lv2 253:3    0    200M   0  lvm   /LVM2
[root@server ~]# lvdisplay
# 注意:使用 -L +100M增加了100M,如果增加到400M,使用-L 400M
[root@server ~]# lvextend -L +100M /dev/VG1/lv1
Size of logical volume VG1/lv1 changed from 300.00 MiB (75 extents) to 400.00
MiB (100 extents).
Logical volume VG1/lv1 successfully resized.
[root@server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─VG1-lv1 253:2 0 400M 0 lvm /LVM1
└─VG1-lv2 253:3 0 200M 0 lvm /LVM2
# 注意:此时文件系统没有扩容
[root@server ~]# df -h | grep lv1
/dev/mapper/VG1-lv1    147M    8.9M    138M    7%    /LVM1
# 使用xfs_growfs文件系统扩容
[root@server ~]# xfs_growfs /dev/VG1/lv1
meta-data=/dev/mapper/VG1-lv1 isize=512    agcount=4, agsize=9728 blks=                    sectsz=512   attr=2, projid32bit=1=                    crc=1        finobt=1, sparse=1, rmapbt=0=                    reflink=1    bigtime=1 inobtcount=1
data     =                    bsize=4096   blocks=38912, imaxpct=25=                    sunit=0      swidth=0 blks
naming   =                    version 2    bsize=4096 ascii-ci=0, ftype=1
log      =                    internal log size=4096 blocks=1368, version=2=                    sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                extsz=4096   blocks=0, rtextents=0
data blocks changed from 38912 to 102400
[root@server ~]# df -h | grep lv1
/dev/map:per/VG1-lv1    395M    11M    384M   3%    /LVM1
[root@server ~]# mount /dev/VG1/lv1 /LVM1

对lv2逻辑卷缩容到200MB

# 相对于扩容,对逻辑卷缩容有风险,则最好提前备份
[root@server ~]# umount /dev/VG1/lv2
[root@server ~]# lvreduce -L 200M /dev/VG1/lv2
New size (50 extents) matches existing size (50 extents).
[root@server ~]# mount /dev/VG1/lv2 /LVM2

相关文章:

【Linux】-学习笔记04

第十二章、磁盘管理 1.查看磁盘空间使用量 1.1df命令 作用&#xff1a; 列出文件系统的磁盘空间占用情况 df&#xff0c;disk free&#xff0c;通过文件系统来快速获取空间大小的信息&#xff0c;当我们删除一个文件的时候&#xff0c;这个文件 不是马上就在文件系统当中消…...

计算机网络:应用层知识点概述及习题

网课资源&#xff1a; 湖科大教书匠 1、概述 习题1 1 在计算机网络体系结构中&#xff0c;应用层的主要功能是 A. 实现进程之间基于网络的通信 B. 通过进程之间的交互来实现特定网络应用 C. 实现分组在多个网络上传输 D. 透明传输比特流 2 以下不属于TCP/IP体系结构应用层范畴…...

如何构建高效的接口自动化测试框架?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在选择接口测试自动化框架时&#xff0c;需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说&#xff0c;使用Python相关的测试框架更为便捷。无论选…...

【C++习题】10.反转字符串中的单词 lll

题目&#xff1a; 链接&#x1f517;&#xff1a;557.反转字符串中的单词 lll 题目&#xff1a; 代码&#xff1a; class Solution { public:void Reverse(string &s, int start, int end){char tmp;while(start < end){tmp s[start];s[start] s[end];s[end] tmp;…...

undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12 问题解决

​ 在部署运行opencompass项目时遇到了如下报错&#xff1a; ImportError: /data/conda/envs/opencompass/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12​…...

C语言——数组逐元素操作练习

定义一个能容纳10个元素的整形数组a&#xff0c;从键盘读取9个整数存放到前9个数组元素中。 一. 从键盘读取一个整数n和位置p(0<p<8)&#xff0c;插入n到数组a中&#xff0c;插入位置&#xff1a;下标p。要求插入点及后续的数组元素都要后移动。 代码如下&#xff1a; …...

HTML的自动定义倒计时,这个配色存一下

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>自定义倒计时</title><style>* {mar…...

CUDA补充笔记

文章目录 一、不同核函数前缀二、指定kernel要执行的线程数量三、线程需要两个内置坐标变量来唯一标识线程四、不是blocksize越大越好&#xff0c;上限一般是1024个blocksize 一、不同核函数前缀 二、指定kernel要执行的线程数量 总共需要线程数是&#xff1a; 1 * N N个线程…...

C++二级:满足条件的数的累加

现有n个整数&#xff0c;将其中个位数为k的数进行累加求和。 输入 第一行1个整数n。&#xff08; 0 < n < 1000&#xff09; 第二行n个非负整数&#xff0c;以空格分隔&#xff0c;每个数不大于100000。 第三行1个整数k。(0 ≤ k ≤ 9) 输出 输出满足题目要求的累加和。…...

【山大909算法题】2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse&#xff0c;该函数对链表进行逆序操作&#xff08;将链表中的结点按与原序相反的顺序连接&#xff09;&#xff0c;要求逆序操作就地进行&#xff0c;不分配…...

【MySQL实战45讲笔记】基础篇——深入浅出索引(上)

系列文章 基础篇——MySQL 的基础架构 基础篇——redo log 和 binlog 基础篇——事务隔离 目录 系列文章深入浅出索引&#xff08;上&#xff09;4.1 索引的常见模型4.2 InnoDB 的索引模型4.3 索引维护4.4 思考&#xff1a;为什么要重建索引以及如何做&#xff1f; 深入浅出索…...

通关C语言自定义类型:联合和枚举

C语言的自定义类型有四个分别是&#xff1a;数组&#xff1b;结构体&#xff08;struct&#xff09;&#xff1b;联合体&#xff08;union&#xff09;&#xff1b;枚举&#xff08;enum&#xff09;。前面已经讨论过数组和结构体&#xff0c;这期让我们来学习一下联合体和枚举…...

python高阶技巧一

闭包 简单认识一下闭包 以下代码&#xff0c;内层inner函数不仅依赖于自身的参数b&#xff0c;还依赖于外层outer函数的参数a。inner就是一个闭包函数&#xff0c;既能访问外部变量&#xff0c;又保证外部变量不是全局的&#xff0c;不会被篡改掉&#xff0c;确保了外部变量的…...

Java 对象头、Mark Word、monitor与synchronized关联关系以及synchronized锁优化

1. 对象在内存中的布局分为三块区域&#xff1a; &#xff08;1&#xff09;对象头&#xff08;Mark Word、元数据指针和数组长度&#xff09; 对象头&#xff1a;在32位虚拟机中&#xff0c;1个机器码等于4字节&#xff0c;也就是32bit&#xff0c;在64位虚拟机中&#xff0…...

鸿蒙网络编程系列50-仓颉版TCP回声服务器示例

1. TCP服务端简介 TCP服务端是基于TCP协议构建的一种网络服务模式&#xff0c;它为HTTP&#xff08;超文本传输协议&#xff09;、SMTP&#xff08;简单邮件传输协议&#xff09;等高层协议的应用程序提供了可靠的底层支持。在TCP服务端中&#xff0c;服务器启动后会监听一个或…...

软件测试基础(自动化测试、性能测试)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 自动化测试的意义 缩短软件开发测试周期&#xff0c;可以让产品更快投放市场 测试效率高&#xff0c;充分利用硬件资源 节省人力资源&#xff0c;降低测试…...

C++中的原子操作:原子性、内存顺序、性能优化与原子变量赋值

一、原子操作与原子性 原子操作&#xff08;atomic operation&#xff09;是并发编程中的一个核心概念&#xff0c;指的是在多线程环境中&#xff0c;一个操作一旦开始&#xff0c;就不会被其他线程的操作打断&#xff0c;直至该操作完成。这种不可分割的特性保证了操作的原子…...

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时&#xff0c;对于音频同步和平台层的理解和调整的过程。以下是更详细的复述&#xff1a; 开发者表达了他希望今天继续进行的工作内容。他提到&#xff0c;昨天他讲解了一些关于音频的内容&#xff0c;今天他想稍微深入讲解一下他正…...

RocketMQ: 专业术语以及相关问题解决

概述 要了解 RocketMQ 的多个关键特性的实现原理&#xff0c;并对消息中间件遇到的各种问题进行解决我们引用 JMS 规范 与 CORBA Notification 规范&#xff0c;规范为我们设计系统指明了方向但是仍有不少问题规范没有提及&#xff0c;对于消息中间件又至关重要RocketMQ 并不遵…...

C++ 类和对象中的 拷贝构造 和 运算符重载

构造函数中可以添加参数并添加默认值构成缺省构造&#xff0c;如果我们在构造函数的参数中加上自身类型类的引用和其他给出默认值的参数则会构成一种特殊的构造函数叫做———拷贝构造函数 1.拷贝构造 拷贝构造的特点&#xff1a; 1.拷贝构造函数是构造函数的一个重载 2.拷…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...