文件系统

创建文件系统

 FHS:文件系统层及标准 /bin /dev /etc

 权限:文件系统的安全特性

 文件的命名规则:最大255个字符不能包括特殊字符 区分大小写

为什么创建文件系统?

 平面分类管理

  需要遍历

 空间分类管理

  先分大类

 几次有限但有效的查找即可

创建文件系统实际就是给分区进行存储空间的逻辑编址

格式化:

 低级格式化

  物理层面上完成格式化,在磁盘设备出厂时通过低级格式化来创建磁道;主要作用是用来划分磁道

 高级格式化

  分区之后进行的,主要作用是用来创建文件系统,为分区构建逻辑编址单元,称呼簇,块

  无论是簇还是快都是讲一个或多个扇区组织在一起,共同完成数据存储;

  簇:512b 1024 2048   windows

  块:1024 2048 4096

 注意:

 1.一个块只能放置一个文件的内容,一个文件可以占用多个块

 2.如果在某个分区中,即将创建大量的小文件,把块划分的小一些;反之块就daxie

 3.如果分区空间比较大,块也应该大一些

在一个分区中创建文件系统

 首先将分区划分成大小相等的若干块,

  元数据块:存储文件的属性

   元数据-indoe(index node)

  文件的属性包括文件的大小 文件的权限 文件的所有者 文件的时间戳 数据块指针

  存放元数据的固定存储空间称为iNode

  每个iNode都有对应的iNode编号

  数据块:存放文件中所包含的流式数据 

特殊文件:

 设备文件:block special 

  仅仅是将元数据中的数据块指针换成了设备号

 符号链接文件:symbolic link

  仅仅是将元数据中数据块指针换成了另一个文件的访问路径;

这类文件只占据元数据区域,没有数据块的占用;

随着磁盘空间越来越大,划分的块的数量也越来越多,管理不方便,于是划分块组可以解决

块组:

 每个块组中有独立的元数据块和数据块

 存放数据的时候一块组内的数据块优先选择,如果块组内的数据块不够,可以通过存储策略来请多个块组系统存储;

超级块:

 主要定义了有多少个块组以及每个块组的边界

为了防止超级块发生故障导致整个文件系统崩溃,对超级块进行冗余备份

日志块:

 对于数据的写入操作做记录的块 防止数据不一致

 数据不一致通常都是由不洁关机,不洁断电导致

一个完整的文件系统

 超级块,inode ,inode bitmap ,block bitmap ,data block,journal block  

Linux支持的文件系统

 位于内核空间的文件系统驱动

 1.内核一部分

 2.内核模块

 位于用户空间中的文件系统管理应用程序

 管理命令

Linux自己的文件系统

 ext ext2 ext3 ext4(最大分区50TB,可以做根分区,也可以做启动分区)

 xfs(目前为止企业级的64位文件系统,最大分区500TB,可以做根和启动分区)

 reiserfs(良好的反删除功能)

 btrfs(平衡术文件系统 技术预览版)

光盘文件系统:iso9660 

网络文件系统:NFS CIFS

集群文件系统:gfs2 ocfs2

内核级的分布式文件系统:ceph

伪文件系统:proc sysfs tmpfs hugepagefs

Windows的文件系统:vfat ntfs

Unix的文件系统:ufs ffs JFS

交换分区文件系统:swap

用户空间中的分布式文件系统:mogilefs,moosefs,glusterfs  

创建管理文件系统:

 mkfs

  mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.xfs ....

   mkfs - build a Linux filesystem

   mkfs [options] [-t type] [fs-options] device [size]

 mkfs -t ext2 /dev/sdb1

 注意:

 1.不要使用磁盘设备名称和扩展分区设备名称作为mkfs命令的参数,如果使用 磁盘设备作为mkfs的参数,所有的分区都将被删除,如果使用扩展分区作为mkfs的参数,那么所有的逻辑分区都被删除

 2.能够作为mkfs命令参数的设备,是主分区设备和逻辑分区设备

mke2fs只能用来创建ext系列文件系统

mke2fs - create an ext2/ext3/ext4 filesystem

[ -b block-size ]:在创建文件系统时,调整块的大小;

-i bytes-per-inode:指明inode与字节的比率,即:多少个字节可以建一个inode默认的数值为16384

-j:创建有日志功能的文件系统就是ext3

-N:直接指明要给此文件系统创建的inode的数量

-m:指定为超级用户保留的磁盘空间的百分比默认值是5

-t:指定文件系统类型,默认是ext2

-O [^]feature[,...]:关闭或开启文件系统的特性

-L:为文件系统指定卷标                                                      blkid

如果只是修改ext系列文件系统的卷标,可以使用e2label

注意:如果不加卷标,表示查看指定设备的卷标;如果添加了卷标信息, 表示修改指定设备的卷标

如果想要修改ext系列文件系统的属性,可以使用tune2fs

文件系统检测和修复工具

 fsck

  fsck.ext2 fsck.ext3 fsck.ext4 fsck.xfs ....

-t:指定要检测的文件系统类型

-a:无需交互,自动修复所有问题

-r:交互式修复问题

ext系列文件系统专门的检测修复工具

 e2fsck

 -y:在交互过程中的所有的问题都以“yes”回答

 -f:强制检测修复;即使文件系统clean状态也可以修复

 blkid:

  -L: 根据卷标进行查找

  -U:根据UUID进行查找

 findfs:

  findfs LABEL=

  findfs UUID=

文件系统属性查看工具

 dumpe2fs

文件系统的属性调整工具

 tune2fs

  tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

调整那些在ext2,3,4文件系统上可以修改的参数

-j:将ext2文件系统修改为ext3

-m:修改为超级用户预留的磁盘空间百分比

-o:修改文件系统默认的挂载选项

-r:修改为超级用户预留的磁盘空间的块的数量

-L: 修改文件系统的卷标

-O: 修改文件系统的特性将其关闭或者启用

-l:显示超级块的内容  相当于 dumpe2fs -h

创建swap文件系统

 mkswap

 mkswap - set up a Linux swap area

 -L:设置交互分区的卷标

 -f:强制执行

使用文件系统-挂载

 FHS

 根文件系统之外的其他文件系统如果想要被访问,都必须通过某种方式关联到根文件系统上,具体做法就是把其他文件系统装载到根文件系统中的某个目录之中,这个过程称为挂载,用于关联其他文件系统的那个目录,称为挂载点

 挂载点:其他文件系统的访问入口

  要求:1.作为挂载点的目录必须事先存在

  2.作为挂载点的目录应该是没有被使用或不能被其他进程使用的目录

  3.作为挂载点的目录一旦挂载文件系统,期内原有的文件将被隐藏

完成挂载操作使用mount命令

 mount

 mount - mount a filesystem

 mount [-fnrsvw] [-t vfstype] [-o options] device dir

 -r:以只读的方式挂载目标文件系统;光盘

 -w:以读写的方式挂载目标文件系统

 -n:默认情况下,设备挂载或卸载的操作会同步更新到/etc/mtab中,如果在挂载时使用了-n选项,则表示我们要禁用此特性,即便挂载成功,也不会更新到/etc/mtab中

 -t vsftype:指明要挂载的设备上创建的文件系统类型,如果省略该选项,mount命令会通过blkid来判断要挂载的目标设备的文件系统类型;

 -L:挂载文件系统时,使用卷标代替设备名称

 -U:挂载文件系统时,使用UUID来代替设备名称        

 -a:按照/etc/fstab文件中填写的设备进行挂载

-o option:

  sync/nosync:同步/异步操作

  atime/noatime:文件或目录被读取访问时,是否更新访问时间戳;

  diratime/nodiratime:目录被读取访问时,是否更新访问时间戳;

  ro/rw:是以只读/读写的方式挂载文件系统;

  dev/nodev:在此文件系统中是否允许创建设备文件;

  exec/noexec:在此文件系统中是否允许运行程序文件;

  auto/noauto:是否允许使用mount -a方式挂载/etc/fstab中的文件系统;

  user/nouser:是否允许普通用户挂载此文件系统;

  suid/nosuid:是否允许程序文件上的SUID和SGID特殊权限生效;

  relatime/norelatime:是否参考inode访问时间来修改其修改时间和改变时间

  remount:不经卸载实现重新挂载,可以应用新的挂载选项;

  acl:可以使文件系统支持facl功能;

  defaults:默认选项;包括:rw, suid, dev, exec, auto, nouser, async, and relatime

 loop:使用环回设备;将镜像文件挂载到挂载点;defaults,ro,nosuid

  -B, --bind:将某个目录绑定至另一个目录;

   mount --bind|-B 源目录 目标目录

卸载文件系统:

  umount mount_point|device

挂载光盘:

  1.保证光盘镜像文件放入虚拟机光驱

  2.保证光驱处于"已连接"状态

  3.创建光盘挂载点,mount -r /dev/sr0 mount_point

挂载U盘:

  需要事先让系统识别U盘设备,然后根据设备名进行挂载;/dev/sdc1

挂载交互分区:

  swapon, swapoff

  swapon, swapoff - enable/disable devices and files for paging and swapping

  -a:自动挂载存储于/etc/fstab文件中的交互分区设备;

  df

   -h -T -P 

  free

   -k -m -g

/etc/fstab文件的格式:

 共6个字段,使用空白字符分隔:

  1.要挂载的设备

   设备文件名

   LABEL

   UUID

   伪文件系统

  2.挂载点

   swap设备无需挂载点,指定swap即可;

  3.文件系统类型

  4.挂载选项:defaults

  5.转储频率:

   使用dump命令备份分区的频率

   0:表示不备份

   1:每天备份一次

   2:每隔一天备份一次

  6.自检次序

   0:不自检

   1:优先自检,通常只设置在根文件系统上;

   2:次级自检

   ...

   9:最低优先级自检



      本文转自Vincent一马 51CTO博客,原文链接:http://blog.51cto.com/mazhenbo/1920914,如需转载请自行联系原作者





上一篇:本地编译Hadoop2.8.0源码总结和问题解决(转自:http://blog.csdn.net/young_kim1/article/details/50324345)


下一篇:linux文件系统简析