阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux文件系统有哪些必备知识?【Linux每日一个知识点第76期】

79次阅读
没有评论

共计 3516 个字符,预计需要花费 9 分钟才能阅读完成。

在 Linux 中,一切皆文件。作为 Linux 系统学习的基础知识,掌握这项内容是对 Linux 运维工程师的基本要求。今天我们整理了一些相关的文件系统内容,希望通过较高的层次来对文件系统进行解析,帮助大家更加深入的理解。


【Linux 每日一个知识点第 76 期】Linux 文件系统有哪些必备知识?

1.Linux 磁盘分区和目录

  Linux 发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不同。目录结构基本上都是一样的。Windows 的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如:C,D,E,F 等。

Linux 的文件结构是单个的树状结构. 可以用 tree 进行展示。在 Ubuntu 下安装 tree(sudo apt-get install tree), 并可通过命令来查看。

每次安装系统的时候我们都会进行分区,Linux 下磁盘分区和目录的关系如下:

–      任何一个分区都必须挂载到某个目录上。

–      目录是逻辑上的区分。分区是物理上的区分。

–      磁盘 Linux 分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。

–      根目录是所有 Linux 的文件和目录所在的地方,需要挂载上一个磁盘分区。

以下是我们可能存在的一种目录和分区关系:

Linux 文件系统有哪些必备知识?【Linux 每日一个知识点第 76 期】

 图 1:目录和分区关系

Q: 如何查看分区和目录及使用情况?

–      fdisk 查看硬盘分区表

–      df:查看分区使用情况

–      du: 查看文件占用空间情况

Q: 为什么要分区,如何分区?

–      可以把不同资料,分别放入不同分区中管理,降低风险。

–      大硬盘搜索范围大,效率低

–      磁盘配合只能对分区做设定

–      /home /var /usr/local 经常是单独分区,因为经常会操作,容易产生碎片

2.Mount 挂载和 NFS 简介

挂载的概念:当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东西都是文件。Mount 命令可以实现挂载:

mount [-fnrsvw] [-t vfstype] [-o options] device dir

Q:所有的磁盘分区都必须被挂载上才能使用,那么我们机器上的硬盘分区是如何被挂载的?

A:这主要是它利用了 /etc/fstab 文件。每次内核加载它知道从这里开始 mount 文件系统。每次系统启动会根据该文件定义自动挂载。若没有被自动挂载,分区将不能使用。如下是我的 /etc/fstab 的定义,主要是根据装机的分区来的:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

proc            /proc           proc    defaults        0       0

#/dev/sda1 被自动挂载到  /

UUID=cb1934d0-4b72-4bbf-9fad-885d2a8eeeb1 /               ext3    relatime,errors=remount-ro 0       1

# /dev/sda5 被自动挂载到分区 /home

UUID=c40f813b-bb0e-463e-aa85-5092a17c9b94 /home           ext3    relatime        0       2

#/dev/sda7 被自动挂载到 /work

UUID=0f918e7e-721a-41c6-af82-f92352a568af /work           ext3    relatime        0       2

# 分区 /dev/sda6 被自动挂载到 swap

UUID=2f8bdd05-6f8e-4a6b-b166-12bb52591a1f none            swap    sw              0       0

Q:移动硬盘如何挂载?如何挂载一个新的分区?

移动硬盘有驱动模块会自动挂载,如果有个新硬盘,要先进行分区,并通过 mount 命令挂载到某个文件夹。如果要自动挂载则可以修改 /etc/fstab 文件.

NFS简介:NFS 相信在很多地方都有广泛使用,是一个非常好的文件共享方式。我们公司所使用的上传服务就是把文件上传到某台网络服务器上,中间就是通过 NFS 实现。

使用 NFS 客户端可以透明的地访问服务器端的文件。NFS 也是通过 mount 来实现,底层是通过 NFS 通信协议实现。基本原理:

Linux 文件系统有哪些必备知识?【Linux 每日一个知识点第 76 期】

图 2:NFS 基本原理

Ubuntu 下面 Ubuntu 下的例子

服务端:

$apt-get install nfs-kernel-server

vi /etc/exports 添加 nfs 目录: /personal/nfs_share

10.1.60.34(rw,sync,no_root_squash)

$sudo exportfs -r

$sudo /etc/init.d/portmap start

$sudo /etc/init.d/nfs-kernel-server start

客户端:

$sudo apt-get install nfs-common

$sudo mount 10.19.34.76:/personal/nfs_share ~/nfsshare 例子:

3.文件类型

Linux 下面的文件类型主要有:

  1. a)普通文件:C 语言元代码、SHELL 脚本、二进制的可执行文件等。分为纯文本和二进制。
  2. b)目录文件:目录,存储文件的唯一地方。
  3. c)链接文件:指向同一个文件或目录的的文件。
  4. d)特殊文件:与系统外设相关的,通常在 /dev 下面。分为块设备和字符设备。

可以通过 ls –l, file, stat 几个命令来查看文件的类型等相关信息。

4. 文件存储结构

Linux 正统的文件系统 (如 ext2、ext3) 一个文件由目录项、inode 和数据块组成。

目录项: 包括文件名和 inode 节点号。

Inode:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。

数据块:文件的具体内容存放地。

Linux 正统的文件系统 (如 ext2、3 等) 将硬盘分区时会划分出目录块、inode Table 区块和 data block 数据区域。一个文件由一个目录项、inode 和数据区域块组成。Inode 包含文件的属性(如读写属性、owner 等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从 inode table 中查出文件属性及数据存放点,再从数据块中读取数据。

站在 2w 英尺视图, 文件存储结构大概如下:

Linux 文件系统有哪些必备知识?【Linux 每日一个知识点第 76 期】

图 3:文件存储结构 2w 英尺视图

其中目录项的结构如下(每个文件的目录项存储在改文件所属目录的文件内容里):

Linux 文件系统有哪些必备知识?【Linux 每日一个知识点第 76 期】
 图 4:目录项结构 

其中文件的 inode 结构如下(inode 里所包含的文件信息可以通过 stat filename 查看得到):

 Linux 文件系统有哪些必备知识?【Linux 每日一个知识点第 76 期】

图 5:inode 结构

以上只反映大体的结构,Linux 文件系统本身在不断发展。但是以上概念基本是不变的。且如 ext2、ext3、ext4 文件系统也存在很大差别,如果要了解可以查看专门的文件系统介绍。

5.软连接、硬链接

软链接和硬链接是我们常见的两种概念:

硬连接 :是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中[color=red] 任意一个 [/color] 其余的文件将不受影响。

软连接: 也叫符号连接, 他只是对源文件在新的位置建立一个“快捷(借用一下 wondows 常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水 -> 仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。

具体关系可以看下图:

Linux 文件系统有哪些必备知识?【Linux 每日一个知识点第 76 期】

图 5:软链接和硬链接

从图上可以看出硬链接和软链接的区别:

1:硬链接原文件和新文件的 inode 编号一致。而软链接不一样。

2:对原文件删除,会导致软链接不可用,而硬链接不受影响。

3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。


《Linux 学习每日一个知识点》栏目是马哥教育 Linux 云计算年薪 20 万 + 的学员社群特别发起,分享 Linux 工具、Linux 语法、Linux 项目等知识点,帮助大家快速的了解 Linux 学习,快速步入 Linux 高薪的快车道。

http://www.magedu.com/74163.html

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计3516字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中