linux 磁盘与文件系统管理 (鸟哥私房菜)
各种接口磁盘在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为第二块硬盘以此类推。
主分区,延伸分区(扩展分区),逻辑分区的区别。

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 磁盘与文件系统管理 (鸟哥私房菜)的更多相关文章
- Linux 磁盘与文件系统管理
介绍一本书叫<Linux 鸟哥私房菜>, 一本教人用linux很经典的一本书,这两天又看了里面的一章节,做一点笔记.有一些很细节的东西的, 在平时运用过很容易被忽略. 1)U盘使用的文件格 ...
- Linux磁盘与文件系统管理笔记
### Linux磁盘与文件系统管理 linux 最传统的文件系统格式是EXT2,centos7 默认文件系统是xfs(日志式文件系统) 磁盘的组成: 盘片 机械手臂 主轴马达 (机械硬盘) 磁盘格式 ...
- Linux学习笔记—Linux磁盘与文件系统管理(转载)
认识EXT2文件系统 文件的系统特性 Linux的正规文件系统为Ext2 文件数据除了文件实际内容外,还包括其他属性(文件权限.文件属性). 文件系统将这两部分数据分别存放在不同的块,权限和属性放在i ...
- Linux学习笔记之Linux磁盘及文件系统管理笔记
Linux磁盘及文件系统管理 CPU,memory(RAM),I/O i/o: disks,ehtercard disks:持久存储数据 接口类型: IDE(ata): 并口,133MB/s;并行总线 ...
- Linux磁盘与文件系统管理概要
Linux磁盘与文件系统管理 硬盘组成与分区 硬盘组成 圆形的盘片(主要记录数据) 机械手臂与磁头(可读取盘片上的数据) 主轴马达,转动盘片,让机械手臂的磁头在盘片上读取数据 扇区(Sector)为最 ...
- 学习鸟哥私房菜--linux bash 的环境变量ps1设置
bash里边的变量ps1是用户平时的提示符,系统默认为[username@host 工作目录]$.关于ps1的相关介绍详见:http://www.cnblogs.com/starspace/archi ...
- 鸟哥的Linux私房菜 基础学习篇读书笔记(9):Linux磁盘与文件系统管理(2)
上一篇文章主要从理论上分析了Linux的Ext2文件系统.这一篇主要解说怎样查看Linux的文件系统的容量以及解说Linux文件系统中的连接文件. 能够通过df和du命令来查看磁盘与文件夹的容量.df ...
- 鸟哥Linux私房菜 基础学习篇读书笔记(10):Linux磁盘和文件系统管理(3)
本文总结了Linux操作系统来管理我们的硬盘和文件系统需要使用命令.当我们在系统中增加一个硬盘驱动器.什么是我们需要去通过这个硬盘就可以真正使用步骤?下面步骤: (1)对磁盘进行分区,新建能够使用的分 ...
- 鸟哥的linux私房菜——第七章学习(Linux 磁盘与文件系统管理)
1.1).文件系统特征 我们称呼一个可被挂载的数据为一个文件系统而不是一个分区! 文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到 inode 中,至于实际数据则放置到 data ...
- 鸟哥私房菜基础篇:Linux 磁碟与档案系统管理习题
猫宁!!! 参考链接:http://linux.vbird.org/linux_basic/0230filesystem.php 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-我们常常说,开机的时候 ...
随机推荐
- Day1 - 认识大数据& 企业需求分析 & 北风网简介
上午: 介绍: 海量的乱七八糟的数据中快速的计算出某些有用的信息 刑侦视频追踪 云栖大会 大数据分析/挖掘 ==> python <== 重点关注 大数据运维 ==> 运服务 ...
- ArcGis 创建Annotation注记要素类、添加注记要素 并加载到Activeview AO C#
AO中一般有两种方式存储图面注记元素,一种使用TextElement,它是文档级的元素,编辑后要通过文档(mxd)保存:另一种是使用Annotation要素类,它是一个独立的要素类(featurecl ...
- Java出现OutOf MemoryError(OOM 错误)的原因有哪些?出现OOM错误后,怎么解决?
OutOf MemoryError这种错误可以细分为多种不同的错误,每种错误都有自身的原因和解决办法,如下所示: java.lang.OutOfMemoryError: Java heap space ...
- hdu 5791 思维dp
题目描述: 求序列A,B的公共子序列个数: 基本思路: 想到了dp,选的状态也对,但是就是就是写不出状态转移方程,然后他们都出了,到最后我还是没出,很难受,然后主要是没有仔细考虑dp[i][j],dp ...
- Python的历史及介绍
Python的诞生 Python的创始人吉多·范罗苏姆(Guido van Rossum),在1989年12月的圣诞节期间,为了打发时间,决定开发一种新的脚本解释程序,作为ABC语言的继承. 现在,p ...
- spring在注解标注的方法上加切面
之前以为只能在方法签名上加切面,今天发现注解上也能加切面 1.自定义一个注解(任意注解都可以,不一定是自定义的) @Target({ElementType.METHOD}) @Retention(Re ...
- bootstrap 标签页的使用(tab)
<!DOCTYPE html> <html> <head> <title></title> <link rel="style ...
- C存储类
C 存储类 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期.这些说明符放置在它们所修饰的类型之前.下面列出 C 程序中可用的存储类: auto register static extern ...
- Mac版本navicat premium彻底卸载的终端命令
Mac版本navicat premium彻底卸载的终端命令: sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/v ...
- [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要 玩家每天按时上线,完成打卡任务.这个游戏的地图 ...