iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux 文件系统的操作实现
  • 643
分享到

Linux 文件系统的操作实现

Linux文件系统操作Linux文件系统 2022-06-04 23:06:31 643人浏览 八月长安
摘要

此读书笔记比较主要记录文件系统的相关操作。 磁盘与目录的容量 磁盘的整体数据是在superblock块中,但是每个个别文件的容量则在inode当中记载,常用来显示磁盘使用量的两个命令 df: 列出文件系统的整体磁盘使用

此读书笔记比较主要记录文件系统的相关操作。

磁盘与目录的容量

磁盘的整体数据是在superblock块中,但是每个个别文件的容量则在inode当中记载,常用来显示磁盘使用量的两个命令

df: 列出文件系统的整体磁盘使用量

du: 评估文件系统的磁盘使用量(常用于评估目录所占容量)


$ df [-ahikHTm] [目录或文件名]
参数:
-a: 列出所有的文件系统,包括系统特有的/proc(/proc挂载在内存中,不会占用磁盘空间)等文件系统;
-k: 以KB的容量显示各文件系统
-m: 以MB的容量显示各文件系统
-h:以人们较易阅读的GB、MB、KB等格式自行显示
-H: 以M=1000K 替换M=1024K 的进位方式
-T: 连同该分区的文件系统名称也列出(例如ext3)
-i: 不用硬盘容量,而以inode的数量显示

df主要读取的数据几乎都是针对整个文件系统,因此读取的范围只要是在super block内的信息,所以这个命令显示结果的速度非常快速。


$ du [-ahskm] 文件或者目录名称
参数:
-a 列出所有的文件与目录容量,因为默认仅统计目录的文件量而已
-h 以人们较易读的容量显示
-s 列出总量,而不列出每个个别的目录占用容量
-S 不包括子目录下的总计
-k 以KB列出容量显示
-m 以MB列出容量显示

du会直接查找文件系统的所有文件数据

连接文件: ln

linux下的连接文件有两种:一种是类似windows上的快捷方式,可以让你快速连接到目标文件或目录。另外一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬链接(hard link)。

hard link(硬连接和实际连接)

  • 每个文件都会占用一个inode,文件的内容由inode的记录来指向。
  • 想要读取文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读取。
  • 文件名与目录有关,而文件内容则与inode有关,而hard link就是在某个目录下新建一个文件名连接到某inode号码的关联记录。

vagrant@vagrant-ubuntu-trusty-64:~$ cd /tmp
vagrant@vagrant-ubuntu-trusty-64:/tmp$ touch tes
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ln test test1
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ll -i test test1
62273 -rw-rw-r-- 2 vagrant vagrant 0 Dec 17 12:39 test
62273 -rw-rw-r-- 2 vagrant vagrant 0 Dec 17 12:39 test1

可以看到两个文件的inode号码是一致的,他们的文件权限属性完全一样,而连接数变为了2。

硬连接最大的好处就是安全,如果你将任何一个文件名删除,其实inode与block都是存在的。此时可以通过另外一个文件名来读取到正确的文件数据,不论你使用哪个文件名来编辑,最终的结果都会写到相同的inode与block中,因此均能进行数据的修改。

一般来说,使用hard link设置连接文件时,磁盘的空间和inode的数目都不会改变,hard link只是在某个目录下的block多写一个关联数据而已,既不会增加inode也不会耗用block数量(除非当你在block增加多一个关联数据时刚好磁盘满了,就可能需要增加多一个block来记录文件名关联性,而导致磁盘空间的变化)。

硬连接的限制:

  • 不能跨文件系统
  • 不能连接到目录,因为如果使用hard link连接到目录,连接的数据需要连同被连接目录下面的所有数据都建立连接,会造成环境相当大的复杂度,因此对于目录暂时不支持

symbolic link(符号连接,也即快捷方式)

symbolic link就是创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名,由于只是利用文件作为指向的操作,所以当源文件被删除后,symbolic link的文件会找不到源文件而导致无法打开。


vagrant@vagrant-ubuntu-trusty-64:/tmp$ ln -s test test2
vagrant@vagrant-ubuntu-trusty-64:/tmp$ ll -i test test2
62273 -rw-rw-r-- 2 vagrant vagrant 0 Dec 17 12:39 test
62275 lrwxrwxrwx 1 vagrant vagrant 4 Dec 17 13:07 test2 -> test

两个文件指向不同的inode号码,连接文件的重要内容就是它会写上目标文件的文件名,因为箭头右边的文件是 4 Byte,所以连接文件的大小为 4 byte。

由symbolic link所创建的文件为一个独立的新的文件,所以会占用掉inode与block。

修改symbolic link文件时,会改动到源文件。


$ ln [-sf] 源文件 目标文件
参数:
-s: 如果不加任何参数进行连接,那就是hard link,至于-s就是symbolic link
-f: 如果目标文件存在时,主动将目标文件直接删掉再重建。

关于目录的连接数

当以hard link进行文件的连接时,文件的连接数会增加1,那当我们创建一个空的目录时,由于存在 . 与 .. 这两个目录,那么当我们创建一个空的目录/tmp/testing时,基本会有3个东西:
/tmp/testing
/tmp/testing/.
/tmp/testing/..
其中 /tmp/testing 和 /tmp/testing/. 都代表该目录,而 /tmp/testing/.. 则代表 /tmp 这个目录,所以当我们创建一个新目录,新的目录连接数为2,而上层目录的连接数则会增加1。

磁盘的分区、格式化、检验与挂载

如果要在系统中新增一块硬盘时,需要做以下动作:

  1. 对磁盘进行分区,以新建可用的分区
  2. 对该分区进行格式化,以创建系统可用的文件系统。
  3. 若想要仔细一点,则可对刚才新建好的文件系统进行检验。
  4. 在linux系统上,需要创建挂载点(也即是目录),并将它挂载上来。

磁盘分区:fdisk


$ fdisk [-l] 设备名称
参数:
-l: 输出后面接的设备所有的分区内容。若仅有fdisk -f时,则系统将会把整个系统能够找到的设备的分区均列出来。

# 例如:
# 先找出磁盘文件名
vagrant@vagrant-ubuntu-trusty-64:/tmp$ df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc1 41251136 3631948 35883276 10% /
# 输入fdisk,但不要加上数字
vagrant@vagrant-ubuntu-trusty-64:/tmp$ fdisk /dev/hdc
它会提示Command(m for help): 输入m就可以看到相关参数提示
d 代表删除一个分区
n 代表新增一个分区
p 代表在屏幕中显示分区表
q 代表不存储,离开fdisk程序
w 代表将刚才的操作写入分区表

特别注意 q 和 w,只要离开fdisk时按下q,那么所有的操作都不会生效,相反按下 w 就是操作生效的意思。

删除磁盘分区

要删除分区(例如将/dev/hdc全部分区删除)需要做下面几步:

  1. fdisk /dev/hdc: 先进入fdisk界面
  2. p:先看下分区信息,假设要删掉/dev/hdc1
  3. d: 这个时候要选择一个分区,就选1
  4. w 或者 q: w可存储到磁盘数据表,并离开fdisk; 如果后悔,直接按下q就可以取消刚才的删除操作。

新增磁盘分区

需要进行一下的动作:

  1. fdisk /dev/hdc: 先进入fdisk界面
  2. n: 新增分区
  3. p 或 e 或 l:选择不同的分区类型,其中p代表主分区,e代表扩展分区,l代表逻辑分区
  4. 1 - 4:分区号,可选1-4,如果是逻辑分区,则不需要输入分区号
  5. 输入结束柱面号码,如果要自己计算柱面/分区的大小太麻烦,可以使用类似"+512M"的形式,来让系统帮我们分配最接近512M的柱面号码
  6. p: 查看分区信息
  7. w 或者 q: w可存储到磁盘数据表,并离开fdisk; 如果后悔,直接按下q就可以取消刚才的删除操作。

对于创建分区的形式(主分区/扩展分区/逻辑分区)以及分区的大小,一般来说新建分区的形式会有下面的几种情况:

  1. 1-4号尚有剩余,且系统未有扩展分区:此时会出现让你挑选Primary/Extended的选项,且你可以指定1~4号间的号码
  2. 1-4号尚有剩余,且系统有扩展分区:此时会出现让你挑选Primary/Logical的选项,若选择p你还需指定1~4号间的号码;若选择l则不需要设置号码,因为系统会自动指定逻辑分区的文件名号码
  3. 1-4没有剩余,且系统有扩展分区:此时不会让你挑选分区类型,直接会进入logical的分区形式

一般分区完是需要重启(reboot)才能更新内核的分区表信息,可以使用"partprobe"强制让内核重新找一次分区表

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

--结束END--

本文标题: Linux 文件系统的操作实现

本文链接: https://www.lsjlt.com/news/20840.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 操作系统中的文件操作:揭秘文件系统的奥秘
    操作系统构成了计算机系统与用户之间的桥梁,而文件操作是其核心功能之一。文件系统是操作系统管理和组织存储在计算机存储设备(如硬盘和固态硬盘)中的文件的一种方法。要充分理解计算机系统,了解文件系统的原理至关重要。 文件系统结构 文件系统将存...
    99+
    2024-02-29
    文件系统、文件操作、操作系统
  • 【操作系统实验】Ubuntu Linux 虚拟机目录文件操作
    文章目录 目录的创建和删除创建目录删除目录 文件的创建和删除创建文件删除文件 复制目录、文件移动目录、文件 目录的创建和删除 创建目录 mkdir 命令 功能描述:mkdir命令...
    99+
    2023-10-23
    linux ubuntu 服务器 bash vim
  • Linux操作系统怎么实现的传真系统
    本篇内容主要讲解“Linux操作系统怎么实现的传真系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux操作系统怎么实现的传真系统”吧!传真是企业中的常规使用,许多商贸往来的信息交换都须要...
    99+
    2023-06-17
  • Linux操作文件系统怎么调用
    本篇内容介绍了“Linux操作文件系统怎么调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需要引入的头文件:#inlcude<uni...
    99+
    2023-06-21
  • Linux如何实现文件操作
    这篇文章主要介绍了Linux如何实现文件操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。文件是linux中的一个重要概念。在Linux中,一切(几乎一切)都是文件。简单的说...
    99+
    2023-06-28
  • Linux操作系统下隐藏文件的方法
    这篇文章主要讲解了“Linux操作系统下隐藏文件的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux操作系统下隐藏文件的方法”吧!一. 概述 目前通用的隐藏文件方法还是hooksy...
    99+
    2023-06-17
  • Linux操作系统文件系统的安装和卸载方法
    这篇文章主要介绍“Linux操作系统文件系统的安装和卸载方法”,在日常操作中,相信很多人在Linux操作系统文件系统的安装和卸载方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux操作系统文件系统的安...
    99+
    2023-06-17
  • 操作系统:文件操作的幕后英雄
    操作系统是计算机系统的核心,负责管理硬件和软件的协调运行。其中,文件操作是操作系统的一项重要功能,它允许用户以一种高效和可靠的方式与文件进行交互。 文件管理 操作系统通过文件管理系统对文件进行管理。文件管理系统负责创建、删除、移动、复制、...
    99+
    2024-02-29
    操作系统、文件操作、文件管理、文件系统、缓冲区
  • Linux上如何实现文件操作
    这篇文章主要介绍了Linux上如何实现文件操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。按名称列出文件最简单的方法是使用 ls 命令按名称列出文件。毕竟,按名称(字母数字...
    99+
    2023-06-15
  • Linux文件系统的目录和操作有哪些
    这篇文章主要讲解了“Linux文件系统的目录和操作有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux文件系统的目录和操作有哪些”吧!内存使用部分目录说明/binbin是Binar...
    99+
    2023-06-29
  • Linux操作文件的底层系统怎么调用
    这篇文章主要介绍了Linux操作文件的底层系统怎么调用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux操作文件的底层系统怎么调用文章都会有所收获,下面我们一起来看看吧。linux操作系统奉行一切皆文件的...
    99+
    2023-07-05
  • 揭秘操作系统的文件操作:简化文件管理
    文件操作、操作系统、文件管理 文件系统:数据的组织结构 文件系统是操作系统用来组织和管理存储在计算机中的数据的结构。它定义了如何组织文件和目录,以及如何分配存储空间。常见的文件系统包括 FAT、NTFS 和 ext4。 文件:数据的基本...
    99+
    2024-02-29
    文件操作是操作系统最重要的功能之一 它使计算机能够存储和检索数据。理解文件操作的基本原理对于优化计算机性能至关重要。
  • Linux操作文件的底层系统如何调用
    这篇文章主要介绍“Linux操作文件的底层系统如何调用”,在日常操作中,相信很多人在Linux操作文件的底层系统如何调用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux操作文件的底层系统如何调用”的疑...
    99+
    2023-07-06
  • Java面试:如何在Linux文件系统中操作文件?
    在Java开发中,经常需要进行文件操作,比如读取文件内容、写入文件内容、创建文件夹等等。而在Linux操作系统中,文件系统是一种非常重要的资源,因此掌握在Linux文件系统中操作文件的技能也变得尤为重要。本文将介绍在Java中如何在Lin...
    99+
    2023-08-04
    面试 linux 文件
  • 文件操作的艺术:操作系统中的高效操作
    1. 理解文件结构 文件是操作系统中存储和组织数据的基本单元。它们由文件头、文件内容和文件尾组成。文件头包含有关文件及其内容的信息,例如文件类型、大小和创建日期。文件内容是实际数据,而文件尾标识文件结束。 2. 文件操作命令 每个操作系...
    99+
    2024-02-29
    文件操作、操作系统、命令行、Python、文件权限
  • 如何实现Python底层技术的文件系统操作
    如何实现Python底层技术的文件系统操作,需要具体代码示例近年来,Python语言在软件开发领域取得了非常广泛的应用,特别是在文件系统操作方面。Python凭借其简洁易读的语法和丰富的库函数,使开发人员可以轻松实现各种底层文件系统操作。本...
    99+
    2023-11-09
    Python文件操作 文件系统编程 底层技术实现
  • Linux操作系统
    在我们的生活中除了常见的Windows系统和MAC系统之外,Linux也是非常常用,现在很多人都想要掌握Linux技术,加入该行列之中,成为专业的技术人员。那么Linux需要杀毒软件吗为大家简单的介绍一下。  Linux系统需要杀毒软件吗一...
    99+
    2023-06-05
  • C语言实现银行管理系统(文件操作)
    本文实例为大家分享了C语言实现银行管理系统的具体代码,供大家参考,具体内容如下 银行管理系统主要有五个模块组成: 1、查询账户信息2、存钱3、取款4、转账5、退出系统 测试文件:(首...
    99+
    2024-04-02
  • C++实现图书管理系统(文件操作与类)
    本文实例为大家分享了C++实现图书管理系统的具体代码,供大家参考,具体内容如下 (1)定义图书类; (2)图书信息包括:书名name,价格price,库存num; (3)可以查询、增...
    99+
    2024-04-02
  • 揭示操作系统文件系统的黑盒子
    ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作