Kubernetes Volume及其类型(NFS、SAN) - PV - PVC - PV与PVC与Pod的关系

目录

volume 卷

官方文档:卷 | Kubernetes

一、emptyDir(临时卷)

二、hostPath卷

type字段参数 

hostPath 实验:

三、第3方提供的存储卷(百度云、阿里云、亚马逊云、谷歌云等)

四、local卷

五、NFS卷

参考文档:https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs

六、SAN卷

七、NAS卷

pv (PersistentVolumes )持久卷

官方网站:持久卷 | Kubernetes

pvc(PersistentVolumeClaim)持久卷申领

pv和pvc、pod的关系:

关系拓扑图:

案例一:创建 PersistentVolume(PVC)

参考文档:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

创建 PVC 拓扑图

案例二:在两个地方挂载相同的 PersistentVolume(PV)


volume 卷

官方文档:卷 | Kubernetes

Kubernetes 支持很多类型的卷。 Pod 可以同时使用任意数目的卷类型。 临时卷类型的生命周期与 Pod 相同 但持久卷可以比 Pod 的存活期长。 当 Pod 不再存在时,Kubernetes 也会销毁临时卷不过 Kubernetes 不会销毁持久卷。 对于给定 Pod 中任何类型的卷,在容器重启期间数据都不会丢失。 

一、emptyDir(临时卷)

在宿主机上创建一个空文件夹,给卷存放数据(存放位置:/var/lib/docker/volumes/)

用来存放临时的数据,当 Pod 因为某些原因被从节点上删除时,emptyDir 卷中的数据也会被永久删除。

二、hostPath卷

hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中

hostPath 的一些用法有:

  • 运行一个需要访问 Docker 内部机制的容器;可使用 hostPath 挂载 /var/lib/docker 路径。
  • 在容器中运行 cAdvisor 时,以 hostPath 方式挂载 /sys
  • 允许 Pod 指定给定的 hostPath 在运行 Pod 之前是否应该存在,是否应该创建以及应该以什么方式存在。 

type字段参数 

hostPath 实验:

配置文件:

[root@master storage]# vim volume.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      # 宿主上目录位置(必须每台node上都有该文件夹)
      path: /data
      # 此字段为可选(建议使用DirectoryOrCreate,如果/data目录不在,会帮助我们自动创建)
      # (Directory:在给定路径上必须存在的目录。)
      type: Directory

 在每台node节点服务器上创建/data文件夹

[root@node3 ~]# mkdir /data
[root@node3 ~]# cd /
[root@node3 /]# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  nginx  one_creat_nginx.sh  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@node3 /]# 

执行创建Pod

[root@master storage]# kubectl apply -f volume.yaml 
pod/test-pd created
[root@master storage]# 

#查看效果
[root@master storage]# kubectl get pod -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
my-nginx-575db987b-49jnv   1/1     Running   0          68m   10.244.1.5   node1   <none>           <none>
my-nginx-575db987b-rmnvh   1/1     Running   0          68m   10.244.3.5   node3   <none>           <none>
my-nginx-575db987b-w2xvf   1/1     Running   0          68m   10.244.2.5   node2   <none>           <none>
test-pd                    1/1     Running   0          39s   10.244.1.6   node1   <none>           <none>
[root@master storage]# 

三、第3方提供的存储卷(百度云、阿里云、亚马逊云、谷歌云等)

四、local卷

local 卷所代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。

local 卷只能用作静态创建的持久卷。不支持动态配置。

与 hostPath 卷相比,local 卷能够以持久和可移植的方式使用,而无需手动将 Pod 调度到节点。系统通过查看 PersistentVolume 的节点亲和性配置,就能了解卷的节点约束。

然而,local 卷仍然取决于底层节点的可用性,并不适合所有应用程序。 如果节点变得不健康,那么 local 卷也将变得不可被 Pod 访问。使用它的 Pod 将不能运行。 使用 local 卷的应用程序必须能够容忍这种可用性的降低,以及因底层磁盘的耐用性特征而带来的潜在的数据丢失风险。

五、NFS卷

nfs 卷能将 NFS (网络文件系统) 挂载到你的 Pod 中。 不像 emptyDir 那样会在删除 Pod 的同时也会被删除,nfs 卷的内容在删除 Pod 时会被保存,卷只是被卸载。 这意味着 nfs 卷可以被预先填充数据,并且这些数据可以在 Pod 之间共享。

它的网络基于TCP/IP协议(网速)

它的磁盘的速度基于IOPS协议

NFS 网络文件系统 --》 保证数据一致性

参考文档:https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs

六、SAN卷

SAN:存储区域网络 (Storage Area Network, SAN) 是企业最常用的存储网络架构,要求高吞吐量和低延迟的业务关键型业务往往采用这类架构运行。如今,采用全闪存存储使用光纤传输)的 SAN 部署数量增速迅猛。与旋转磁盘相比,全闪存存储可提供更出色的性能、稳定一致的低延迟以及更低的总成本。SAN 将数据存储在集中式共享存储中,使企业能够运用一致的方法和工具来实施安全防护、数据保护和灾难恢复。

理解为一种存储的解决方案,一种架构

七、NAS卷

NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。它以数据为中心,将存储设备与服务器彻底分离,集中管理数据,从而释放带宽、提高性能、降低总拥有成本、保护投资。

基于TCP/IP协议传输,可以支持NFS协议专业存储设备,可以给局域网里的服务器或者移动设备提供NFS服务

pv (PersistentVolumes )持久卷

官方网站:持久卷 | Kubernetes

PersistentVolume 子系统为用户和管理员提供了一组 API, 将存储如何制备的细节从其如何被使用中抽象出来。 为了实现这点,我们引入了两个新的 API 资源:PersistentVolume 和 PersistentVolumeClaim。

持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。 持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。

pvc(PersistentVolumeClaim)持久卷申领

持久卷申领(PersistentVolumeClaim,PVC)表达的是用户对存储的请求。概念上与 Pod 类似。 Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。Pod 可以请求特定数量的资源(CPU 和内存);同样 PVC 申领也可以请求特定的大小和访问模式 (例如,可以要求 PV 卷能够以 ReadWriteOnce、ReadOnlyMany 或 ReadWriteMany 模式之一来挂载,参见访问模式)。

pv和pvc、pod的关系:

关系拓扑图:

案例一:创建 PersistentVolume(PVC)

参考文档:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

创建 PVC 拓扑图

在每台机器上进行(防止创建卷的时候报错,说该台node上没有指定的文件夹)

[root@master /]# mkdir /sc/data      #创建存储文件夹
[root@master /]# ls
bin  boot  dev  etc  home  lianxi  lib  lib64  media  mnt  nginx  opt  proc  root  run  sbin  sc  srv  sys  tmp  usr  var
[root@master /]# sh -c "echo 'Hello clay from Kubernetes storage' > /sc/data/index.html"
[root@master /]# cat /sc/data/index.html   #查看index.html的内容
Hello clay from Kubernetes storage
[root@master /]#  

创建pv-volume.yaml 

[root@master /]# mkdir pv
[root@master /]# cd pv
[root@master pv]# vim pv-volume.yaml
[root@master pv]# cat pv-volume.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: task-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/sc/data"
[root@master pv]# 

此配置文件指定卷位于集群节点上的 /sc/data 路径。 其配置还指定了卷的容量大小为 10 GB,访问模式为 ReadWriteOnce, 这意味着该卷可以被单个节点以读写方式安装此配置文件还在 PersistentVolume 中定义了 StorageClass 的名称为 manual,它将用于将 PersistentVolumeClaim 的请求绑定到此 PersistentVolume。

创建 PersistentVolume:

[root@master pv]# kubectl apply -f pv-volume.yaml
persistentvolume/task-pv-volume created
[root@master pv]# 

查看创建后的效果 

[root@master pv]# kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Available           manual                  33s
[root@master pv]# 
[root@master pv]# kubectl get pv task-pv-volume
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Available           manual                  69s
[root@master pv]# 

创建 PersistentVolumeClaim

下一步是创建一个 PersistentVolumeClaim。 Pod 使用 PersistentVolumeClaim 来请求物理存储。 在本练习中,你将创建一个 PersistentVolumeClaim,它请求至少 3 GB 容量的卷, 该卷至少可以为一个节点提供读写访问。

[root@master pv]# vim pv-claim.yaml
[root@master pv]# cat pv-claim.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi
[root@master pv]# 

创建PersistentVolumeClaim

[root@master pv]# kubectl apply -f pv-claim.yaml 
persistentvolumeclaim/task-pv-claim created
[root@master pv]# 

创建 PersistentVolumeClaim 之后,Kubernetes 控制平面将查找满足申领要求的 PersistentVolume。 如果控制平面找到具有相同 StorageClass 的适当的 PersistentVolume, 则将 PersistentVolumeClaim 绑定到该 PersistentVolume 上。

查看创建后的效果

[root@master pv]# kubectl get pvc
NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
task-pv-claim   Bound    task-pv-volume   10Gi       RWO            manual         70s
[root@master pv]# kubectl get pv task-pv-volume
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS   REASON   AGE
task-pv-volume   10Gi       RWO            Retain           Bound    default/task-pv-claim   manual                  6m2s
[root@master pv]# 

创建一个使用你的 PersistentVolumeClaim 作为存储卷的 Pod。

配置文件pv-pod.yaml 

[root@master pv]# vim pv-pod.yaml
[root@master pv]# cat pv-pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
        claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage
[root@master pv]# 

创建pv卷的Pod

[root@master pv]# kubectl apply -f pv-pod.yaml 
pod/task-pv-pod created
[root@master pv]# 

查看创建后的效果

[root@master pv]# kubectl get pod -o wide
NAME                       READY   STATUS    RESTARTS   AGE    IP           NODE    NOMINATED NODE   READINESS GATES
my-nginx-575db987b-49jnv   1/1     Running   0          137m   10.244.1.5   node1   <none>           <none>
my-nginx-575db987b-rmnvh   1/1     Running   0          137m   10.244.3.5   node3   <none>           <none>
my-nginx-575db987b-w2xvf   1/1     Running   0          137m   10.244.2.5   node2   <none>           <none>
#创建的Pod
task-pv-pod                1/1     Running   0          44s    10.244.2.6   node2   <none>           <none>   
test-pd                    1/1     Running   0          69m    10.244.1.6   node1   <none>           <none>
[root@master pv]# 

注意 Pod 的配置文件指定了 PersistentVolumeClaim,但没有指定 PersistentVolume。 对 Pod 而言,PersistentVolumeClaim 就是一个存储卷。

打开一个 Shell 访问 Pod 中的容器:

[root@master pv]# kubectl exec -it task-pv-pod -- /bin/bash
root@task-pv-pod:/# 

在 Shell 中,验证 Nginx 是否正在从 hostPath 卷提供 index.html 文件:

# 一定要在上一步 "kubectl exec" 所返回的 Shell 中执行下面三个命令
[root@master pv]# kubectl exec -it task-pv-pod -- /bin/bash
root@task-pv-pod:/# apt update        #更新所有软件
root@task-pv-pod:/# apt install curl  #下载curl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
curl is already the newest version (7.88.1-10).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@task-pv-pod:/# curl http://localhost/   #访问本地的nginx服务
Hello clay from Kubernetes storage       #出现了index.html内的网页内容
root@task-pv-pod:/# 
#输出结果是你之前写到 hostPath 卷中的 index.html 文件中的内容:

案例二:在两个地方挂载相同的 PersistentVolume(PV)

将Pod内的nginx的配置文件nginx.conf拷贝到/sc/data/目录下

[root@master ~]# kubectl cp default/test-pd:/etc/nginx/nginx.conf /sc/data/nginx.conf
tar: Removing leading `/' from member names
[root@master ~]# ls /sc/data/
index.html  nginx.conf

修改配置文件(将nginx的可以使用进程数改为4)

将他传给所有node节点服务器(你可以选择不传,k8s会帮助你创建一个nginx.conf,但是配置是默认配置)

[root@master data]# scp nginx.conf 192.168.2.149:/sc/data/
welcome to sc SSH!
root@192.168.2.149's password: 
nginx.conf                                                                                                                                                 100%  645   438.9KB/s   00:00    
[root@master data]# 

退出原来的Pod

[root@master pv]# kubectl delete -f  pv-pod.yaml 
pod "task-pv-pod" deleted
[root@master pv]# 

创建新的配置文件

[root@master pv]# cat pv-pod-2.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
    - name: test
      image: nginx
      volumeMounts:
        # 网站数据挂载
        - name: config
          mountPath: /usr/share/nginx/html
          subPath: html
        # Nginx 配置挂载
        - name: config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
  volumes:
    - name: config
      persistentVolumeClaim:
        claimName: task-pv-claim
[root@master pv]# 

创建Pod

[root@master pv]# kubectl apply -f pv-pod-2.yaml 
pod/test created

创建成功:

[root@master pv]# kubectl get pod -o wide
NAME                       READY   STATUS    RESTARTS   AGE    IP           NODE    NOMINATED NODE   READINESS GATES
my-nginx-575db987b-49jnv   1/1     Running   0          3h3m   10.244.1.5   node1   <none>           <none>
my-nginx-575db987b-rmnvh   1/1     Running   0          3h3m   10.244.3.5   node3   <none>           <none>
my-nginx-575db987b-w2xvf   1/1     Running   0          3h3m   10.244.2.5   node2   <none>           <none>
test                       1/1     Running   0          9s     10.244.2.7   node2   <none>           <none>
test-pd                    1/1     Running   0          115m   10.244.1.6   node1   <none>           <none>
[root@master pv]# 

查看它是否使用我们的nginx配置(4个nginx进程)(也可以查看nginx的配置文件)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现Attention-GRU多输入单输出回归预测(注意力机制融合门控循环单元,TPA-GRU)

回归预测 | MATLAB实现Attention-GRU多输入单输出回归预测----注意力机制融合门控循环单元&#xff0c;即TPA-GRU&#xff0c;时间注意力机制结合门控循环单元 目录 回归预测 | MATLAB实现Attention-GRU多输入单输出回归预测----注意力机制融合门控循环单元&#xff0c;即TPA-G…

如何在无人机支持下完成自然灾害风险评估的原理和方法

对灾害的损失进行估算与测算是制定防灾、抗灾、救灾 及灾后重建方案的重要依据。 自然灾害评估按灾害客观地发展过程可分三种&#xff1a;一是灾前预评估&#xff0c;二是灾期跟踪或监测性评估&#xff0c;三是灾后实测评估。 灾前预评估要考虑三个因素&#xff0c;第一是未来…

真正的理解WPF中的TemplatedParent

童鞋们在WPF中经常看到 TemplatedParent ,或者经常看到下面的用法: {Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content} 是不是看的一脸蒙圈? 先看官方文档: 意思是 和这个控件的 模板上的 父亲,如果这个控件不是模板创建的,那么这个值就…

Python爬虫学习笔记(三)————urllib

目录 1.使用urllib来获取百度首页的源码 2.下载网页图片视频 3.总结-1 4.请求对象的定制&#xff08;解决第一种反爬&#xff09; 5.编解码 &#xff08;1&#xff09;get请求方式&#xff1a;urllib.parse.quote&#xff08;&#xff09; &#xff08;2&#xff09;get请求…

使用 YOLOv8 和 Streamlit 构建实时对象检测和跟踪应用程序:第 1 部分-介绍和设置

示例:图像上的对象检测 介绍 实时视频中的目标检测和跟踪是计算机视觉的一个重要领域,在监控、汽车和机器人等各个领域都有广泛的应用。 由于需要能够识别和跟踪对象、确定其位置并对它们进行实时分类的自动化系统,对视频帧中的实时对象检测和跟踪的需求日益增加。 在这…

迁移 Gitee 仓库到 Github

Step1: 在Gitee找到你要迁移的仓库, 并复制 克隆|下载 链接 Step2: 打开 Github, 找到 按钮选择 Import Step3: 打开 Github, 找到 按钮选择 Import Step4: Waiting... 等待导入成功 Over~ 还有一种镜像更新的方案, Gitee 支持镜像同步, 但是我使用时无法获取到仓库名,…

初识vue3/setup/ ref()/ computed/watch/生命周期/父传子

创建项目先不着急学 main.js变了 新加setup reactive ref() computed watch 生命周期 父传子 子传父 ref/模板引用 暴露子组件属性 跨层传数据 defineOptions

RabbitMQ之交换机

RabbitMQ之交换机 1. Exchanges1.1 Exchanges 概念1.2 Exchanges 的类型1.3 无名 exchange 2. 临时队列3. 绑定&#xff08;bindings&#xff09;4. Fanout4.1 Fanout 介绍4.2 Fanout 实战 5. Direct exchange5.1 Direct exchange 介绍5.2 多重绑定5.3 实战 6. Topics6.1 之前类…

API漏洞检测研究

xray API漏洞检测_青霄的博客-CSDN博客 Swagger ui接口自动化批量漏洞测试_swgeer-ui 漏洞_山山而川的博客-CSDN博客 什么是 API 安全测试以及它是如何工作的&#xff1f; | Synopsys API 安全测试针对应用程序编程接口 (API) &#xff0c;就其安全性、正确性和可靠性进行测试&…

LeetCode 75 第四题(605)种花问题

题目: 示例: 分析: 给一个数组表示一个花园,其中0表示空地,1表示已经有花种下去了. 空地可以种花,但是花和花之间不能相邻,即数组中不能有两个连续的1. 给一个数n,问我们能不能在花园里种n朵花. 我们可以找出我们所能种的最多的数量(而不是只种n朵),然后比较我们最多能种的…

Redis相关配置(3)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ 文章目录 Redis相关配置1、units2、Include3、loadmodule 加载模块4、NET…

你认为大数据的特点是什么?_光点科技

随着信息技术的迅猛发展&#xff0c;大数据已成为当今社会不可忽视的重要资源。它是指规模庞大且快速增长的数据集合&#xff0c;其中包含着宝贵的信息和见解。大数据的特点是多样而复杂的&#xff0c;它们塑造了我们的世界并深刻地影响着各行各业。 巨大的规模&#xff1a;大数…

css学习知识总结

一、css与html连接&#xff1a; 可以将css语句放在html内部&#xff0c;一般放在<head>之下&#xff0c;定义在<style>中&#xff0c;格式一般是一个“.”然后加上一个“名称”再加上一个“{}”&#xff0c;再在“{}”内部定义具体的语句。 二、调整元素 2.1 字体…

HIVE SQL 根据主键去重并实现其余字段分组聚合

相同个人id下所有字段按时间顺序补位&#xff0c;取首个不为空值 --数据建表 drop table if exists db.tb_name; create table if not exists db.tb_name ( id string,name string,tele string,email string,date string ) ; insert overwrite table db.tb_name values (&qu…

无涯教程-Javascript - Switch语句

从JavaScript 1.2开始&#xff0c;您可以使用 switch 语句来处理这种情况&#xff0c;它比重复的 if ... else if 语句更有效。 流程图 以下流程图说明了switch-case语句的工作原理。 switch 语句的目的是给出一个要求值的表达式&#xff0c;并根据表达式的值执行多个不同的语…

springboot项目中添加自定义日志

文章目录 当前项目使用的springboot为 2.2.2.release。低版本的话logging下的子标签有可能不是这样的。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELE…

Jetpack Compose之学习前的准备~

作者&#xff1a;TimeFine 一、为啥学习Compose 学习Compose一开始我是拒绝的&#xff0c;因为习惯改变太大&#xff0c;写xml挺好的为啥要卷Compose&#xff1f; 后来看了郭霖大佬的文章 写给初学者的Jetpack Compose教程&#xff0c;为什么要学习Compose&#xff1f; 觉得大…

K8S集群内部署Rancher2.5.16

K8S集群内部署Rancher2.5.16 一、环境 k8s&#xff1a;1.18.20 OS&#xff1a;Anolis OS 7.9 rancher&#xff1a;2.5.16 参考官网部署文档&#xff1a;https://ranchermanager.docs.rancher.com/zh/v2.6/pages-for-subheaders/install-upgrade-on-a-kubernetes-cluster 二…

springboot整合feign实现RPC调用,并通过Hystrix实现服务降级

目录 一、服务提供者 二、服务消费者 三、测试效果 四、开启Hystrix实现服务降级 feign/openfeign和dubbo是常用的微服务RPC框架&#xff0c;由于feigin内部已经集成ribbon&#xff0c;自带了负载均衡的功能&#xff0c;当有多个同名的服务注册到注册中心时&#xff0c;会根…

Linux中常用的指令

ls ls [选项] [目录或文件] 功能&#xff1a;对于目录&#xff0c;列出该目录下所有的子目录和文件&#xff1b;对于文件&#xff0c;列出该文件的文件名和其他属性 常用选项&#xff1a; -a:列出目录下的所有文件&#xff0c;包括以.开头的隐藏文件 -l:列出文件的详细信息。…