Linux磁盘常见知识

目录

一、基础概念

1.1 文件系统类型

1.2 主分区、扩展分区、逻辑分区三者关系

1.3 UUID

1.4 lvm逻辑卷管理系统

二. 常用命令

2.1 查看命令

2.2 分区命令

2.3 格式化命令

1.4 挂载命令

三、扩容根目录


一、基础概念

1.1 文件系统类型

文件系统类型决定了向分区中存放、读取数据的方式和效率。

1.XFS文件系统

存放文件和目录数据的分区 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间 CenOS 7系统中默认使用的文件系统

2.EXT4(第四代扩展文件系统)

用于存放目录和数据的分区 典型的日志型文件系统 EXT4(CentOS 6系统的默认文件系统)FAT32、NTFS、LVM逻辑卷

3.Swap交换文件系统 (相当于Windows系统下的虚拟内存)

为Linux系统建立交换分区 一般设置为物理内存的1.5~2倍

1.2 主分区、扩展分区、逻辑分区三者关系

一个硬盘最多可以有4个主分区,最多1个扩展分区,逻辑分区若干个

硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和

1.3 UUID

UUID是硬盘分区后的一个唯一表示符

假设机器装有两块串口硬盘,Linux会按照识别顺序对第一个识别出的硬盘命名为/dev/sda,对第二块识别出的硬盘命名为/dev/sdb,但每次机器开机读取到硬盘顺序是随机的,可能会出现sda下次开机就变成sdb,会导致系统无法启动,linux是通过UUID实现的。

  • 挂载文件系统:UUID 可以用于指定要挂载的文件系统,而不必依赖于设备文件名。这样可以确保在更改硬件配置后,仍然能够正确地挂载目标文件系统。

  • 文件系统标识:通过 UUID,可以唯一标识和识别文件系统。这对于在文件系统表(如/etc/fstab)中设置自动挂载或执行其他与特定文件系统相关的任务非常有用。

  • 磁盘标识:对于硬盘驱动器或其他存储设备,UUID 可以用于唯一标识它们。这对于在安装系统时选择正确的磁盘或进行备份和恢复操作非常重要。

1.4 lvm逻辑卷管理系统

安装lvm2 yum install -y lvm2

用了LVM逻辑卷管理,根文件系统建立在卷组(VG)centos上的逻辑卷(LV)上,逻辑卷名是root,而不是直接建在硬盘分区上

磁盘:最基础的存在,物理磁盘

PV:physical volume 物理卷,同一磁盘可划分为多个物理卷,一个pv=磁盘的一个分区(sdb1)

VG:volume group 卷组,一个到多个PV可组成一个卷组

LV:logical volue 逻辑卷,卷组可划分为多个逻辑卷

挂载点:lv与挂载点是1:1的关系,但lv可以扩容。

综上:Linux的磁盘管理其实就是把物理磁盘先进行划分,分成一块块pv,然后对pv进行分组形成vg,再将vg分配给lv,最后将lv挂载到挂载点上进行使用。之所以进行这么多层次的划分,就是为了能灵活的对磁盘进行逻辑上的区分使用。
 

1.5 设备信息

二. 常用命令

2.1 查看命令

df -Th   lsblk   fdisk -l  blkid  cat /etc/fstab 

df -Th 

该命令用于显示文件系统的磁盘使用情况和空间信息,-T属性查看磁盘类型

[root@lgb /]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       50G  6.4G   41G  14% /
devtmpfs       devtmpfs  858M     0  858M   0% /dev
tmpfs          tmpfs     868M     0  868M   0% /dev/shm
tmpfs          tmpfs     868M  592K  867M   1% /run
tmpfs          tmpfs     868M     0  868M   0% /sys/fs/cgroup
tmpfs          tmpfs     174M     0  174M   0% /run/user/1000
overlay        overlay    50G  6.4G   41G  14% /var/lib/docker/overlay2/15c6f723c176dd1f204a10a2e110ab9c8c722dd4e79c84d9647f39868ef02844/merged

lsblk 

该命令显示了系统中所有块设备(包括硬盘和其他存储设备)的信息,/dev/vda中的vda(Virtual Disk Adapter)虚拟磁盘适配器,因为是云主机所以是vda,如果你使用的是Vmware的虚拟机,此处应该是/dev/sda,sd表示物理scsi磁盘适配器,a表示是主机识别到的第一块物理scsi磁盘。vda1中的1表示vda磁盘的第一个分区。

disk-磁盘,part-分区,lvm-逻辑分区

[root@lgb /]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  50G  0 disk 
└─vda1 253:1    0  50G  0 part /

fdisk -l

查看分区信息和接入磁盘总量,“Disk /dev/vda: 53.7 GB” 表示接入的vda设备有53.7G,注意这里会对应Vmware的磁盘信息,Vmware更改虚拟机设置扩容sda或者新增sdb此处都会更新,但再分区前还不能使用,可以用来检测在物理层面是否扩容或新增成功

[root@lgb admin]# fdisk -l Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 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: 0x000b2d99Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   104856254    52427103+  83  Linux

blkid 

查看UUID

[root@lgb admin]# blkid
/dev/vda1: UUID="1114fe9e-2309-4580-b183-d778e6d97397" TYPE="ext4" 

cat /etc/fstab  

查看uuid挂载信息,此处将/dev/vda1设备挂载到根目录/

系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。

[root@lgb admin]# cat /etc/fstab #
# /etc/fstab
# Created by anaconda on Thu Jul 11 02:52:01 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=1114fe9e-2309-4580-b183-d778e6d97397 /                       ext4    defaults        1 1

2.2 分区命令

fdisk

-------------------

e 新建主分区

p 新建逻辑分区

-------------------

n 新建分区

p 显示当前磁盘分区表

-------------------

fdisk 对磁盘进行分区,会有终端提示输入

新建分区后如果想更改sdb1分区的文件类型,输入t,输入对应文件类型的代码,如果想要使用lvm逻辑卷,需要更改成8e(lvm)类型,lvm可以再/dev/sdb1的基础上再往下分出若干个逻辑区。

83表示Linux中的XFS 分区或EXT4分区,8e表示LVM逻辑卷,82表示swap分区

2.3 格式化命令

格式化sdb1分区,顺序:分区sdb1(默认类型是83,ext4或xfs,可通过fdisk更改类型) -- 格式化sdb1 -- 挂载指定目录

格式化分区(注意是分区,例如/dev/sda2指sda硬盘的第二个分区),格式化后自动生成UUID

mkfs.ext4 /dev/sdb1

1.4 挂载命令

mount /dev/sdb1 /data

将/dev/sdb1 挂载到 /data目录

注意/dev/sdb可以看做是一个独立的物理磁盘,而/dev/sdb1则是/dev/sdb磁盘下的一个分区(实际就是/dev/sdb/sdb1,但通常表达成/dev/sdb1),一个物理磁盘下可以有多个分区(类似于windows一大块硬盘分成C、D、E盘...)

新磁盘手动挂载后,需要将信息写入/etc/fstab,否则重启后挂载会失效。

三、扩容根目录

Linux系统再不指定目录的情况下数据都会存储在根目录/之下,久而久之,就会出现根目录磁盘用满的情况,那就需要在不影响已有数据的情况下扩容根目录

扩容linux根目录步骤:vmware扩容原有硬盘(注意不是添加磁盘) -- fdisk分区(注意仍然是原有磁盘,一般是sda,我们扩容sda,不是新加入sd*,注意w保存) -- 格式化新分区(一般是sda3或者sda4,不与老的sd*重复即可) -- 创建pv物理卷 -- 将pv物理卷加入名为centos的vg卷组 -- 拓展lv名为root的lv逻辑卷(lv路径为/dev/mapper/centos-root或/dev/centos/root) -- 扩容文件系统 -- df -Th查看

df -Th可以发现,/dev/mapper/centos-root 设备默认挂载在linux系统根目录,lvextent命令可以使用/dev/mapper/centos-root,也可以使用/dev/centos/root,两者是等价的。

参考文档:

磁盘与文件系统管理_linux ext4 83_Sq夏颜的博客-CSDN博客

https://www.cnblogs.com/-wenli/p/10354807.html

uuid解释

硬盘分区的UUID-CSDN博客

vg pv lv 理解centos 7磁盘扩容、扩展分区/dev/mapper/centos-root_/dev/mapper/centos-root 扩容_阿通666的博客-CSDN博客

Linux磁盘管理(磁盘、pv、vg、lv、挂载点之间的关系及常用命令)_pv lv vg_beautyofmath的博客-CSDN博客

mapper机制理解

cnblogs.com/amoyzhu/p/6626423.html

扩容根目录

VM虚拟机中Linux扩展磁盘空间的方法_wm扩展空间后_老马农的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数字人】3、LIA | 使用隐式空间来实现视频驱动单张图数字人生成(ICLR 2022)

文章目录 一、背景二、方法2.1 latent motion representation2.2 latent code driven image animation2.3 学习方式2.4 推理 三、效果3.1 数据集3.2 训练细节3.3 评估3.4 定性效果3.5 定量效果3.6 消融实验3.7 失败示例 论文:Latent Image Animator: Learning to An…

C语言,指针的一些运算

若创建一个数组:int arr[10] 0; 用指针变量来储存数组首元素的地址:int* p arr,这里arr是数组名,表示首元素地址。 若p p 1或者p之后p本来指向数组首元素地址,就变成了指向第二个元素的地址,p n即指向第n 1个地…

力扣 -- 1143. 最长公共子序列

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:int longestCommonSubsequence(string s1, string s2) {int ms1.size();int ns2.size();s1 s1;s2 s2;vector<vector<int>> dp(m1,vector<int>(n1));for(int i1;i<m;i){for(int j1;j&…

大量需求测不过来怎么破?

互联网测试少&#xff0c;测试研发比大概在1:5&#xff0c;再加上产品再使足了劲上需求&#xff0c;导致了测试需求量大&#xff0c;测试准备时间短&#xff0c;从而降低了上线质量。那么如何解决呢&#xff1f;测试是质量负责人&#xff0c;要对平台质量负责&#xff0c;于是就…

C# redis通过stream实现消息队列以及ack机制

redis实现 查看redis版本 redis需要>5.0 Stream 是 Redis 5.0 引入的一种专门为消息队列设计的数据类型&#xff0c;Stream 是一个包含 0 个或者多个元素的有序队列&#xff0c;这些元素根据 ID 的大小进行有序排列。 它实现了大部分消息队列的功能&#xff1a; 消息 ID…

React Native从0到1开发一款App

先贴上项目地址&#xff0c;有需要的大佬可以去github看看&#xff1a; WinWang/RNOpenEye: React Native(0.72)版本开眼OpenEye项目 (github.com) React Native&#xff08;0.72&#xff09;版本OpenEye项目&#xff0c;主要用来熟悉并上手RN项目的开发&#xff0c;是Flutte…

nodejs+vue+elementui实验室预约管理系统

简单的说 Node.js 就是运行在服务端的 JavaScript。 前端技术&#xff1a;nodejsvueelementui 前端&#xff1a;HTML5,CSS3、JavaScript、VUE实验室如何适应新的时代和新的潮流,开展有效的信息服务工作,完成时代赋予的新使命?本文就这一问题谈谈几点粗浅的看法.扩大业务范围,更…

栈的运行算法

一&#xff0c;顺序栈的静态分配 二&#xff0c;顺序栈的动态分配 #include<stdio.h> #include<stdlib.h> #define initsize 5 #define incresize 5typedef struct Sqstack{int *base;int *top;int stacksize; }Sqstack;void InitStack(Sqstack *s){(*s).base(int…

MNIST字符识别(C++)

构建网络 采用官方示例的的lenet网络 训练 相关文件都已编译好&#xff0c;下载后执行命令即可 .\caffe-bin.exe train --solver .\lenet_solver.prototxt 识别 #include <caffe/caffe.hpp>#include <opencv2/core/core.hpp> #include <opencv2/highgui/hi…

echarts画电压线

ChartLibhttp://chartlib.datains.cn/detail?idx0R9f3tOqMExamples - Apache EChartsApache ECharts&#xff0c;一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。https://echarts.ap…

对验证码的识别爆破

声明&#xff1a;该系列文章首发于公众号&#xff1a;Y1X1n安全&#xff0c;转载请注明出处&#xff01;本公众号所分享内容仅用于每一个爱好者之间的技术讨论及教育目的&#xff0c;所有渗透及工具的使用都需获取授权&#xff0c;禁止用于违法途径&#xff0c;否则需自行承担&…

BN体系理解——类封装复现

from pathlib import Path from typing import Optionalimport torch import torch.nn as nn from torch import Tensorclass BN(nn.Module):def __init__(self,num_features,momentum0.1,eps1e-8):##num_features是通道数"""初始化方法:param num_features:特征…