Linux的磁盘/文件管理,以centos7为例

Linux的磁盘/文件管理,以centos7为例

  • 物理磁盘情况
    • 我的磁盘
    • 简述一下含义
  • 使用新硬盘
    • 流程简述
    • 硬盘分区
    • 格式化(文件系统(本地文件系统))
    • 创建挂载点;挂载磁盘
    • 挂载解释
  • LVM(Logical Volume Management)
    • 硬盘到文件系统的层次结构
    • LVM优势:
    • 重要概念
    • 实践操作
  • 附录(命令)

物理磁盘情况

我的磁盘

无论怎样,系统总需要运行在物理存储介质上,不管是硬盘HDD,又或者是SSD,光盘,U盘等;
故而先使用命令观察磁盘情况,一般来说可能返回如下,这里是我的测试虚拟机.

[root@localhost mapper]# lsblk -f
NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
fd0                                                                      
sr0                                                                      
vda                                                                      
├─vda1          xfs               1ab80b5b-694e-4690-b121-2e92eebaab98   /boot
└─vda2          LVM2_member       ZZr0Fx-DB7B-9mzt-4Aw4-EAwA-o41M-l0Xp0I ├─centos-root xfs               6b8e940e-baf1-46b9-b86f-03e1b75512be   /├─centos-swap swap              594ff40a-1850-4f92-a30e-093d60815993   [SWAP]└─centos-home xfs               9c2a7b1b-054d-45e6-bc34-1f1166edd53e   /home
vdb                                                                      
├─vdb1          xfs               b0cf0f8a-6ad4-458f-941d-084ac6c0892b   /mnt/data
└─vdb2          LVM2_member       TsHzVK-JQI6-Mmp3-f9hi-4Evz-2CEv-meSxI5 ├─d2-lv1      xfs               57688a62-a992-4c03-8339-8175719e96c5   └─d2-lv2      ext4              8c48bfac-05ed-4818-a27c-5bf5cb22527d   /mnt/data3

简述一下含义

  • fd0 代表软盘驱动器,这个设备没有文件系统。
  • sr0 代表光盘驱动器或 ISO 镜像。这个设备也没有显示文件系统。
  • vda 是系统中的主要磁盘(通常是虚拟机中的磁盘)。它有两个分区:
    • vda1:这是 xfs 文件系统,挂载在 /boot 目录下。/boot 用于存放启动所需的文件,比如内核、引导加 载程序等。
    • vda2:这是一个 LVM 成员分区。它没有文件系统,而是一个 LVM 物理卷(LVM2_member),它是逻辑卷管理的基础
      • centos-root:是根文件系统,挂载到 / 目录,使用 xfs 文件系统。
      • centos-swap:交换分区,提供虚拟内存,使用 swap 类型。
      • centos-home:用户的主数据存储分区,挂载到 /home 目录,使用 xfs 文件系统。
  • vdb:这是另一个磁盘(这里是第二块虚拟磁盘)

使用新硬盘

流程简述

对于一张新的硬盘(非系统盘),centos需要使用一般要以下的步骤

  • 不使用LVM: 硬盘分区->格式化->创建挂载点->挂载磁盘
  • 使用LVM:
    • 使用已存在VG: 创建物理卷->添加到已有卷组
      • 扩展已有逻辑卷
      • 创建逻辑卷->格式化逻辑卷->创建挂载点->挂载逻辑卷->永久挂载
    • 创建新VG: 分区(可选)->创建物理卷->创建卷组->创建逻辑卷->格式化逻辑卷->创建挂载点->挂载逻辑卷->永久挂载

硬盘分区

  • 首先硬盘是一个物理存储介质,如何使用这张硬盘,就如windows一样,可以执行分区,分为C盘,D盘,E盘等. 一张硬盘可以化为多个分区,称之为磁盘分区.
  • 硬盘的0扇区,记录了这张硬盘的分区方式,常见的分区表格式有MBR和GPT.即指示磁盘如何划分空间来使用. 分区之间是相互独立的.
  • 常见的分区表格式
分区表格式最大支持容量最大支持分区数兼容操作系统优点缺点
MBR2TB4个主分区或 3个主分区 + 1个扩展分区Windows, Linux, macOS兼容性广,简单易用,适用于传统 BIOS 启动系统只支持 2TB 以下的磁盘,最多 4 个分区,扩展性差
GPT9.4ZB128个分区Windows, Linux, macOS支持大于 2TB 的磁盘,支持更多分区,灵活的结构需要 UEFI 启动,较老的系统可能不支持
APM2TB15个分区macOS(较老版本)专为苹果设备设计,兼容性好仅限于旧版 Apple 设备,较少支持其他操作系统

格式化(文件系统(本地文件系统))

  • 首先文件系统是安装在磁盘分区上的,是用来管理和组织存储在磁盘上的文件的一种方式。
  • 它告诉操作系统如何在分区中找到文件,并提供操作文件的方法。换言之,他是对操作系统负责的
  • 将磁盘分区安装文件系统的过程,称之为格式化
  • 不同的操作系统,使用不同的文件系统.当然也有通用的文件系统,例如U盘常用的FAT32,exFat.无论mac或者windows,linux都能正确识别
  • 下面是常见的文件系统
文件系统类型最大文件大小最大分区大小优点缺点操作系统支持
FAT32磁盘文件系统4GB8TB跨平台支持好,兼容性广,简单易用文件大小限制,性能不如现代文件系统Windows、macOS、Linux
exFAT磁盘文件系统16EB128PB支持大文件和大容量,跨平台支持较好安全性差,文件权限管理较弱Windows、macOS、Linux (需安装驱动)
NTFS磁盘文件系统16EB256TB支持大文件、文件权限和加密,性能好跨平台支持较差,macOS 只读,Linux 需安装驱动Windows(默认),macOS(只读),Linux(需安装驱动)
ext4磁盘文件系统16TB1EB支持大文件和大磁盘,性能和稳定性好不支持Windows,macOS无法原生支持Linux
Btrfs磁盘文件系统16EB16EB支持快照、数据压缩、动态块分配,性能好比 ext4 更复杂,稳定性较低Linux(部分发行版如 Fedora 支持)
XFS磁盘文件系统8EB8EB支持大文件和大磁盘,性能优良不支持小文件,较不灵活Linux
ZFS磁盘文件系统16EB256ZB高可靠性,支持数据完整性校验,支持快照不支持Windows,复杂性高Linux(通过ZFS on Linux)、FreeBSD(默认)
F2FS磁盘文件系统16TB16TB专为闪存设计,优化性能和寿命支持的操作系统较少Linux(部分发行版支持)
HFS+磁盘文件系统8EB8EB支持Mac OS文件权限和加密不支持Windows,性能较差macOS(默认)
APFS磁盘文件系统8EB8EB高效,支持加密和快照,优化了 SSD 性能仅支持 macOS 和 iOSmacOS (默认)

创建挂载点;挂载磁盘

  • 对于centos来说,磁盘一般挂载在/mnt下面
# 创建挂载点
mkdir /mnt/data
# 挂载分区
mount /dev/vdb1 /mnt/data
# 查看是否挂载成功:
df -hT
# 使挂载永久生效,注意这边建议使用uuid来挂载,而非设备名,设备名可能会收到加载顺序的影响
vi /etc/fstab
# 设备名挂载
/dev/vdb1  /mnt/data  xfs  defaults  0  0
# uuid挂载
UUID=8c48bfac-05ed-4818-a27c-5bf5cb22527d /mnt/data3 ext4 default 0 0

挂载解释

** 示例挂载情况 **

[root@localhost mapper]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  7.8G     0  7.8G    0% /dev
tmpfs                   tmpfs     7.8G     0  7.8G    0% /dev/shm
tmpfs                   tmpfs     7.8G  265M  7.5G    4% /run
tmpfs                   tmpfs     7.8G     0  7.8G    0% /sys/fs/cgroup
tmpfs                   tmpfs     1.6G     0  1.6G    0% /run/user/0
/dev/vda1               xfs      1014M  208M  807M   21% /boot
/dev/mapper/centos-root xfs        50G  7.7G   43G   16% /
/dev/mapper/centos-home xfs        62G  8.0G   54G   13% /home
/dev/vdb1               xfs       5.0G   51M  5.0G    1% /mnt/data
/dev/mapper/d2-lv1      xfs       2.0G   33M  2.0G    2% /mnt/data2
/dev/mapper/d2-lv2      ext4      2.0G  6.0M  1.8G    1% /mnt/data3
overlay                 overlay    50G  7.7G   43G   16% /var/lib/docker/overlay2/2c54c3d6a14b43ea4b8e41821f763c59b6d972070c0909c68d219e621f1ad1db/merged
  • /dev 目录Device(设备文件),存放所有的设备文件,包括硬件设备和虚拟设备。
    • /dev/vda 实际是我的第一块磁盘的接口
    • /dev/sda:表示第一块 SATA 或 SCSI 磁盘设备。
    • /dev/nvme0n1:表示第一块 NVMe 磁盘设备。
  • 挂载
    • 挂载的本质是将一个资源(不管它是磁盘分区、网络路径、内存文件系统还是虚拟设备)映射到一个挂载点(目录)

    • 挂载不一定只限于文件系统。虽然挂载文件系统是最常见的用途,但 Linux 还允许挂载虚拟文件系统、设备文件、网络文件系统等多种类型的资源。

    • 从下面的挂载示例来看,一共是3组,分别是虚拟文件系统,硬盘,docker

      • devtmpfs 是一种特殊的内存文件系统,用于管理设备文件(如 /dev/sda、/dev/tty0 等)。
      • tmpfs 是一种基于内存的文件系统,通常用于存储临时数据。
        • /dev/shm 是共享内存(shared memory)挂载点,供不同进程共享内存使用。适用于 IPC(进程间通信)和某些数据库的高速缓存。
        • /run 是一个用于存储系统运行时状态信息的目录,类似于 /var/run。它会存储一些临时文件,例如系统启动时生成的 PID 文件、lock 文件、系统进程的状态信息等。
        • /sys/fs/cgroup 是控制组(cgroups)的挂载点。cgroup 是 Linux 内核的一个功能,允许限制、监控和隔离进程的资源使用(如 CPU、内存、I/O 等)。
        • /run/user/0 是为当前用户(在这个例子中是 root 用户)提供的临时目录,tmpfs 文件系统会为每个用户创建一个独立的运行时目录。
      • /dev/xx 这里均为硬盘挂载
        • /dev/vda 为第一张磁盘,被切成了2个分区(lsblk可以看)
          • /dev/vda1 为xfs系统的启动引导
          • /dev/vda2 为lvm管理的文件系统,即 /dev/mapper/centos-xx
        • /dev/vdb 为第二张硬盘,也是切成了2个分区
          • /dev/vdb1 为ext4格式的文件系统区域
          • /dev/vdb2 为lvm管理的文件系统,即 /dev/mapper/d2-xx
    • 挂载覆盖机制

      • 如果没有单独指定挂载点,所有的数据都会写入挂载了根目录的磁盘(比如 centos-root),包括 /dev、/home、/var 等目录。

      • 如果你为某个目录(比如 /home)指定了单独的挂载点(比如挂载到一个新的磁盘或分区),那么这个目录及其子目录的数据就会写入新的挂载点所在的磁盘或存储介质。

        • 例如 /run; /dev; /dev/shm; /boot 都被内存文件系统接管了,其实是由内核执行管理,而和磁盘无关了
      • 如果某个目录被挂载了新磁盘或文件系统,那么原来该目录上的内容会暂时被“隐藏”,新的磁盘会成为该目录的存储位置,直到卸载挂载点。需要注意的是,如果挂载点上已经有文件,这些文件在挂载期间是不可见的,挂载卸载之后,原有的数据会重新显现。

      • 这种挂载机制不仅限于物理磁盘,还可以是内存(比如 tmpfs)、网络存储(如 NFS)、甚至是其他虚拟文件系统(如 overlay)等。

LVM(Logical Volume Management)

硬盘到文件系统的层次结构

从硬盘到文件系统的层次结构可以简单概括为:

  • 硬盘的分区方式(如 MBR 或 GPT)定义了硬盘的物理结构。
  • 磁盘管理工具(如 LVM、RAID)用于灵活管理磁盘空间。
  • 文件系统(如 XFS、ext4、NTFS、Btrfs)用于组织和存储文件数据。

在计算机中,从硬盘到文件系统可以分为三层架构,每一层都有其独特的作用和管理方式。以下是硬盘到文件系统的三层解析:

LVM优势:

  • 动态扩展和收缩:可以在不丢失数据的情况下,轻松调整磁盘空间大小。
  • 跨多个磁盘创建卷组:将多个物理磁盘合并为一个逻辑存储池,灵活管理存储空间。
  • 快照功能:支持创建逻辑卷的快照,用于备份和恢复。
  • 灵活的文件系统管理:支持多种文件系统,便于根据需求选择最佳文件系统。
  • 高效利用存储:通过物理扩展(PE)和逻辑卷管理,提高磁盘空间利用率。
  • RAID 支持:LVM 支持软件 RAID 配置,可以在多个磁盘之间配置 RAID,提升性能和冗余性。

重要概念

  • PV(Physical Volume)物理卷:是实际的物理存储设备或分区,LVM 使用 PV 来管理存储空间,如硬盘、分区或RAID设备。
  • VG(Volume Group)卷组:是由一个或多个 PV 组成的存储池,将多个物理卷的空间合并为一个统一的逻辑存储池。
  • LV(Logical Volume)逻辑卷:从 VG 中划分出的存储空间,类似于传统的分区,用户可以在其上格式化文件系统并作为挂载点使用。

实践操作

  • 目标:
    • 将vdb2磁盘分区(5G),构建为LVM.
    • 创建卷组d2
    • 在d2创建xfs的逻辑卷lv1(2G),和ext4的逻辑卷lv2(2G)
    • 将lv1扩展为2.5G
vdb                                                                      
├─vdb1          xfs               b0cf0f8a-6ad4-458f-941d-084ac6c0892b   /mnt/data
└─vdb2          LVM2_member       TsHzVK-JQI6-Mmp3-f9hi-4Evz-2CEv-meSxI5 ├─d2-lv1      xfs               57688a62-a992-4c03-8339-8175719e96c5   /mnt/data2└─d2-lv2      ext4              8c48bfac-05ed-4818-a27c-5bf5cb22527d   /mnt/data3
  • 命令:
序号功能命令
1创建pvpvcreate /dev/vdb2
2创建卷组d2vgcreate d2 /dev/vdb2
3在d2上创建逻辑卷lv1/lv2lvcreate -L 2G -n lv1 d2
lvcreate -L 2G -n lv2 d2
4格式化lv1/lv2mkfs.xfs /dev/d2/lv1
mkfs.ext4 /dev/d2/lv2
5创建挂载点mkdir /mnt/data2
mkdir /mnt/data3
6挂载逻辑卷mount /dev/d2/lv1 /mnt/data2
mount /dev/d2/lv2 /mnt/data3
7扩展逻辑卷大小+0.5Glvextend -L +0.5G /dev/d2/lv1
8扩展文件系统xfs_growfs /dev/d2/lv1

附录(命令)

功能指令
显示当前目录的文件类型file *
列出所有块设备的信息lsblk -f
分区工具parted /dev/vdb
parted /dev/vdbmklabel gpt
mkpart primary 1MiB 5GiB
mkpart primary 5GiB 9.3GiB
print
quit
格式化分区为xfsmkfs.xfs /dev/vdb1
查看文件系统的使用情况df -hT
查看所有物理卷/卷组/逻辑卷pvdisplay
vgdisplay
lvdisplay
查看物理卷/卷组/逻辑卷信息pvs
vgs
lvs
创建物理卷/卷组/逻辑卷pvcreate /dev/vdb2
vgcreate vg_data /dev/vdb2
lvcreate -L 5G -n lv_data vg_data
扩展/减少逻辑卷大小lvextend -L +0.5G /dev/d2/lv1
lvreduce -L -0.5G /dev/d2/lv1 (不适用于xfs)
扩展文件系统xfs_growfs /dev/d2/lv1 (xfs)
resize2fs /dev/d2/lv1 (ext4)
创建挂载点和挂载mkdir /mnt/data
mount /dev/vdb1 /mnt/data
检查挂载/etc/fstab配置mount -a
获取块设备IDblkid
持久化挂载/dev/d2/lv1 /mnt/data2 xfs defaults 0 0
或者 UUID=8c48bfac-05ed-4818-a27c-5bf5cb22527d /mnt/data3 ext4 defaults 0 0
修复xfs文件系统xfs_repair /dev/d2/lv1

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

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

相关文章

Conda-Pack打包:高效管理Python环境

在Python开发中,环境管理是一个不可忽视的重要环节。Conda是一个流行的包管理器和环境管理器,它允许用户创建隔离的环境,以避免不同项目之间的依赖冲突。Conda-pack是一个工具,可以帮助我们将一个conda环境打包成一个可移植文件&a…

人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作,一副手套全部解决!

广州虚拟动力基于自研技术推出了多节点mHand Pro动捕数据手套,其最大的特点就是功能集成与高精度捕捉,可以用于人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作等多种场景。 一、人形机器人训练 mHand Pro动捕数据手套双手共装配16个9轴惯性…

vue3+view-ui-plus+vite+less 实现自定义iview样式

首先是结论: "less": "^2.7.3", "less-loader": "^4.1.0", vite.config.js resolve: {alias: {// 设置路径~: path.resolve(__dirname, ./),// 设置别名: path.resolve(__dirname, ./src)},extensions: [.mjs, .js, .ts…

SpringMVC接收数据

一、访问路径设置: RequestMapping注解的作用就是将请求的URL地址和处理请求的方式(handler方法)关联起来,建立映射关系;SpringMVC接收到指定的请求,就会来找到在映射关系中对应的方法来处理这个请求 1.精准路径匹配: 在RequestMapping注解指定URL地址…

【微服务】Docker

一、Docker基础 1、依赖的兼容问题:Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,使用沙箱机制,相互隔离。 2、如何解决开发、测试、生产环境有差异的问题:Docker镜像…

【自用】管材流转项目前端重部署流程 vue2 webpackage4 vuecli4

一、配置 1.下载项目,使用 IDEA 打开,并配置 Nodejs 它提示我,需要 Node.js,因为 nodejs 14 的 installer 已经官网已经找不到了,使用 fnm 又太麻烦, 所以直接采用在 IDEA 中下载的方式就好了。 2.清除缓…

工程设计行业内外网文件交换解决方案:FileLink助力高效、安全的跨网协作

在工程设计行业,文件交换和信息共享是项目顺利推进的关键。尤其是涉及复杂的设计图纸、技术方案、合同文件等重要资料时,如何确保文件在内外网之间的高效、安全传输,直接影响到项目的进度和质量。FileLink正是为此而生,它为工程设…

鸿蒙多线程开发——Sendable使用注意事项

1、概 述 本文是在鸿蒙多线程开发——线程间数据通信对象03(sendable)基础上做的扩展讨论。 Sendable协议定义了ArkTS的可共享对象体系及其规格约束。符合Sendable协议的数据(以下简称Sendable对象)可以在ArkTS并发实例间传递。 默认情况下&#xff0…

1074 Reversing Linked List (25)

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specif…

Wwise SoundBanks内存优化

1.更换音频格式为Vorbis 2.停用多余的音频,如Random Container的随机脚步声数量降为2个 3.背景音乐勾选“Stream”。这样就让音频从硬盘流送到Wwise,而不是保存在内存当中,也就节省了内存 4.设置最大发声数Max Voice Instances 5.设置音频…

产品转后端?2

产品经理的视角能让你成为更好的后端工程师: 理解业务需求转换为技术方案的过程知道为什么要这样设计API明白数据结构的选择如何影响用户体验了解性能指标对业务的实际影响 在实习过程中可以有意识地向后端倾斜: 常规产品经理工作: "…

C 语言 “神秘魔杖”—— 指针初相识,解锁编程魔法大门(一)

文章目录 一、概念1、取地址操作符(&)2、解引用操作符(*)3、指针变量1、 声明和初始化2、 用途 二、内存和地址三、指针变量类型的意义1、 指针变量类型的基本含义2、 举例说明不同类型指针变量的意义 四、const修饰指针1、co…

Android 使用OpenGLES + MediaPlayer 获取视频截图

概述 Android 获取视频缩略图的方法通常有: ContentResolver: 使用系统数据库MediaMetadataRetriever: 这个是android提供的类,用来获取本地和网络media相关文件的信息ThumbnailUtils: 是在android2.2(api8)之后新增的一个,该类为…

博泽Brose EDI项目案例

Brose 是一家德国的全球性汽车零部件供应商,主要为全球汽车制造商提供机电一体化系统和组件,涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名,在全球拥有多个研发和生产基地,是全球第五大家…

python使用python-docx处理word

文章目录 一、python-docx简介二、基本使用1、新建与保存word2、写入Word(1)打开文档(2)添加标题(3)添加段落(4)添加文字块(5)添加图片(6&#xf…

aws(学习笔记第十五课) 如何从灾难中恢复(recover)

aws(学习笔记第十五课) 如何从灾难中恢复 学习内容: 使用CloudWatch对服务器进行监视与恢复区域(region),可用区(available zone)和子网(subnet)使用自动扩展(AutoScalingGroup) 1. 使用CloudWatch对服务器进行监视与恢复 整体架构 这里模拟Jenkins Se…

lwip raw、netcoon、socket三种接口编程的区别

目录 一、前言 二、LWIP 简介 三、LWIP RAW 编程 1.概念与原理 2.编程模型与流程 3.示例代码 4.优点与缺点 四、LWIP NETCONN 编程 1.概念与原理 2.编程模型与流程 3.示例代码 4.优点与缺点 五、LWIP SOCKET 编程 1.概念与原理 2.编程模型与流程 3.示例代码 …

软件设计 —— 检测按键单击、多击、长按或组合动作

目 录 按键单一动作识别按键组合动作识别 按键单一动作识别 带有按键的作品设计时,按键动作检测是必不可少的,如何判断按键是单击、双击、三击和长按动作呢? 1、定时器定时一个10ms周期 2、把按键检测函数放到这个周期内执行,即…

MySQL MVCC 介绍

MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。MVCC通过在每个数据行上维护多个版本的数据来实现。当一个事务要对数据库中的数据进行修改时,MVCC不会…

【XGlassTerminal.js】快速 构建 炫酷 终端 网页 以及 Linux 模拟器 在线!!

XGlassTerminal.js XGlassTerminal.js 是一个用于构建前端终端样式的 JavaScript 库。它允许开发者轻松地创建一个具有终端风格的用户界面,并对用户输入的命令进行事件处理。 该库提供了丰富的功能,包括文本添加、命令处理、点击事件绑定等。 同时还支…