发布时间:2015-05-27 19:10:04作者:知识屋
格式化
因为每一种文件系统设置所设定的文件属性/权限并不相同,为了存放这些数据,就需要将分隔槽格式化,比如在linux上面文件系统里面就有inode, block, superBlock,这些就是为文件系统而存在的,所以在格式化的时候,就需要在磁盘里面加上标签,标号神马的!
文件系统
在没有LVM和磁盘阵列技术之前,一个分隔槽就代表了一个文件系统,现在而是将可以被挂在的数据成为文件系统而不是一个分隔槽
三个文件系统里面的基本数据
superBlock:记录一个fileSystem的inode/block总量,使用量,剩余量,一级文件系统格式和相关信息 inode:用来存放文件的相关权限信息,同时记录真正数据所在的block号码 block:实际记录文档内容的地方
因为在linux上面ext3/4这种特殊的存储形式,不容易产生碎片,所以linux上面一般不需要碎片整理
区块群组
block区块是记录档案的实际内容的,所以在规划好以后,就不能再改变了,如果一个block区块过于庞大的话,就会造成数据读取的不高效
所以linux文件系统就采用了区块群组的方式,每一个区块群组都有自己独立的inode,block,superBlock
data block
- 每一个区块群组的block大小和数量在第一次格式化时就已经确定了,除非重新格式化
- 每一个block只能放置一个档案!
inode table
inode如同data block一样,一旦格式化,就无法在改变数量了。
还有下面的几个特性:
每一个inode的大小固定为128B 每一个档案都只占用一个inode而已 因此每一个文件系统可以创建的文件数量与inode数量有关 在读取一个文件的数据时,首先inode权限校验用户权限再决定读不读去block信息
有些时候因为文件的数据过多,需要记录多个多个block信息,inode却只有128B,那么inode里面就有12个直接,一个间接,一个双间接 , 一个三间接,这样就可以利用block数据来记录block号码了!
区块群组
每一个文件系统的block数目在格式化的时候就已经确定了,但是有些时候因为文件系统过于庞大,就将一个文件系统里面的block分为一个一个的组,就是区块群租,就比如Group1 , Group2
inode,superBlock, inode bitmap , block bitmap这些都是特殊的block,将block特殊化以后就用来存储一些特殊的数据,所以一般文件的数据内容都是放在block里面的!
用dumpe2fs可以看到:
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
Checksum 0xec2c, unused inodes 0
主 superblock at 0, Group descriptors at 1-1
保留的GDT块位于 2-406
Block bitmap at 407 (+407), Inode bitmap at 423 (+423)
Inode表位于 439-948 (+439)
22643 free blocks, 0 free inodes, 1138 directories
可用块数: 9881, 10126-32767
可用inode数:
这里面的inode , spuerBlock等等内容都是放于block块里面的
目录与inode, block之间的关系
一个目录与一个inode关联和至少一个block关联
inode里面保存权限信息以及分配的block块号 分配的block里面则保存文件名字以及文件名字对应的inode(因为通过inode就可以找找文件了)
inode number | filename |
---|---|
123 | file1 |
456 | file2 |
789 | file3 |
block里面就是按照这样的形式保存目录下文件的信息
目录的大小为啥都是一个固定的倍数
因为目录下inode占用128B,而block占用4k,所以基本都是4096的倍数!
挂载
挂载点一定是目录,该目录是进入文件系统地入口,因为并不是所有的文件系统都可以使用,必须要在挂在以后才可以使用!
/文件系统的inode标号
ls -i -d / /. /..
我们得到结果:
2 drwxr-xr-x 23 root root 4096 4月 12 21:43 //
2 drwxr-xr-x 23 root root 4096 4月 12 21:43 /./
2 drwxr-xr-x 23 root root 4096 4月 12 21:43 /../
linux VFS(linux virtual file system)
因为linux可以挂在多重类型的file system,各种文件系统之间有较大差别,我么通过virtual file system 来将底层的各种类型的文件系统抽象成无差别的,具体的识别区分工作就交给VFS来完成
df(列出磁盘整体使用量)
df -akmThHi
- -a列出所有的文件系统
- -k 以kb形式表现
- -m 以mb的形式表现
- -h human可读的形式展现出来
- -H human可读的形式展现出来,只是将1000作为之间的缩放比例
- -T 就着列出文件系统的了类型
- -i 列出inode的使用情况
df 命令是通过读取一个文件系统的里面的superBlock来获取的,速度非常的快速,所以df命令后面接上的必须是一个文件系统,一个没有被文件系统挂在的目录是不可以的!
du评估文件系统的磁盘使用量
du -asShkm dirName
- -a 所有的文件条目
- -s 列出总和
- -S列出除了当前目录,不包括子目录
- -h human可以读的
- -k kb show
- -m -mb show
注意:直接du的话是只列出当前目录下面的目录大小,该目录下的文件并不列出,所以列出的容量和当前./容量是不相同的,加上-a选项就可以啦
硬链接(实体连接)
硬链接可以说是只是在目录对应的block下面增加一个条目,里面保存了文件名字和文件对应的inode号码:
filename | inodeNumber |
---|---|
filename1 | indoeNumberA |
filename2 | inodeNumberA |
其中filename1好filename2都是对应同一个inodeNumber,所以file1和file2都是只占用一个文件的空间大小的,实际上保存的东西只是文件名字和inode,所以在新建一个硬链接的时候一般不增加内存大小,除非对应的目录的block满了需要申请一块新的内存。
主要存在一个名字指向inode,那么这个inode指向的资源就不会被释放,意思就是只要存在一个硬链接,那么文件就是一直存在
硬链接的限制
不能跨越文件系统:因为硬链接的基础是inode,而每一个文件系统的inode都是彼此独立的,所以不能跨越文件系统 不能硬链接目录:因为硬链接的时候需要同时链接目录下面的所有文件,为了降低这个操作的复杂度,于是不允许目录的实体连接
符号链接(软链接)
软链接就好比是一个快捷方式。创建软链接就像是新建一个文件,将被链接的完全路径写入到文件里面,一旦对软链接操作的时候,那么就会读取对应的被链接文件的名字,再开始操作!一旦软链接链接的文件被删除,软链接虽然还存在,但是已经失效了
软链接是需要占用inode和block的,因为是一个新的文件,而不是简单的在目录里面添加条项
格式化
在我们用fdisk穿件一个新的分割槽以后,如果我们要使用这个分隔槽,那么就需要格式化这个分割槽
格式化命令:
- mkfs -t fileSystemType device
- mke2fs [-b size][-i size][-L ][-cj]
文件系统的检查与修复
在系统断电等等情况下,都有可能造成文件系统的损坏,那么我们就要对文件系统进行修复,现在的指令一般有fsck和badblocks
fsck注意事项
fsck只有在系统发生重大事故的时候才会使用,而且在文件系统挂载的时候切记不可进行fsck检查,否则将会损坏文件系统!!!!要检查的文件系统一定要在umount以后才可fsck
命令如:fsck -C -f -t ext4 /dev/sdb1这里的-C选项就是用来显示当前检查的进度
lost+found文件夹
在一个文件系统里面一般会有一个叫做lost+found的文件夹,这个文件夹一般都是在fsck以后存放有问题数据的地方的,当你 fsck以后,这个文件见就会自动消失
单人维护模式
一般在单人维护模式下面,根文件系统的权限为只读的,这个时候我们需要将根文件系统挂在为可读写的mount -o remount,ew,auto /
mount命令
-a选项:将/etc/fatab全部没有挂在的东西挂在上来
-l选项:显现在已经挂在的文件系统有哪些,-l会显式对的Label
-t选项:指定要挂载文件系统的类型
-n选项:在挂载时候不写入到文件/etc/mtab里面去,比如在单人模式下面就特别有用
-o选项:这里选项是很强大的:
arg1 | arg2 | descibe |
---|---|---|
ro | rw | 控制文件系统读写 |
async | sync | 采用同步写入还是异步写入的机制 |
auto | noauto | 允许这文件系统以mount -a的形式挂载 |
dev | nodev | 是否允许在这个文件系统上建立装置档案 |
suid | nosuid | 是否允许在这个文件系统上面含有suid/sgid的文件 |
exec | noexe | 是否允许在文件系统下面有可执行文件 |
default | 默认标配 | |
remount | 重新挂载文件系统 |
mount –bind
将某个目录挂在到某个目录下面就可以使用
mkdir /tmp/tempHome
mount --bind /home /tmp/tempHome
这两个目录有相同的inode,有点类似于硬链接
文件系统还可以通过相应的label来挂载
我们在格式化文件系统的时候可以指定一个label,比如命令:mke2fs -b -i -j -L “qeesung_label”
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能