Linux学习笔记(三)Linux磁盘与文件系统管理

来源:互联网 发布:javascript做网站 编辑:程序博客网 时间:2024/05/16 15:05

http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php


1.目前Linux主要使用的文件系统为Ext4/Ext3,该文件系统内的信息主要有:

a.superblock:记录此filesystem的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。

b.inode:记录文件的属性,一个文件占用一个inode,同时记录此文件所在的block号码;

c.block:世纪记录文件的内容,若文件太大时,会占用多个block。

2.索引式文件系统(indexed allocation)与FAT文件系统对比:

inode/block 数据存取示意图                                       FAT文件系统数据存取示意图

inode/block 数据存取示意图                                                                                                                                                FAT文件系统数据存取示意图

在索引式文件系统下,操作系统可以通过inode直接获取到四个block的位置,故而可以排列磁盘的阅读顺序,

而在FAT文件系统中只能依次的读取完一个block后才能下一个block的位置,当block过于分散时读取效率会大大降低,因此需要“磁盘整理”。

3.inode(128bytes),里面有12个直接指向block号码的对照,这12笔记录可以直接取得block号码,也可以再拿一个block来记录block号码,如果文件太大时,就会使用间接的block来记录编号。如果文间持续增大,则会使用二层间接和三层间接。故文件系统支持的最大文件大小为(1.block=1k的情况下,2.每笔block号码的记录会花去4bytes):12*1K+256*1K+256*256*1K+256*256*256*1K=16G.

4.日志文件系统(Journaling filesystem)

一般来说,我们将 inode table 与 data block 称为数据存放区域,至于其他例如 superblock、block bitmap 与 inode bitmap 等区段就被称为 metadata (中介数据) 啰,因为superblock, inode bitmap 及 block bitmap的数据是经常变动的,每次新增、移除、编辑时都可能会影响到这三个部分的数据,因此被称为中介数据。

a.预备:当系统要开始写入一个文件时,会先在日志记录区块中记录某个文件准备要写入的信息。

b,实际写入:开始写入文件的权限和数据;开始升级metadata的数据;

c.结束;完成数据和metadata的升级后,在日志记录区块中完成文件的记录。

在日志文件系统中不需要每次去对比真实的数据,只需要检查日志即可处理文件系统不一致的问题。

5.df主要查询superblock的内容,故而速度很快

[root@www ~]# df [-ahikHTm] [目录或文件名]选项与参数:-a  :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k  :以 KBytes 的容量显示各文件系统;-m  :以 MBytes 的容量显示各文件系统;-h  :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H  :以 M=1000K 取代 M=1024K 的进位方式;-T  :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-i  :不用硬盘容量,而以 inode 的数量来显示

6.du会直接到文件系统内去搜寻所有的文件数据,速度较慢

[root@www ~]# du [-ahskm] 文件或目录名称选项与参数:-a  :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。-h  :以人们较易读的容量格式 (G/M) 显示;-s  :列出总量而已,而不列出每个各别的目录占用容量;-S  :不包括子目录下的总计,与 -s 有点差别。-k  :以 KBytes 列出容量显示;-m  :以 MBytes 列出容量显示;
7.ln,硬链接与软链接

  • 每个文件都会占用一个 inode ,文件内容由 inode 的记录来指向;
  • 想要读取该文件,必须要经过目录记录的文件名来指向到正确的 inode 号码才能读取。

实体链接的文件读取示意图

硬链接:添加一个文档名指向同一个inode,一般来说,使用 hard link 配置链接文件时,磁盘的空间与 inode 的数目都不会改变!我们还是由上图来看,由图中可以知道, hard link 只是在某个目录下的 block 多写入一个关连数据而已,既不会添加 inode 也不会耗用 block 数量。

因为硬链接最后是多个文档名指向同一个inode,故而只能在同一个文件系统之内才能链接。且不能链接目录。

符号链接的文件读取示意图

软链接:类似与windows下的快捷方式,原文件删除则链接无效。

[root@www ~]# ln [-sf] 来源文件 目标文件选项与参数:-s  :如果不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link-f  :如果 目标文件 存在时,就主动的将目标文件直接移除后再创建!

8.磁盘的分割、格式化及挂载

磁盘分区: fdisk

[root@www ~]# fdisk [-l] 装置名称选项与参数:-l  :输出后面接的装置所有的 partition 内容。若仅有 fdisk -l 时,      则系统将会把整个系统内能够搜寻到的装置的 partition 均列出来。

磁盘格式化:mkfs

[root@www ~]# mkfs [-t 文件系统格式] 装置文件名选项与参数:-t  :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

挂在/卸载:mount/umount

[root@www ~]# mount -a[root@www ~]# mount [-l][root@www ~]# mount [-t 文件系统] [-L Label名] [-o 额外选项] \ [-n]  装置文件名  挂载点选项与参数:-a  :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来-l  :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称!-t  :与 mkfs 的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。      常见的 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式),      nfs, cifs, smbfs(此三种为网络文件系统类型)-n  :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序      的运行。但在某些情况下(例如单人维护模式)为了避免问题,会刻意不写入。      此时就得要使用这个 -n 的选项了。-L  :系统除了利用装置文件名 (例如 /dev/hdc6) 之外,还可以利用文件系统的标头名称      (Label)来进行挂载。最好为你的文件系统取一个独一无二的名称吧!-o  :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:      ro, rw:       挂载文件系统成为只读(ro) 或可擦写(rw)      async, sync:  此文件系统是否使用同步写入 (sync) 或异步 (async) 的                    内存机制,请参考文件系统运行方式。默认为 async。      auto, noauto: 允许此 partition 被以 mount -a 自动挂载(auto)      dev, nodev:   是否允许此 partition 上,可创建装置文件? dev 为可允许      suid, nosuid: 是否允许此 partition 含有 suid/sgid 的文件格式?      exec, noexec: 是否允许此 partition 上拥有可运行 binary 文件?      user, nouser: 是否允许此 partition 让任何使用者运行 mount ?一般来说,                    mount 仅有 root 可以进行,但下达 user 参数,则可让                    一般 user 也能够对此 partition 进行 mount 。      defaults:     默认值为:rw, suid, dev, exec, auto, nouser, and async      remount:      重新挂载,这在系统出错,或重新升级参数时,很有用!

[root@www ~]# umount [-fn] 装置文件名或挂载点选项与参数:-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;-n :不升级 /etc/mtab 情况下卸除。

0 0
原创粉丝点击