各种接口磁盘在Linux中的文件名分别为

/dev/sd[a-p][1-15]:为SCSI,SATA,USB,Flash随身碟等接口的磁盘文件名

/dev/hd[a-d][1-63]:为IDE接口的磁盘文件名

注:sd/hd为硬盘接口,即为sd接口还是ide接口。  a-p 字母为 硬盘的个数,即  a为第一块硬盘,b为第二块硬盘以此类推。

主分区,延伸分区(扩展分区),逻辑分区的区别。

硬盘分区有三种,主磁盘分区、扩展磁盘分区、逻辑分区
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。
在windows下激活的主分区硬盘启动分区,他是独立的,也是硬盘的第一个分区,正常分的话就是C区。 在linux下主分区逻辑分区都可以用来放系统,引导os开机,grub会兼容windows系统开机启动。
分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部分成扩展分区,也可以不全分,那剩的部分就浪费了。
但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。
在linux中第一块硬盘分区为hda分区,主分区编号为hda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
主分区也可成为“引导分区”,会被操作系统和主板认定为这个硬盘的第一个分区。所以C盘永远都是排在所有磁盘分区的第一的位置上。
MBR(主引导记录)的分区表主分区表)只能存放4个分区,如果要分更多的分区的话就要一个扩展分区表(EBR),扩展分区表放在一个系统ID为0x05的主分区上,这个主分区就是扩展分区,扩展分区能可以分若干个分区,每个分区都是个逻辑分区
 
详情 链接 https://www.cnblogs.com/w-wfy/p/8870598.html  wwfy的博客所写的内容
 
硬盘分区格式化的目的
磁盘分区完成后,还需要进行格式化。format,之后操作系统才能使用该分区,格式化的原因是每种操作系统所设定的文件属性/权限并不相同,为了存放这些档案所需的数据,因此需要将分区进行格式化,以成为操作系统能够利用的【文件系统格式(filesystem)】
 
inode,data block,superblock之间的解释与联系
Linux中,档案的权限(rwx)与文件属性(user,gorup,mtime等),文件系统通常会将这两部分的数据分别存放在不同的区块,曲线和属性放置在inode中,实际数据则放置在data block中,整个文件系统的整体信息,包括inode,block的总量,使用量,剩余量则放置在superbolock中。
superbolck  记录此filesystem的整体信息,包括inode,block的总量使用量剩余量以及文件系统的格式等相关信息
inode   记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的block的号码
block   实际记录档案的内容,若档案太大时,会占用多个block
 
注:每个档案都有一个Inode,每个inode记录着档案block的编号,通过编号就能读取该档案的实际内容。提高读取档案的效率
注:微软最新的NTFS文件系统采用的是BTree形式进行索引,每一个Node节点储存的是父节点指针,关键字,子节点指针。NTFS搜索文件是,直接折中搜索,将整个系统分成上下两部分,然后通过关键字来比对,来判断是在上半区还是下半区,然后在将半区进行折中平分,再比对,直到找到档案所在的datablock为止。BTree必须是顺序节点的附加,这样才能保证折中搜索的顺利进行。
1  data block

2 inode table

3 Superblock

命令  dumpe2fs 查看相关硬盘信息。

查询信息的上半部分为  superblock的内容

下半部分为block group的信息

ls -i这个命令来获得档案所占用的inode号码

ll-d 命令来获得每个档案所占用的block数。

目录读取树

新增档案

日志式文件系统的来龙去脉(joumaling filesystem)

根据上图中可得知,当在写入数据时,需要写入inode和block。同时更新inode bitmap和block bitmap,superblock三块区域。

若在写入inode和block后,突然遇到意外情况,如断电等,会导致后续更新inode bitmap 和 super block的停止,从而造成数据的不一致性。在ext2中,就会有superblock当中记录的valid bit(是否挂载)与 filesystem state(clean 与否)等状态来判断是否强制性进行数据一致性检查。通过e2fsck命令来执行。主要针对metadata和数据存放区域来比对,就需要对整个filesystem进行一致性检查,从造成系统主机复原时间比较长。为了避免出现上述情况,就出现了日志式文件系统。如下图

Linux 文件系统的运作

硬盘文件需要加载到内存中才能被cpu所处理。如果在编辑的过程中频繁的操作硬盘,而硬盘的读写效率又是如此的低下,这会导致文件字读写过程过程中的漫长等待。所以Linux采用了异步处理(asynchronously)的方式。

。这样操作有个问题,就是如果你在档案写入的过程中,出现断电等异常情况,会导致内存中的dirty数据无法回写到硬盘中,从而导致数据丢失的状况出现,所以我们要不定时的利用sync命令来强制写入硬盘。

Linux文件系统与内存的关系如下图

默认centos 不支持NTFS格式的磁盘,而要挂在NTFS格式磁盘,就需要用到软件,具体操作如下链接

https://blog.csdn.net/sinat_32867867/article/details/78210847

Linux VFS(Virtual Filesystem Switch)

即通过VFS系统,Linux系统自动将每个挂在点所采用的文件系统进行管理。而不需要用户自己去选择和操作

关系如下

但如果Linux不支持某个文件系统,如NTFS,则就无法通过VFS系统来自动加载识别,则需要再上个段落中所需要的第三方软件来手动加载读取。

深入学习的链接 http://linux.vbird.org/linux_basic/1010appendix_B.php

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

【du】评估文件系统的磁盘使用量|(常用在推估目录所占容量)

硬连接 hard link

https://www.cnblogs.com/hanxianlong/p/3478338.html(winodws与linux创建硬连接和软连接)

我们知道,如果两个目录block,但是只要他们的inode的数字是相同的,那就代表这两个路径不同的block内容时相同的。这就是所谓的硬连接。比方说,我们在视窗操作系统中所看到的所谓的文件夹其实是目录名即(block)。目录名通过关联inode码来关联档案数据。如果有两个目录名同时指向inode码,那这就是硬连接。注意区分硬连接与快捷方式的区别。

图例

注意:hardlink的限制条件

不能夸Filesyste

不能link目录  (因为目录下面或许有很多文件,如果link目录,则会将下面的所有档案全部link,复杂度就非常高了)

Symbolic link (符号链接,快捷方式)

上面两张图我觉得说的还不是很清楚,大白话就是,硬连接 两个block指向同一个inode.软连接就是,每个block都有自己的inode,然后软连接通过与复制第一个block的方式进行访问真实数据。也就是说,对于真实数据来说,硬连接是两个人同时针对他,软连接是一个人针对他,另一个人针对另一个人。程序理解就是

A a=new a

B b =new b  b=a  硬连接  两个对象同时指向同一块内存区域

A a= new a

B b=a  软连接   一个对象指向内存区域,另一个对象指向该对象

【ln】 命令来创建软链接和硬链接

eg

将/etc/passwd文件复制到tmp本目录。注意passwd后面有个 “."。然后查看容量大小为 2259823

  对passwd进行硬连接为 passwd-hd

查看容量大小。还是2259823.验证了硬连接在一般情况下是不会额外增加block的数量的。一种例外,就是恶心遇到了恶心他妈的情况,比如你这个block已经满了,然后你又创建了一个硬连接,那就恶心到家了。

然后建立软连接,passwd-so。通过ll-li可以发现,硬连接 passwd和passwd-hd他们的inode码是相同的,但是软连接passwd-so的inode码是不一样的。668138和668139.而增量也增加到了2259829.2259829-2259823=6.那这6个byte是从何而来呢,因为passwd的每个字母都占用了一个byte,也从中可以验证,passwd-so存储的是passwd的文件名。

删除源文件passwd。passwd-hd与passwd-so的区别是如何呢?

。看到了吧,也就是说,硬连接即使你把源文件删除,但是因为保存的是相同的inode码,所以照样能够读取到passwd的内容。而软连接因为连接的是源文件,所以源文件删除之后自然就无法读取到文件了。

针对硬盘管理。需要以下几个步骤

1  对磁盘进行分割,已建立可用的partion(分区)  fdisk

2  对该partition进行格式化(format),以建立系统可用的filesystem,(格式化)mkfs

3 若想要仔细一点,则可对刚刚建立好的filesystem进行检验,(磁盘检测)  fsck,badblocks

4 在Linux系统上,需要建立挂载点(亦即是目录),并将他挂在上来(windows中磁盘管理,添加盘符)mount/unmount

命令:

【fdisk】磁盘分区

  命令  df / , 列出根目录所在的路径名   /dev/mapper/centos-root 。输入fdisk+路径名  则会列出fdisk相关的命令信息,如下图

【mkfs】 格式化磁盘

用法   mkfs -t ext4 分区目录

在进行fidsk进行磁盘分区后,有可能会出现需要reboot才能生效的情况,这时就需要partprobe命令,核心进行重新加载,然后才能进行挂载等操作。

【fsck】  磁盘检验

【badblocks】检验硬盘或软件扇区是否有坏轨

磁盘挂载与卸除

挂在条件

。单一文件系统不应该被重复挂载在不同的挂载点(目录)中

。单一目录不应该重复挂载多个文件系统

。要作为挂载点的目录,理论上应该都是空目录才是。(如果挂载点目录非空,则新挂载点会隐藏原目录中的内容,即该挂载点只会显示新挂载的硬盘信息,原信息会被隐藏,直到该挂载被卸载)

【mount】指令,挂载硬盘

查看挂载信息 【mount -l】

挂载u盘 【mount -t vfat -o iocharset=cp950  挂载点】

注:如果带有中文名的数据,可以再挂载时指定挂载文件系统所使用的语系数据。在man mount找到vfat文件格式当中可以使用iocharset来指定语系,cp950是中文语系。

百度之后参考链接

https://www.cnblogs.com/jiu0821/p/6489249.html

【mount -o remount,rw,auto/】将/(根目录)重新挂载,并加入参数rw与auto。

当根目录出现只读状态时,重新挂载的方法。

【mount --bind /home /mnt/home】 类似于软连接的方式(symbolick link)。将两个目录进行软连接,类似于建立了一个home的快捷方式

最后一行证明,二者已经建立软连接。

这点我跟硬连接搞混了。最后才搞明白原来建立的是软连接。硬连接ln 无法对目录进行硬连接,具体原因如下链接进行解释。

https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html#major2

【e2label】 设置文件系统标头的Label。就类似于windows硬盘原来是c.d.e.f。然后你给改成  文件,数据等等

设定开机挂载,俗称系统挂载

/etc/fstab及/etc/mtab

意思就是在/etc/fstab文件中,将磁盘分区进行挂载。这个东西一开始弄不熟悉,不知道该咋弄,后来查看了文档明白了。实际操作如下

首先,先检查一下你的磁盘  fdisk-l

我这有两块磁盘,一块sda,一块sdb。我现在想将/dev/sdb6放到 /mnt/hdc6目录中进行挂载

输入命令, nano /etc/fastb   打开/etc/fastb编辑器,永久挂载就是在这个文件中进行写入。然后系统会读取,从而实现自动挂载。

弹出如下图所示界面,这就是这个文件的编辑器

上图界面第一行是文件名,就表示你正在操作的文件。第二行是各种操作步骤。下方所有命令都是ctrl+具体的操作字母。

在这个编辑器中输入,要进行挂载的命令。如下图

你要挂载的分区  挂载的目的地路径  文件类型   默认方式   能否被dump备份指令作用  (具体介绍我会在下面单独列示)

然后就是保存,ctrl+o

,这里这个文件名一般不会变,但是保不准你手贱就随便按了一下就变了,这里我的就变了,后面多加了一个a,所以要把a删除掉再保存,这里记得看清楚。

按回车。会提示已写入一行,然后ctrl+x离开界面

然后操作命令  mount -a

df    进行查看,看是否进行了挂载,如下图

好吧,以上操作导致了虚拟机的崩溃,无法启动。。。。后续原因再查找。现在需要 去搞小程序了,留着再回来看

好了,回过头来继续解决问题。今天在继续往下看的过程中,突然注意到这么一句话

让我们用虚拟机来试一下这句话能不能行。我一开始以为这是一个初始化的命令,现在才明白,这个是在单人模式下时,配置文件是只读模式,通过上面命令,可以将只读模式的文件进行可读写权限。这样就可以配置fstab的配置文件选项了,同样,还可以通过这个命令来修改root密码。

 
 

linux 磁盘与文件系统管理 (鸟哥私房菜)的更多相关文章

  1. Linux 磁盘与文件系统管理

    介绍一本书叫<Linux 鸟哥私房菜>, 一本教人用linux很经典的一本书,这两天又看了里面的一章节,做一点笔记.有一些很细节的东西的, 在平时运用过很容易被忽略. 1)U盘使用的文件格 ...

  2. Linux磁盘与文件系统管理笔记

    ### Linux磁盘与文件系统管理 linux 最传统的文件系统格式是EXT2,centos7 默认文件系统是xfs(日志式文件系统) 磁盘的组成: 盘片 机械手臂 主轴马达 (机械硬盘) 磁盘格式 ...

  3. Linux学习笔记—Linux磁盘与文件系统管理(转载)

    认识EXT2文件系统 文件的系统特性 Linux的正规文件系统为Ext2 文件数据除了文件实际内容外,还包括其他属性(文件权限.文件属性). 文件系统将这两部分数据分别存放在不同的块,权限和属性放在i ...

  4. Linux学习笔记之Linux磁盘及文件系统管理笔记

    Linux磁盘及文件系统管理 CPU,memory(RAM),I/O i/o: disks,ehtercard disks:持久存储数据 接口类型: IDE(ata): 并口,133MB/s;并行总线 ...

  5. Linux磁盘与文件系统管理概要

    Linux磁盘与文件系统管理 硬盘组成与分区 硬盘组成 圆形的盘片(主要记录数据) 机械手臂与磁头(可读取盘片上的数据) 主轴马达,转动盘片,让机械手臂的磁头在盘片上读取数据 扇区(Sector)为最 ...

  6. 学习鸟哥私房菜--linux bash 的环境变量ps1设置

    bash里边的变量ps1是用户平时的提示符,系统默认为[username@host 工作目录]$.关于ps1的相关介绍详见:http://www.cnblogs.com/starspace/archi ...

  7. 鸟哥的Linux私房菜 基础学习篇读书笔记(9):Linux磁盘与文件系统管理(2)

    上一篇文章主要从理论上分析了Linux的Ext2文件系统.这一篇主要解说怎样查看Linux的文件系统的容量以及解说Linux文件系统中的连接文件. 能够通过df和du命令来查看磁盘与文件夹的容量.df ...

  8. 鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)

    本文总结了Linux操作系统来管理我们的硬盘和文件系统需要使用命令.当我们在系统中增加一个硬盘驱动器.什么是我们需要去通过这个硬盘就可以真正使用步骤?下面步骤: (1)对磁盘进行分区,新建能够使用的分 ...

  9. 鸟哥的linux私房菜——第七章学习(Linux 磁盘与文件系统管理)

    1.1).文件系统特征 我们称呼一个可被挂载的数据为一个文件系统而不是一个分区! 文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data ...

  10. 鸟哥私房菜基础篇:Linux 磁碟与档案系统管理习题

    猫宁!!! 参考链接:http://linux.vbird.org/linux_basic/0230filesystem.php 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-我们常常说,开机的时候 ...

随机推荐

  1. Day1 - 认识大数据& 企业需求分析 & 北风网简介

    上午: 介绍: 海量的乱七八糟的数据中快速的计算出某些有用的信息 刑侦视频追踪 云栖大会 大数据分析/挖掘 ==>  python  <== 重点关注 大数据运维   ==> 运服务 ...

  2. ArcGis 创建Annotation注记要素类、添加注记要素 并加载到Activeview AO C#

    AO中一般有两种方式存储图面注记元素,一种使用TextElement,它是文档级的元素,编辑后要通过文档(mxd)保存:另一种是使用Annotation要素类,它是一个独立的要素类(featurecl ...

  3. Java出现OutOf MemoryError(OOM 错误)的原因有哪些?出现OOM错误后,怎么解决?

    OutOf MemoryError这种错误可以细分为多种不同的错误,每种错误都有自身的原因和解决办法,如下所示: java.lang.OutOfMemoryError: Java heap space ...

  4. hdu 5791 思维dp

    题目描述: 求序列A,B的公共子序列个数: 基本思路: 想到了dp,选的状态也对,但是就是就是写不出状态转移方程,然后他们都出了,到最后我还是没出,很难受,然后主要是没有仔细考虑dp[i][j],dp ...

  5. Python的历史及介绍

    Python的诞生 Python的创始人吉多·范罗苏姆(Guido van Rossum),在1989年12月的圣诞节期间,为了打发时间,决定开发一种新的脚本解释程序,作为ABC语言的继承. 现在,p ...

  6. spring在注解标注的方法上加切面

    之前以为只能在方法签名上加切面,今天发现注解上也能加切面 1.自定义一个注解(任意注解都可以,不一定是自定义的) @Target({ElementType.METHOD}) @Retention(Re ...

  7. bootstrap 标签页的使用(tab)

    <!DOCTYPE html> <html> <head> <title></title> <link rel="style ...

  8. C存储类

    C 存储类 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期.这些说明符放置在它们所修饰的类型之前.下面列出 C 程序中可用的存储类: auto register static extern ...

  9. Mac版本navicat premium彻底卸载的终端命令

    Mac版本navicat premium彻底卸载的终端命令: sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/v ...

  10. [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)

    Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要 玩家每天按时上线,完成打卡任务.这个游戏的地图 ...