磁盘管理之文件系统

                         文件系统

   

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。

    

linux常用的文件系统有:     

     ext2 vfat(fat文件系统) 非日志文件系统

    ext3, ext4,(extended filesystem) :日志文件系统

    xfs(SGI)高性能的日志文件系统 :centos 7 默认文件系统

    btrfs(Oracle) reiserfs, jfs(AIX), swap

    swap: 交换分区

    iso9660:光盘

    Windows:fat32(在linux称为vfat), ntfs 

    Unix: FFS(fast), UFS(unix), JFS2


    网络文件系统:NFS, CIFS

    集群文件系统:GFS2, OCFS2(oracle)

    分布式文件系统:ceph, moosefs, mogilefs, glusterfs, Lustre

    RAW:未经处理或者未经格式化产生的文件系统

  

  [root@Cloud ~]#cat /proc/filesystems  #查看lnux支持的文件系统
    nodevsysfs
    nodevrootfs
    nodevbdev
    nodevproc
    nodevcgroup
    nodevcpuset
    nodevtmpfs
    nodevdevtmpfs
    nodevbinfmt_misc
    nodevdebugfs
    nodevsecurityfs
    nodevsockfs
    nodevusbfs
    nodevpipefs
    nodevanon_inodefs
    nodevinotifyfs
    nodevdevpts
    nodevramfs
    nodevhugetlbfs
    iso9660
    nodevpstore
    nodevmqueue
    nodevdrm
    ext4
    nodevautofs
    ext2
    vfat


VFS (virtual File System):虚拟文件系统 

VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在古老的DOS操作系统中,要访问本地文件系统之外的文件系统需要使用特殊的工具才能进行。而在Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的差异性。



创建文件系统(格式化)

mkfs命令:

(1) # mkfs.FS_TYPE/dev/DEVICE #可以使用mkfs.ext2|ext3|ext4的命令创建文件系统

ext4 #能创建文件系统

xfs #能创建文件系统

btrfs#能创建文件系统

vfat#能创建文件系统

(2) # mkfs-t FS_TYPE /dev/DEVICE  #-t指定文件系统类型 支持(ext类型文件系统)

-L 'LABEL': #设定卷标 

[root@Cloud ~]#lsblk #分区列表
NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                  11:0    1  3.7G  0 rom  /media
sda                   8:0    0  200G  0 disk 
├─sda1                8:1    0  200M  0 part /boot
├─sda2                8:2    0   60G  0 part 
│ ├─vg0-root (dm-0) 253:0    0   20G  0 lvm  /
│ ├─vg0-swap (dm-1) 253:1    0    2G  0 lvm  [SWAP]
│ ├─vg0-usr (dm-2)  253:2    0   10G  0 lvm  /usr
│ └─vg0-var (dm-3)  253:3    0   20G  0 lvm  /var
└─sda3                8:3    0    1G  0 part 
sdb                   8:16   0   15G  0 disk 
├─sdb1                8:17   0    1G  0 part 
├─sdb2                8:18   0    1G  0 part 
├─sdb3                8:19   0    1G  0 part 
├─sdb4                8:20   0    1K  0 part 
└─sdb5                8:21   0    1G  0 part 
sdc                   8:32   0   20G  0 disk 
└─sdc1                8:33   0    3G  0 part

创建文件系统

[root@Cloud ~]#mkfs.ext3 /dev/sdb1 #创建ext3的文件系统
mkfs.cramfs   mkfs.ext2     mkfs.ext3     mkfs.ext4     mkfs.ext4dev  mkfs.msdos    mkfs.vfat   #mkfs.支持的文件系统
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
66384 inodes, 265064 blocks
13253 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=272629760
9 block groups
32768 blocks per group, 32768 fragments per group
7376 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

查看文件系统类型

[root@Cloud ~]#blkid #查看分区的文件系统类型
/dev/mapper/vg0-var: UUID="d8d9eac0-3c29-4d58-b8ce-8fbc5b7c02e1" TYPE="ext4" 
/dev/sda1: UUID="86a42a62-9313-4445-a9d3-89017b8b3eee" TYPE="ext4" 
/dev/sda2: UUID="V0IJW1-vzSF-ufm8-n54d-B5Dw-GmWn-fuPHlf" TYPE="LVM2_member" 
/dev/mapper/vg0-root: UUID="4a5239a6-cf82-4749-9ee2-8726b99f28b6" TYPE="ext4" 
/dev/mapper/vg0-swap: UUID="46cfeae9-8ed8-4d14-9ecd-ff97c5cabeb9" TYPE="swap" 
/dev/mapper/vg0-usr: UUID="3adacb3d-7be8-4f75-baa3-d9a28be727bd" TYPE="ext4" 
/dev/sdb1: UUID="070ddfa4-cf54-4db3-8846-465bd7eda8ed" SEC_TYPE="ext2" TYPE="ext3"

 

mke2fs命令选项及使用

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 #: 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
[root@Cloud ~]#mke2fs -t ext4 -b 2048 -L "this is sdb" /dev/sdb2#/dev/sdb2写入ext4文件系统 块大小为2048
    #写入卷标"this is sdeb"
mke2fs 1.41.12 (17-May-2010)
Filesystem label=this is sdb
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
66528 inodes, 530144 blocks
26507 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=537919488
33 block groups
16384 blocks per group, 16384 fragments per group
2016 inodes per group
Superblock backups stored on blocks: 
16384, 49152, 81920, 114688, 147456, 409600, 442368
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@Cloud ~]#blkid #查看分区的文件系统
/dev/mapper/vg0-var: UUID="d8d9eac0-3c29-4d58-b8ce-8fbc5b7c02e1" TYPE="ext4" 
/dev/sda1: UUID="86a42a62-9313-4445-a9d3-89017b8b3eee" TYPE="ext4" 
/dev/sda2: UUID="V0IJW1-vzSF-ufm8-n54d-B5Dw-GmWn-fuPHlf" TYPE="LVM2_member" 
/dev/mapper/vg0-root: UUID="4a5239a6-cf82-4749-9ee2-8726b99f28b6" TYPE="ext4" 
/dev/mapper/vg0-swap: UUID="46cfeae9-8ed8-4d14-9ecd-ff97c5cabeb9" TYPE="swap" 
/dev/mapper/vg0-usr: UUID="3adacb3d-7be8-4f75-baa3-d9a28be727bd" TYPE="ext4" 
/dev/sdb1: UUID="070ddfa4-cf54-4db3-8846-465bd7eda8ed" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sdb2: LABEL="this is sdb" UUID="b3883156-7c03-47f4-9b9c-2f2905b2600c" TYPE="ext4" #显示信息

blkid:块设备属性信息查看

blkid[OPTION]… [DEVICE]

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

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

[root@Cloud ~]#blkid -L "this is sdb" #使用lebel查找对应设备

/dev/sdb2

[root@Cloud ~]#blkid -U b3883156-7c03-47f4-9b9c-2f2905b2600c #使用UUID查找对应设备

/dev/sdb2

e2label:管理ext系列文件系统的LABEL
# e2label DEVICE [LABEL] #查找设备对应的卷标或更改卷标
[root@Cloud ~]#e2label /dev/sdb2 #显示/dev/sdb2的卷标
this is sdb #先是卷标名称
[root@Cloud ~]#e2label /dev/sdb2 goodguy #更改卷标
[root@Cloud ~]#e2label /dev/sdb2 #显示卷标
goodguy #卷标已更改
findfs:查找分区
findfs[options] LABEL=<label> #根据卷标查找分区
findfs[options] UUID=<uuid> #根据UUID查找分区
[root@Cloud ~]#findfs LABEL=goodguy #根据卷标查找分区
/dev/sdb2
[root@Cloud ~]#findfs UUID=b3883156-7c03-47f4-9b9c-2f2905b2600c #根据UUID查找分区
/dev/sdb2

tune2fs命令的选项及使用

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

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

-L 'LABEL':修改卷标

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

-j: 将ext2升级为ext3

-O: 文件系统属性启用或禁用,–O ^has_journal

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

-U UUID: 修改UUID号;

[root@Cloud ~]#tune2fs -l /dev/sdb2 #查看/dev/sdb2中的超级块的信息
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   goodguy #卷标
Last mounted on:          <not available>
Filesystem UUID:          b3883156-7c03-47f4-9b9c-2f2905b2600c 
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index 
filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize #has_journal 有日志的文件系统
Filesystem flags:         signed_directory_hash 
Default mount options:    (none) #挂载选项
Filesystem state:         clean #干净的系统
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              66528 #inode数
Block count:              530144 #block数
Reserved block count:     26507
Free blocks:              501256 #可用block数
Free inodes:              66517 #可用inode数
First block:              0
Block size:               2048 #块大小
Fragment size:            2048
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2016
Inode blocks per group:   252
Flex block group size:    16
Filesystem created:       Sun Jul 31 00:54:36 2016
Last mount time:          n/a
Last write time:          Sun Jul 31 01:02:56 2016
Mount count:              0
Maximum mount count:      22
Last checked:             Sun Jul 31 00:54:36 2016
Check interval:           15552000 (6 months)
Next check after:         Fri Jan 27 00:54:36 2017
Lifetime writes:          49 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      98caa6e9-f51f-41c1-9e26-87e26d33caca
Journal backup:           inode blocks

[root@Cloud ~]#tune2fs -L goodboy /dev/sdb2 #更改/dev/sdb2的卷标
tune2fs 1.41.12 (17-May-2010)
[root@Cloud ~]#tune2fs -l /dev/sdb2|grep -C 2 'goodboy' #显示卷标名称是否更改。
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   goodboy
Last mounted on:          <not available>
Filesystem UUID:          b3883156-7c03-47f4-9b9c-2f2905b2600c
[root@Cloud ~]#tune2fs -O ^has_journal /dev/sdb2 #禁用日志特征
tune2fs 1.41.12 (17-May-2010)
[root@Cloud ~]#tune2fs -l /dev/sdb2 |grep 'features' #查看特征信息
Filesystem features:      ext_attr resize_inode dir_index filetype
 extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
[root@Cloud ~]#tune2fs -O has_journal /dev/sdb2 #启用日志特征
tune2fs 1.41.12 (17-May-2010)
Creating journal inode: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@Cloud ~]#tune2fs -l /dev/sdb2|grep 'feature' #显示日志特征启用
Filesystem features:      has_journal ext_attr resize_inode dir_index 
filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
[root@Cloud ~]#tune2fs -m 15 /dev/sdb2 #预留空间的百分比
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 15% (79521 blocks)
[root@Cloud ~]#tune2fs -l /dev/sdb2 |grep -C 3 'Reserved block count' #查看预留block的数量
Filesystem OS type:       Linux
Inode count:              66528
Block count:              530144
Reserved block count:     79521 #预留块百分比换算块的数量
Free blocks:              501256
Free inodes:              66517
First block:              0

[root@Cloud ~]#tune2fs -l /dev/sdb2 |grep -C 2 'Default mount options' #查看mount特征
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent
 flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    (none) #none
Filesystem state:         clean
Errors behavior:          Continue
[root@Cloud ~]#tune2fs -o acl /dev/sdb2 #启用acl
tune2fs 1.41.12 (17-May-2010)
[root@Cloud ~]#tune2fs -l /dev/sdb2 |grep -C 2 'Default mount options'
Filesystem features:      has_journal ext_attr resize_inode dir_index 
filetype extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    acl #挂载默认有acl权限
Filesystem state:         clean
Errors behavior:          Continue

dumpe2fs命令的选项及使用

dumpe2fs: #查看超级块组的信息

-h:查看超级块信息(分组信息),分区用分组管理

#超级块组中保存的各组的inode及详细元数据信息。由于数据格式太长久不截图给大家看了

[root@Cloud ~]#dumpe2fs -h /dev/sdb #-h跟tune2fs -l /dev/sdb信息一样
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          45631397-6b49-45d3-b2c8-92432a8fc45f
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      filetype sparse_super
Default mount options:    acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1966080
Block count:              3932160
Reserved block count:     196608
Free blocks:              3870447
Free inodes:              1966069
First block:              0
Block size:               4096
Fragment size:            4096
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         16384
Inode blocks per group:   512
Last mount time:          Sat Jul 30 18:50:09 2016
Last write time:          Sat Jul 30 21:28:24 2016
Mount count:              2
Maximum mount count:      -1
Last checked:             Thu Jan  1 08:00:00 1970
Check interval:           0 (<none>)
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:          128

文件系统检测和修复

        常发生于死机或者非正常关机之后

        挂载为文件系统标记为“dirty”

        fsck: File System Check  

        fsck.FS_TYPE

        fsck -t FS_TYPE # -t 指定文件类型

        -a: 自动修复错误

        -r: 交互式修复错误

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

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

        -y:自动回答为yes

        -f:强制修复

        

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

(0)
上一篇 2016-09-06 08:50
下一篇 2016-09-06 08:50

相关推荐

  • 马哥教育网络班22期第一周课程练习2-未闻花名

    语法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。 参数: -f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 -p…

    Linux干货 2016-08-15
  • rpm数据库损坏 不能使用正常使用yum的处理方法

           不知道有没有跟我一样的小伙伴,在使用yum安装软件时,发现无法正常使用yum安装软件包,下面出现几句英语提示。在使用rpm时也无法正常的使用。其实 是rpm数据库崩溃导致的 下面就简单的介绍一下怎么回复,让其正常的工作,很简单几个命了即可。 1. 出现错误提示,这时我们需要认真的阅读下面的提示,不要乱找原…

    Linux干货 2017-06-13
  • 什么是文件系统

    文件系统:层级结构;有索引; /: 原初起点; 倒置树状结构; /dev/pts/2: 最左侧/: 表示根目录 其它的/: 表示路径分隔符 Linux的路径分隔符是/ Windows的是\ 文件的路径表示: 绝对路径:从根开始表示出的路径  相对路径:从当前位置开始表示出的路径 文件名使用法则: 严格区分字符大小写:file1, File1, FI…

    Linux干货 2016-10-29
  • linux文件查找工具 — find

    简述:   linux中find命令是一种强大的实时查找工具,它通过用户给出的路径,在该路径下的文件系统中进行文件查找。因此在遍历一个较大的文件系统时会比较花费时间,而且find命令占用资源也是比较大的,所以它的工作特点是,查找的速度略慢,但是可以实现精确查找和实时查找。由于用户权限的问题,可能只搜索用户具备读取和执行权限的目录。由于fi…

    Linux干货 2016-08-18
  • Hadoop新增datanode与SecondaryNameNode

    无论是新增namenode还是SecondaryNameNode,操作方法大致相同 一、如果新增datanode,需要保证namenode能无密码ssh连接到新datanode 如果是添加SecondaryNameNode,则需保证其能无密码ssh连接至各datanode和namenode,namenode也需要能无密码连接到新SecondaryNameNo…

    Linux干货 2015-03-08
  • 马哥教育网络班20期+第九周博客作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash export nolginbash export otherbash for i in `grep -o…

    Linux干货 2016-08-09