文件系统知一二

文件系统知一二

What?文件系统是什么?

    我们经常说文件系统,那么文件系统是什么东西呢?

   计算机的文件系统是一种存储和组织计算机数据的组织结构。

常见的文件系统有哪些?

           Linux文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,swap

     Windows文件系统:fat32,ntfs

     Unix文件系统:FFS,UFS,JFS2

     网络文件系统:NFS,CIFS

     集群文件系统:GFS2,OCFS2

     分布式文件系统:ceph,

              mosefs, mogilefs, GlusterFS, Lustre

根据其是否支持“journal(日志)”功能分为:

           日志型文件系统:ext3,ext4,xfs……

      非日志型文件系统:ext2,vfat

文件系统的组成部分

             内核中的模块:ext4,xfs,vfat,……

      用户空间的管理工具:mkfs.ext4,mkefs.xfs,mkfs.vfat

Linux上常见的文件系统

1)  ext系列的ext[2-4],ext2系统没有日志功能,ext[3-4]文件系统有日志功能。

2)  XFS文件系统,一种性能强大的日志文件系统,CentOS 7和RHEL 7在安装时默认使用XFS文件系统

3)  btrfs文件系统,也是一个日志型文件系统,对大文件和小文件有很高的处理效率。

4)  JFS(Journaling File System),由IBM创建的一种日志型文件系统

5)  Swap,交换分区,当内存不足时,可以将一部分硬盘空间虚拟成内存使用,解决内存容量不足的问题,但是速度比较慢。

Why?为什么需要文件系统?文件系统的存在意义是什么?

         文件系统使得对硬盘数据的访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。 在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件系统中。

   早期没有文件系统的时期,计算机用户在使用计算机时,需要人工的去查找磁盘关系表去查看要找的数据保存在硬盘上的地址以及要通过磁盘关系表了解哪些地址没有被使用,以便对磁盘进行正确的读写操作。

   目前的计算机存储,查找数据地址这些事情都是由文件系统来完成,用户只需要知道存储的数据文件名是什么在哪个目录下。  

   任何事物的发展都是从麻烦到简单,用户体验也都是越来越完善。

      文件系统的存在意义也就是为了提高的用户对磁盘的使用效率,用户体验更加友好。

When?什么时候会用到文件系统?

         当我们创建一块儿新分区的时候,需要对其进行格式化指定的文件系统,否则就无法对这块儿分区进行读写操作。

Where?在哪儿使用文件系统

         新建一块儿分区的时候,这时候我我们就要对其进行格式化,在命令行终端中使用指定的文件系统的管理命令即可完成。

How?文件系统的使用方法?

      创建文件系统:

         mkfs命令:

1)          # mkfs.FS_TYPE /dev/DEVICE

FS_TYPE(文件系统类型):

                    ext4

                    xfs

                    btrfs

                    vfat

2)          # mkfs –t FS_TYPE /dev/DEVICE

-L ‘LABEL’:设定卷标

                        [root@Daniel ~]# mkfs -t btrfs -L 'mydata' -f /dev/sda6                                          #   -f 表示强制,因为之前/dev/sda6的文件系统为ext3
                        SMALL VOLUME: forcing mixed metadata/data groups
                        btrfs-progs v3.19.1
                        See http://btrfs.wiki.kernel.org for more information.
                        
                        Turning ON incompat feature 'mixed-bg': mixed data and metadata block groups
                        Turning ON incompat feature 'extref': increased hardlink limit per file to 65536
                        Turning ON incompat feature 'skinny-metadata': reduced-size metadata extent refs
                        Created a data/metadata chunk of size 8388608
                        fs created label mydata on /dev/sda6
                        	nodesize 4096 leafsize 4096 sectorsize 4096 size 500.00MiB
                        [root@Daniel ~]# blikd /dev/sda6
                        bash: blikd: 未找到命令...
                        相似命令是: 'blkid'
                        [root@Daniel ~]# blkid /dev/sda6
                        /dev/sda6: LABEL="mydata" UUID="a66d6fcb-6930-4506-8afa-9bcf6abe49bd" UUID_SUB="0a0420dd-be44-486d-9d0b-7055dcf24c6b" TYPE="btrfs"

     mke2fs:ext系列文件系统专用管理工具

                 -t {ext2|ext3|ext4}

        -b {1024|2048|4096}

        -L 'LABEL'

        -j: 相当于 -t ext3

           mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

        -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;

        -N #:为数据空间创建个多少个inode;

        -m #: 为管理人员预留的空间占据的百分比;

        -O FEATURE[,…]:启用指定特性

           -O ^FEATURE:关闭指定特性

                [root@Daniel ~]# mke2fs -t ext3 /dev/sda7                
                mke2fs 1.42.9 (28-Dec-2013)
                文件系统标签=
                OS type: Linux
                块大小=1024 (log=0)
                分块大小=1024 (log=0)
                Stride=0 blocks, Stripe width=0 blocks
                128016 inodes, 512000 blocks
                25600 blocks (5.00%) reserved for the super user
                第一个数据块=1
                Maximum filesystem blocks=67633152
                63 block groups
                8192 blocks per group, 8192 fragments per group
                2032 inodes per group
                Superblock backups stored on blocks: 
                	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
                
                Allocating group tables: 完成                            
                正在写入inode表: 完成                            
                Creating journal (8192 blocks): 完成
                Writing superblocks and filesystem accounting information: 完成
                [root@Daniel ~]# blkid /dev/sda7
                /dev/sda7: UUID="7c80361d-517b-4b29-aa27-b2fa8b1a8263" SEC_TYPE="ext2" TYPE="ext3"

     mkswap:创建交换分区

               mkswap [options] device

                    -c, check               创建交换区前检查坏块

                    -f, force               允许交换区大于设备大小

                    -p, pagesize SIZE       指定页大小为 SIZE 字节

                    -L, label LABEL         指定标签为 LABEL

                    -v, swapversion NUM     指定交换空间版本号为 NUM

                    -U, uuid UUID           指定要使用的 UUID

                    -V, version             输出版本信息并退出

                    -h, help                显示此帮助并退出

        前提:调整其分区的ID为82;

      其他常用工具:

           blkid:块设备属性信息查看

                       blkid [OPTION]… [DEVICE]

             -U UUID: 根据指定的UUID来查找对应的设备

             -L LABEL:根据指定的LABEL来查找对应的设备

                        [root@Daniel ~]# blkid /dev/sda5
                        /dev/sda5: UUID="1ffe8df2-9df0-4260-a9e5-c59aaf6b5215" TYPE="xfs" 
                        [root@Daniel ~]# blkid /dev/sda6
                        /dev/sda6: UUID="9583a476-da62-4836-aee5-8847d7b79381" UUID_SUB="4a86922c-9293-4b4a-8958-f961f7c9b96c" TYPE="btrfs" 
                        [root@Daniel ~]# blkid /dev/sda7
                        /dev/sda7: UUID="7c80361d-517b-4b29-aa27-b2fa8b1a8263" SEC_TYPE="ext2" TYPE="ext3" 
                        [root@Daniel ~]# blkid /dev/sda8
                        /dev/sda8: LABEL="mydata" UUID="81a0c29c-8f66-407e-a338-dd1468407100" TYPE="ext4" 
                        [root@Daniel ~]# blkid -L 'mydata'
                        /dev/sda8

     e2lable:管理ext系列文件系统的LABEL

                             # e2label DEVICE [LABEL]

                        [root@Daniel ~]# e2label /dev/sda8 'TEST'
                        [root@Daniel ~]# blkid /dev/sda8
                        /dev/sda8: LABEL="TEST" UUID="81a0c29c-8f66-407e-a338-dd1468407100" TYPE="ext4"

     tune2fs:重新设定ext系列文件系统可调整参数的值

                 -l:查看指定文件系统超级块信息;super block

        -L 'LABEL':修改卷标

        -m #:修预留给管理员的空间百分比

        -j: 将ext2升级为ext3

        -O: 文件系统属性启用或禁用

        -o: 调整文件系统的默认挂载选项

        -U UUID: 修改UUID号;

     dumpe2fs:查看超级块信息

                            -h:查看超级块信息

      文件系统检测:

           fack: File System Check

                            fsck.FS_TYPE

        fsck -t FS_TYPE

           -a: 自动修复错误

           -r: 交互式修复错误

           Note: FS_TYPE一定要与分区上已经文件类型相同;

           e2fsck:ext系列文件系统专用的检测修复工具

                        -y:自动回答为yes;

           -f:强制修复;

原创文章,作者:Daniel-W,如若转载,请注明出处:http://www.178linux.com/12510

(0)
Daniel-WDaniel-W
上一篇 2016-03-09
下一篇 2016-03-09

相关推荐

  • python之psutil模块

    python 安装psutil 来实现获取系统信息  # yum -y install python*pip # yum -y groupinstall “Development Tools # yum -y install python34-devel.x86_64 # pip3 install –upgrade pip # pip3 inst…

    Linux干货 2017-03-08
  • 马哥教育网络班20期第2周课程练习

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关  示例演示。 linux上文件管理命令包括: ls,cat,pwd,cp,rm,cd,head,tail,more,less,cut,which,whereis,find,mkdir,mv; 1、ls 命令;显示文件/文件夹清单   例如:如下显示列出根目录下的文件及目录…

    Linux干货 2016-06-23
  • N22-第六周作业

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s@[[:space:]]\+@#&@g    2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; :%s#…

    Linux干货 2016-09-26
  • Linux命令执行

    Linux命令 Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和外部命令。 命令格式 COMMAND [OPTIONS…] [ARGU…

    Linux干货 2017-07-15
  • 常用RAID级别介绍

    RAID是什么         磁盘阵列(Redundant Arrays of Independent Disks,RAID),磁盘阵列是将多个价格便宜的磁盘按照一定的组合方式组成具有高容量的磁盘组,按照不同的组合方式可以达到不同的效果,如:可以提升磁盘的存取效率,可提高磁盘的…

    Linux干货 2016-02-14
  • 运维学习笔记-Puppet之Hiera初探

    为什么使用Hiera? Puppet中的manifest同时包含静态的代码(判断/循环逻辑,依赖关系,类定义,资源类型定义等等)和动态的数据(类声明时的参数值和资源声明时的属性值)。说代码是静态的是因为如果在设计阶段考虑比较全面,代码写成之后是很少变化的。但是数据要根据具体情况赋予不同的值。如果manifest设计的不是很灵活,比如某些数据被固化(hardc…

    Linux干货 2016-07-07

评论列表(1条)

  • stanley
    stanley 2016-03-09 09:59

    为写标签的细节点赞