重生之我要当云原生大师(十一)访问Linux文件系统

目录

一、解释下文件系统、块设备、挂载点、逻辑卷。

二、简述文件系统、块设备、挂载点、逻辑卷之间的关系?

三、如何检查文件系统?

四、挂载和卸载文件系统的流程?

五、find命令都可以根据什么查找文件。


一、解释下文件系统、块设备、挂载点、逻辑卷。

1. 文件系统(File System)

在 RHEL 中,文件系统是操作系统用于管理文件和目录的机制。RHEL 支持多种文件系统,常见的有:

  • ext4:默认的文件系统,稳定且高效。
  • XFS:适用于大文件和高性能场景,RHEL 7 及以上版本的默认文件系统。
  • Btrfs:支持快照、压缩等高级功能,但尚未成为默认选择。

文件系统负责:

  • 文件和目录的存储与管理。
  • 权限控制(如用户、组、其他用户的读写执行权限)。
  • 元数据管理(如文件大小、创建时间等)。

示例

在 RHEL 中,可以使用以下命令查看文件系统类型:

lsblk -f


2. 块设备(Block Device)

块设备是 RHEL 中用于存储数据的基本单元,通常以固定大小的块(如 4KB)进行读写。常见的块设备包括:

  • 物理硬盘(如 /dev/sda)。
  • 分区(如 /dev/sda1)。
  • 逻辑卷(如 /dev/mapper/vg0-lv0)。

块设备通过设备文件访问,RHEL 中的设备文件通常位于 /dev 目录下。

示例

查看系统中的块设备:

lsblk


3. 挂载点(Mount Point)

挂载点是 RHEL 中将文件系统连接到目录树的目录。通过挂载,文件系统的内容可以在挂载点目录下访问。RHEL 中的挂载点通常位于 /mnt 或 /media 目录下,但可以挂载到任何目录。

示例

将 /dev/sda1 分区挂载到 /mnt/data:

sudo mount /dev/sda1 /mnt/data

查看已挂载的文件系统:

df -h


4. 逻辑卷(Logical Volume, LV)

逻辑卷是 RHEL 中逻辑卷管理(LVM)的一部分,用于动态管理存储空间。LVM 将物理存储设备(如硬盘或分区)抽象为逻辑卷,提供更灵活的存储管理方式。

LVM 的主要组件:

  • 物理卷(Physical Volume, PV):实际的存储设备(如 /dev/sda1)。
  • 卷组(Volume Group, VG):由一个或多个物理卷组成。
  • 逻辑卷(Logical Volume, LV) :从卷组中划分的逻辑存储单元。(后续会详细讲到)

优点

  • 动态调整大小(无需重新分区)。
  • 支持快照、镜像等高级功能。
  • 灵活的存储管理。

示例

创建逻辑卷:

  1. 创建物理卷:

sudo pvcreate /dev/sdb1

  1. 创建卷组:

sudo vgcreate vg0 /dev/sdb1

  1. 创建逻辑卷:

sudo lvcreate -n lv0 -L 10G vg0

  1. 格式化并挂载逻辑卷:

sudo mkfs.xfs /dev/vg0/lv0

sudo mount /dev/vg0/lv0 /mnt/data

查看逻辑卷信息:

sudo lvs

二、简述文件系统、块设备、挂载点、逻辑卷之间的关系?
  1. 块设备 是存储数据的物理或虚拟设备(如硬盘、分区或逻辑卷)。
  2. 逻辑卷 是从 卷组 中划分的逻辑存储单元,逻辑卷本身也是一种块设备。
  3. 文件系统 创建在 块设备逻辑卷 上,用于管理文件和目录。
  4. 挂载点 是将 文件系统 连接到目录树的目录,用户通过挂载点访问文件系统中的数据。

示例流程

  1. 创建块设备
    • 物理硬盘 /dev/sdb 被分区为 /dev/sdb1。
  2. 创建逻辑卷
    • 将 /dev/sdb1 初始化为物理卷(PV)。
    • 创建卷组 vg0,并将 /dev/sdb1 加入卷组。
    • 从卷组 vg0 中创建逻辑卷 lv0(/dev/vg0/lv0)。
  3. 创建文件系统
    • 在逻辑卷 /dev/vg0/lv0 上创建 XFS 文件系统:

sudo mkfs.xfs /dev/vg0/lv0

  1. 挂载文件系统
    • 将文件系统挂载到 /mnt/data:

sudo mount /dev/vg0/lv0 /mnt/data

  1. 访问数据
    • 用户可以通过 /mnt/data 访问文件系统中的数据。

关系图

块设备(如 /dev/sdb1)

|

v

逻辑卷(如 /dev/vg0/lv0)

|

v

文件系统(如 XFS)

|

v

挂载点(如 /mnt/data)


总结

  • 块设备 提供存储空间。
  • 逻辑卷 在块设备的基础上提供灵活的存储管理。
  • 文件系统 在块设备或逻辑卷上创建,用于管理文件和目录。
  • 挂载点 将文件系统连接到目录树,使用户可以访问数据
三、如何检查文件系统?

使用df du等命令。

四、挂载和卸载文件系统的流程?

1. 识别块设备

首先,需要识别系统中可用的块设备(如硬盘、分区或逻辑卷)。

使用 lsblk 查看块设备:

lsblk

输出示例:

  • 这里 sdb 是一个未分区的硬盘,sda3 是一个未挂载的分区。

2. 分区(如果需要)

如果块设备未分区(如 sdb),可以使用 fdisk 或 parted 进行分区。

使用 fdisk 分区:

  1. 启动 fdisk:

sudo fdisk /dev/sdb

  1. 创建新分区:
    • 输入 n 创建新分区。
    • 选择分区类型(主分区 p 或扩展分区 e)。
    • 设置分区大小。
  2. 保存分区表:
    • 输入 w 保存并退出。
  3. 刷新分区表:

sudo partprobe /dev/sdb

  1. 查看分区:

lsblk


3. 格式化文件系统

在分区或逻辑卷上创建文件系统(如 ext4、XFS)。

格式化 ext4 文件系统:

sudo mkfs.ext4 /dev/sdb1

格式化 XFS 文件系统:

sudo mkfs.xfs /dev/sdb1


4. 创建挂载点

挂载点是一个目录,用于访问文件系统的内容。

创建挂载点:

sudo mkdir /mnt/data


5. 挂载文件系统

将文件系统挂载到挂载点。

挂载文件系统:

sudo mount /dev/sdb1 /mnt/data

验证挂载:

使用 df -h 或 lsblk 查看挂载状态:

df -h

或:

lsblk


6. 配置自动挂载(/etc/fstab)

为了在系统启动时自动挂载文件系统,需要编辑 /etc/fstab 文件。

获取文件系统的 UUID:

sudo blkid /dev/sdb1

输出示例:

/dev/sdb1: UUID="1234-5678-90AB-CDEF" TYPE="ext4"

编辑 /etc/fstab:

在 /etc/fstab 中添加一行:

UUID=1234-5678-90AB-CDEF /mnt/data ext4 defaults 0 2

  • 第一列:设备标识(如 UUID 或设备路径)。
  • 第二列:挂载点。
  • 第三列:文件系统类型。
  • 第四列:挂载选项(如 defaults)。
  • 第五列:是否备份(0 表示不备份)。
  • 第六列:是否检查文件系统(0 表示不检查,1 表示根文件系统,2 表示其他文件系统)。

测试 /etc/fstab 配置:

sudo mount -a

重启系统验证:

重启系统后,文件系统会自动挂载。


7. 卸载文件系统

如果需要卸载文件系统,可以使用以下步骤。

卸载文件系统:

sudo umount /mnt/data

验证卸载:

df -h


总结

完整的挂载操作流程如下:

  1. 识别块设备:使用 lsblk 查看块设备。
  2. 分区:使用 fdisk 或 parted 对块设备分区(如果需要)。
  3. 格式化文件系统:使用 mkfs 创建文件系统。
  4. 创建挂载点:创建目录作为挂载点。
  5. 挂载文件系统:使用 mount 挂载文件系统。
  6. 配置自动挂载:编辑 /etc/fstab 实现开机自动挂载。
  7. 卸载文件系统:使用 umount 卸载文件系统。
五、find命令都可以根据什么查找文件。

文件名、文件类型、文件大小、文件权限、文件所有者、文件修改时间、文件内容

同时可以组和条件查找(与、或、非)

相关推荐
斯普信专业组7 小时前
从零到一:基于Rook构建云原生Ceph存储的全面指南(上)
ceph·云原生
数字化综合解决方案提供商7 小时前
云原生时代的开发利器
云原生
鸵鸟爸爸15 小时前
Terraform 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案
云原生·devops·terraform
鸵鸟爸爸15 小时前
Kubernetes 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案
云原生·容器·kubernetes·devops
企鹅侠客1 天前
k8s中Network Policy的设计原理和实现方式?
云原生·容器·kubernetes
Linux运维老纪1 天前
K8s —基础指南(K8s - Basic Guide)
运维·服务器·云原生·容器·kubernetes·运维开发
学Linux的语莫1 天前
k8s常用资源清单
云原生·容器·kubernetes
程序员林北北1 天前
【Golang学习之旅】gRPC 与 REST API 的对比及应用
java·开发语言·后端·学习·云原生·golang
小胖子——鑫1 天前
对“云原生”的初印象
java·开发语言·云原生