RECH8.0版本学习 days 10

访问Linux文件系统

Linux哲学,一切皆文件。

Linux服务器上的文件时按文件系统层次结构(一个颠倒的目录树)访问的。

要让文件系统的内容在文件系统层次结构中可用,必须将它挂载到一个空目录上。该目录被称为挂载点。

在Linux中,对存储设备的低级别访问是由一种称为块设备的特殊类型文件提供的。在挂载这些块设备前,必须先使用文件系统对其进行格式化。块设备文件与其他的设备文件一起存储在/dev 目录中。

块设备命名

设备类型 设备命名模式
SATA/SAS/USB附加存储 /dev/sda、/dev/sdb....
virtio-blk超虚拟化存储(部分虚拟机) /dev/vda、/dev/vdb....
NVMe附加存储(很多SSD) /dev/nvme0, /dev/nvme1......
SD/MMC/eMMC存储(SD卡) /dev/nmcblk0,/dev/nmcblk1......
较新的virtio-scsi超虚拟化存储 /dev/sd*。

磁盘分区

存储设备通常划分为更小的区块,称为分区。

分区本身就是块设备。在SATA附加存储中,第一磁盘上的第一个分区是/dev/sda1。第二个磁盘上的第三个分区是/dev/sdb3,以此类推。

NVMe附加ssd设备命名分区的方式,第一磁盘上的第一分区是/dev/nvme0p1。第二磁盘上的第三个分区是/dev/nvme1p3。以此类推。

host上/dev/sda1设备文件的长列表显示其特殊文件类型为b,代表块设备:

逻辑卷

整个磁盘和分区可以通过逻辑卷管理(LVM),通过LVM,一个或多个块设备可以汇集为一个存储池,称为卷组。然后,卷组中的磁盘空间被分配到一个或多个逻辑卷,他们的功能等同于驻留在物理磁盘上的分区。LVM系统在创建时为卷组和逻辑卷分配名称。LVM在/dev 中创建一个名称与组名匹配的目录,然后在该目录中创建一个逻辑卷同名的符号链接。例如,如果一个卷轴名为myvg,其中有一个名为mylv的逻辑卷,那么其逻辑卷设备文件的完整路径名为/dev/myvg/mylv。

df 命令会报告所有已挂载的普通文件系统的总磁盘空间、已用磁盘空间、可以磁盘空间,以及已用磁盘空间占总磁盘空间的百分比。会同时报告本和和远程文件系统。

df -h 或-H 可改善输出大小的可读性。使用-h时报告单位时KiB(2**10)、MiB(2**20)、或GiB(2**30),使用-H时报告单位是SI单位,即KB(10**3)、MB(10**6)或GB(10**9)。硬盘驱动器制造商在广告其产品时通常使用SI单位。

如需有关某一特定目录树使用的空间的详细信息,可以使用du命令。du命令具有-h和-H选项,可以将输入转换为可读的格式。du命令以递归方式显示当前目录树中所有文件的大小。示例:

du /usr/share      du   -h  /var/log

挂载和卸载文件系统

mount 命令允许root用于手动挂载文件系统。mount命令第一个参数指定要挂载的文件系统。第二个参数指定在文件系统层次结构中用作挂载点的目录。

常用两种方法可以为mount命令指定磁盘分区的文件系统:

  • 在/dev的设备文件名称中包含文件系统。
  • 将UUID(一个通用唯一标识符)写入文件系统。

使用lsblk命令可列出指定块设备或所有可用设备的详细信息。

示例,在 /dev/vdb1目录上的/mnt/data分区中挂载文件系统。

mount  /dev/vdb1  /mnt/data

若要挂载文件系统,目标目录必须已存在。如果用作挂载点的目录不为空,则在挂载文件系统前复制到此目录中的任何文件均不可访问,直到将该文件系统再次卸载。默认情况下,/mnt目录存在并用作临时挂载点。

lsblk -fp命令列出设备的完整路径、其UUID和挂载点,以及分区中文件系统的类型。如未挂载文件系统,挂载点将为空。示例,根据文件系统的UUID挂载文件系统:

如果登录并使用的是图像桌面环境,则插入任何可移动存储介质时,它将自动挂载。

可移动存储设备将挂载到/run/media/USERNAME/LABEL,USERNAME时=是登录图形环境的用户名。而LABEL是一个标识符,通常是创建时给文件系统取的名称。在移除设备之前,应手动将它卸载。

关机和重新引导过程会自动卸载所有文件系统。文件系统数据通常缓存在内存中,因此,为了避免损坏磁盘上的数据,务必先卸载可移动驱动器,再拔下他们。

卸载文件系统,umount命令需要使用挂载点作为参数。示例:umount  /mnt/data

lsof命令列出所给目录中所有打开的文件以及访问他们的进程。示例: lsoft  /mnt/data

查找系统中的文件

locate命令搜索预生成索引中的文件名或文件路径,并即时返回结果。

find命令通过爬取整个文件系统层次结构来实时搜索文件。

loacte命令根据文件的名称或路径查找文件,从mlocate数据库中查找这些信息,updatedb命令来强制即使更新locate数据库。

-i选项执行不区分大小写的搜索。使用此选项,所有大小写字母都能与搜索匹配。示例: locate -i messages

-n选项限制locate命令返回的搜索结果数量。示例:

find命令通过在文件系统层次结构中执行实时搜索来查找文件,它比locate慢,精确度高。

find命令的第一个参数是要搜索的目录,如果省略目录参数,find将从当前目录中开始搜索,并在任何子目录中查找匹配项。

find使用-name FILENAME选项,将返回FILENAME完全匹配的文件的路径。示例:从/目录开始搜索名为sshd_config的文件,命令如下:

find  /  -name  sshd_config

也可以使用通配符搜索文件名。示例:

根据所有权或权限搜索文件

find可以根据所有权或权限搜索文件, -user和-group(按名称搜索),-uid和-gid(按ID搜索)。

示例:在host上的/home/user 目录上搜索由user拥有的文件。

-perm选项用于查找具有特定权限集的文件。示例:

根据大小搜索文件

find 命令可以查找与指定的大小相符的文件,该大小是通过-size选项加上数字值与单位来指定的。用作-size选项的单位:

  • k 表示千字节。
  • M,表示兆字节。
  • G, 表示千兆字节。

示例:

   

根据修改时间搜索文件

-nmin选项加上分钟表示以分钟表示的时间,将搜索内容在过去n分钟前更改的所有文件。如:查找在120以前更改的所有文件:find  / -nmin 120

分钟树前加上+修饰符将查找/ 目录中在n分钟以前修改过的所有文件,- 修饰符则查找/ 目录中在过去n分钟内更改的所有文件。示例

find /   -mmin +200     查找200分钟以前修改过的文件。 find /  -mmin   -150   列出过去150分钟内修改过的文件。

根据文件类型搜索文件

find命令中-type 选项将搜索范围限制为给定的文件类型。f,表示普通文件;d,表示目录;l,表示软连接;b,表示块设备。示例:

列出 所有软连接: find  /  -type l

-links选项加上数字将查找具有特定硬链接数的所有文件。数字前面带有+修饰符将查找硬链接超过所给数目的文件。-修饰符则搜索限制为硬链接数小于所给数目的所有文件。示例:

find /  -type f  -links +1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章