IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> IO那些事儿(1)基础概念 -> 正文阅读

[系统运维]IO那些事儿(1)基础概念

操作系统

冯诺依曼体系结构

一个计算机是由计算器,控制器,主存储器,输入设备,输出设备五个模块组成的。

linux

Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统

在linux操作系统中,一切皆文件。

kernel

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就l称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

VFS(virtual file system, virtual file switch)

虚拟文件系统,采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统,即为各类文件系统提供了一个统一的操作界面和应用编程接口。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。
在这里插入图片描述

文件类型

文件类型描述
-文件。分纯文本文件(ASCII)和二进制文件(binary)。
l软链接。 一般会使用->来表明链接的源文件。
d目录。
b块设备,是一些提供系统存取数据的接口设备,例如硬盘。
c字符设备,是一些串行端口的接口设备,例如键盘、鼠标、打印机、tty终端。
s套接字文件(socket),用于进程之间的通信。
ppipeline 管道。

链接(l)

  • 硬链接

    #编写文件a
    [root@localhost ~]# vi a
    #创建硬链接b
    [root@localhost ~]# ln a b
    #此时有两个文件 a b
    [root@localhost ~]# ll -h
    -rw-r--r--. 2 root root  493 72 11:27 a
    -rw-r--r--. 2 root root  493 72 11:27 b
    
    #查看元数据a Inode:67445418
    [root@localhost ~]# stat a
      文件:"a"
      大小:493             块:8          IO 块:4096   普通文件
    设备:fd00h/64768d      Inode:67445418    硬链接:2
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2021-07-02 11:27:53.464777729 +0800
    最近更改:2021-07-02 11:27:53.464777729 +0800
    最近改动:2021-07-02 11:28:02.166763272 +0800
    创建时间:-
    
    #查看元数据b Inode:67445418
    #a和b的inode相同,指向同一块物理连接。
    [root@localhost ~]# stat b
      文件:"b"
      大小:493             块:8          IO 块:4096   普通文件
    设备:fd00h/64768d      Inode:67445418    硬链接:2
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2021-07-02 11:27:53.464777729 +0800
    最近更改:2021-07-02 11:27:53.464777729 +0800
    最近改动:2021-07-02 11:28:02.166763272 +0800
    创建时间:-
    

    移除其中一个硬链接,另一个硬链接不报错。

  • 软链接

#编写文件c
[root@localhost ~]# vi c
#创建软链接d指向c
[root@localhost ~]# ln -s c d
#两个文件
[root@localhost ~]# ll -h
-rw-r--r--. 1 root root   40 72 11:33 c
lrwxrwxrwx. 1 root root    1 72 11:33 d -> c
#查看c元数据
[root@localhost ~]# stat c
  文件:"c"
  大小:40              块:8          IO 块:4096   普通文件
设备:fd00h/64768d      Inode:67445420    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2021-07-02 11:33:22.856230686 +0800
最近更改:2021-07-02 11:33:22.856230686 +0800
最近改动:2021-07-02 11:33:22.856230686 +0800
创建时间:-
#查看d元数据
[root@localhost ~]# stat d
  文件:"d" -> "c"
  大小:1               块:0          IO 块:4096   符号链接
设备:fd00h/64768d      Inode:67445419    硬链接:1
权限:(0777/lrwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2021-07-02 11:33:32.961213905 +0800
最近更改:2021-07-02 11:33:29.529219606 +0800
最近改动:2021-07-02 11:33:29.529219606 +0800
创建时间:-

#c和d的inode不同,文件类型也不同

移除硬链接,软链接会报错。
在这里插入图片描述

相关指令

  • 卸载/挂载磁盘

    #卸载
    umount /boot
    #挂载
    mount /dev/sda1 /boot
    
  • 查看文件类型

    file filename
    
  • 查看一个进程中的文件描述符分配情况

    lsof -p <pid> 
    

FD

Inode

inode 是 UNIX 操作系统中的一种数据结构,它包含了与文件系统中各个文件相关的一些重要信息。在 UNIX 中创建文件系统时,同时将会创建大量的 inode 。通常,文件系统磁盘空间中大约百分之一空间分配给了 inode 表。

有时,人们使用了一些不同的术语,如 inode索引编号 (inumber)。这两个术语非常相似,并且相互关联,但它们所指的并不是同样的概念。 inode 指的是数据结构;而索引编号实际上是 inode 的标识编号,因此也称其为 inode 编号 或者索引编号。索引编号只是文件相关信息中一项重要的内容。下一个部分将介绍 inode 中的其他一些属性。

inode 表包含一份清单,其中列出了对应文件系统的所有 inode 编号。当用户搜索或者访问一个文件时,UNIX 系统通过 inode 表查找正确的 inode 编号。在找到 inode 编号之后,相关的命令才可以访问该 inode ,并对其进行适当的更改。

例如,使用 vi 来编辑一个文件。当您键入 vi <filename> 时,在 inode 表中找到 inode 编号之后,才允许您打开该 inode 。在 vi 的编辑会话期间,更改了该 inode 中的某些属性,当您完成操作并键入 :wq 时,将关闭并释放该 inode 。通过这种方式,如果两个用户试图对同一个文件进行编辑, inode 已经在第一个编辑会话期间分配给了另一个用户 ID (UID),因此第二个编辑任务就必须等待,直到该 inode 释放为止。

inode 的结构

对于经验丰富的 UNIX 开发人员或者管理员来说, inode 的结构相对比较简单,但是可能还有一些您尚不了解的、令人惊讶的有关 inode 的内幕。下面的定义仅给出了 inode 中所包含的、UNIX 用户经常使用的一些重要信息:

  • inode 编号
  • 用来识别文件类型,以及用于 stat C 函数的模式信息
  • 文件的链接数目
  • 属主的 UID
  • 属主的组 ID (GID)
  • 文件的大小
  • 文件所使用的磁盘块的实际数目
  • 最近一次修改的时间
  • 最近一次访问的时间
  • 最近一次更改的时间

从根本上讲, inode 中包含有关文件的所有信息(除了文件的实际名称以及实际数据内容之外)。可以在 AIX 的 Header 文件 /usr/include/jf/ino.h 中、或者 Web 页面 http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/inode.h.htm 中可以找到完整的 inode 结构。

以上所列举的信息对于文件来说非常重要,并且在 UNIX 中频繁使用。如果没有这些信息,那么文件将被认为遭到破坏和不可用。

与其他的操作系统相比,UNIX 系统中的目录和文件可能看起来有所不同,但事实并非如此。在 UNIX 中,目录本身就是文件,只是在它们的 inode 中使用了一些附加的设置。目录 本质上就是一个包含了其他文件的文件。另外,其模式信息中设置了一些相应的标志,以告知系统该文件实际上是一个目录。

使用 inode

了解如何在 UNIX 中使用 inode 可以节约大量的时间,并提高工作效率。在尚未了解 inode 之前,您可以使用下面的命令,以减少可能碰到的问题。

pagecache

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:50:51  更:2021-07-10 14:51:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 17:25:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码