各种接口磁盘在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密码。