Linux基础之文件系统简介及其系统管理工具
常见的文件系统 Linux文件系统: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交换分区 光盘:iso9660 Windows:fat32, ntfs Unix: FFS, UFS, JFS2 网络文件系统:NFS, CIFS 集群文件系统:GFS2, OCFS2 分布式文件系统:ceph,moosefs, mogilefs, GlusterFS, Lustre 实验环境CentOS7.2 Linux根据其是否支持"journal"功能: 日志型文件系统: ext3, ext4, xfs, ... 非日志型文件系统: ext2, vfat Linux的文件系统的组成部分: 内核中的模块:ext4, xfs, vfat 用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat 在正式介绍文件系统的前先说一下创建文件系统之前的格式化问题。 格式化 低级格式化:硬件制造商、分区之前划分磁道,形成簇 磁盘出厂前由厂家完成 高级格式化:分区之后对分区进行,创建文件系统 每种操作系统所设置的文件属性/权限不相同,为了存放这些所需的数据 我们常说的重装系统及格式化都是属于高级格式化层面的。本文所说的文件系统均为高级格式化后的产物。 Linux文件系统管理工具 blkid:块设备属性信息查看 命令使用格式:blkid [OPTION]... [DEVICE] -U UUID: 根据指定的UUID来查找对应的设备 -L LABEL:根据指定的LABEL来查找对应的设备 命令演示: [root@localhost~]#blkid/dev/sda1 /dev/sda1:UUID="6efb8a23-bae1-427c-ab10-3caca95250b1"TYPE="xfs" [root@localhost~]#blkid-U6efb8a23-bae1-427c-ab10-3caca95250b1 /dev/sda1 ………………………………………………………………………………………………………… mkfs:文件系统创建工具: mkfs - build a Linux filesystem 命令使用格式: 1、 mkfs [options] [-t type] device [size] [ -t type] :指定要创建的文件系统类型ext4|xfs|btrfs|vfat|...|] [options]:-L 'LABEL': 设定卷标 在创建文件系统同时指定卷标。 -f 若文件系统已存在,强制覆盖 命令演示: [root@localhost~]#mkfs-L'new1'-text4/dev/sdb5 mke2fs1.42.9(28-Dec-2013) 文件系统标签=new1 OStype:Linux 块大小=1024(log=0) 分块大小=1024(log=0) Stride=0blocks,Stripewidth=0blocks 25688inodes,102400blocks 5120blocks(5.00%)reservedforthesuperuser 第一个数据块=1 Maximumfilesystemblocks=33685504 13blockgroups 8192blockspergroup,8192fragmentspergroup 1976inodespergroup Superblockbackupsstoredonblocks: 8193,24577,40961,57345,73729 Allocatinggrouptables:完成 正在写入inode表:完成 Creatingjournal(4096blocks):完成 Writingsuperblocksandfilesystemaccountinginformation:完成 [root@localhost~]#blkid/dev/sdb5 /dev/sdb5:LABEL="new1"UUID="10880486-7ad9-43de-9607-f9bc1fda1edf"TYPE="ext4" ………………………………………………………………………………………………………… 2、mkfs.FS_TYPE /dev/DEVICE FS_TPYE:ext4、xfs、btrfs、vfat... 命令演示: [root@localhost~]#mkfs.xfs-L'new2'/dev/sdb6 mkfs.xfs:/dev/sdb6appearstocontainanexistingfilesystem(ext3). mkfs.xfs:Usethe-foptiontoforceoverwrite. [root@localhost~]#mkfs.xfs-f-L'new2'/dev/sdb6 meta-data=/dev/sdb6isize=256agcount=4,agsize=6400blks =sectsz=512attr=2,projid32bit=1 =crc=0finobt=0 data=bsize=4096blocks=25600,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=0 log=internallogbsize=4096blocks=853,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 [root@localhost~]#blkid/dev/sdb6 /dev/sdb6:LABEL="new2"UUID="ed636bf6-1cee-43d1-96e2-8baa8dc29087"TYPE="xfs" 若/dev/sdb# 指定的磁盘块已经存在文件系统,执行命令mkfs会失败,若加-f,则强制将原文件系统覆盖。慎用-f。 ………………………………………………………………………………………………………… mke2fs:ext系列文件系统专用管理工具 mke2fs - create an ext2/ext3/ext4 filesystem -t {ext2|ext3|ext4}指明要创建的文件系统类型 -b {1024|2048|4096}指明文件系统的块大小 -L 'LABEL'指明卷标 -j: 创建有日志功能的文件系统ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 -i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小; -N #:为数据空间创建个多少个inode; -m #: 为管理人员预留的空间占据的百分比; -O [^]FEATHER:开启或关闭某种特性; 命令演示:mk2fs创建ext2格式的文件系统 [root@localhost~]#mke2fs-text2/dev/sd sdasda1sda2sdbsdb1sdb2sdb5sdb6sdb7 [root@localhost~]#mke2fs-text2/dev/sdb7 mke2fs1.42.9(28-Dec-2013) 文件系统标签= OStype:Linux 块大小=1024(log=0) 分块大小=1024(log=0) Stride=0blocks,Stripewidth=0blocks 25688inodes,102400blocks 5120blocks(5.00%)reservedforthesuperuser 第一个数据块=1 Maximumfilesystemblocks=67371008 13blockgroups 8192blockspergroup,8192fragmentspergroup 1976inodespergroup Superblockbackupsstoredonblocks: 8193,24577,40961,57345,73729 Allocatinggrouptables:完成 正在写入inode表:完成 Writingsuperblocksandfilesystemaccountinginformation:完成 [root@localhost~]#blkid/dev/sdb7 /dev/sdb7:UUID="4b9767fc-a8bf-4dda-9ce1-50eb5418da04"TYPE="ext2" 指定inode数及为管理人员预留空间的百分比 [root@localhost~]#mke2fs-N1024-m3/dev/sdb7 mke2fs1.42.9(28-Dec-2013) 文件系统标签= OStype:Linux 块大小=1024(log=0) 分块大小=1024(log=0) Stride=0blocks,Stripewidth=0blocks 1040inodes,102400blocks 3072blocks(3.00%)reservedforthesuperuser 第一个数据块=1 Maximumfilesystemblocks=67371008 13blockgroups 8192blockspergroup,8192fragmentspergroup 80inodespergroup Superblockbackupsstoredonblocks: 8193,24577,40961,57345,73729 Allocatinggrouptables:完成 正在写入inode表:完成 Writingsuperblocksandfilesystemaccountinginformation:完成 ………………………………………………………………………………………………………… e2label:管理ext系列文件系统的LABEL 查看:e2label device 设定:e2label device LABEL 命令演示:设定指定块设备的卷标 [root@localhost~]#e2label/dev/sdb7new3 [root@localhost~]#e2label/dev/sdb7 new3 ………………………………………………………………………………………………………… tune2fs:重新设定ext系列文件系统可调整参数的值(不进行格式化) -l:查看指定文件系统超级块信息;super block -L 'LABEL':修改卷标 -m #:修预留给管理员的空间百分比 -j: 将ext2升级为ext3 -O: 文件系统属性启用或禁用 -o: 调整文件系统的默认挂载选项 -U UUID: 修改UUID号; 命令演示:修改卷标 [root@localhost~]#tune2fs-L'anotherlabel'/dev/sdb7 tune2fs1.42.9(28-Dec-2013) [root@localhost~]#blkid/dev/sdb7 /dev/sdb7:LABEL="anotherlabel"UUID="a57b2116-d72b-48d2-a648-bb6d2d5487ac"TYPE="ext2" 升级ext2到ext3 [root@localhost~]#tune2fs-j/dev/sdb7 tune2fs1.42.9(28-Dec-2013) Creatingjournalinode:完成 [root@localhost~]#blkid/dev/sdb7 /dev/sdb7:LABEL="anotherlabel"UUID="a57b2116-d72b-48d2-a648-bb6d2d5487ac"SEC_TYPE="ext2"TYPE="ext3" ………………………………………………………………………………………………………… dumpe2fs: -h:查看超级块信息等同于tune2fs -l 命令演示: [root@localhost~]#dumpe2fs-h/dev/sdb7 dumpe2fs1.42.9(28-Dec-2013) Filesystemvolumename:anotherlabel Lastmountedon:<notavailable> FilesystemUUID:a57b2116-d72b-48d2-a648-bb6d2d5487ac Filesystemmagicnumber:0xEF53 Filesystemrevision#:1(dynamic) Filesystemfeatures:has_journalext_attrresize_inodedir_indexfiletypesparse_super Filesystemflags:signed_directory_hash Defaultmountoptions:user_xattr Filesystemstate:clean Errorsbehavior:Continue FilesystemOStype:Linux Inodecount:1040 Blockcount:102400 Reservedblockcount:3072 Freeblocks:96568 Freeinodes:1029 Firstblock:1 Blocksize:1024 Fragmentsize:1024 ReservedGDTblocks:256 Blockspergroup:8192 Fragmentspergroup:8192 Inodespergroup:80 Inodeblockspergroup:10 Filesystemcreated:SunAug2120:11:132016 Lastmounttime:n/a Lastwritetime:SunAug2120:52:012016 Mountcount:0 Maximummountcount:-1 Lastchecked:SunAug2120:11:132016 Checkinterval:0(<none>) Reservedblocksuid:0(userroot) Reservedblocksgid:0(grouproot) Firstinode:11 Inodesize:128 Journalinode:8 Defaultdirectoryhash:half_md4 DirectoryHashSeed:3e1f3581-59c7-41b3-bd4f-d262e3ce026e Journalbackup:inodeblocks Journalfeatures:(none) 日志大小:4113k Journallength:4096 Journalsequence:0x00000001 Journalstart:0 ………………………………………………………………………………………………………… fsck:check and repair a Linux file system检查修复Linux文件系统 因进程意外中止或系统崩溃等 原因导致定稿操作非正常终止时,可能会造成文件损坏;此时,应该检测并修复文件系统; 建议,离线进行; -t fstype:指明文件系统类型;比如:fsck -t ext4 = fsck.ext4 -a:无须交互而自动修复所有错误; -r:交互式修复; Note: FS_TYPE一定要与分区上已经文件类型相同; ………………………………………………………………………………………………………… e2fsck:ext系列文件专用的检测修复工具 -y:自动回答为yes; -f:强制修复; 总结 文件系统管理工具 通用:mkfs、blkid、fsck ext系列文件系统专用工具:mke2fs、dumpe2fs、tune2fs、e2label、e2fsck 简要比较两种类型的命令 [root@localhost~]#dumpe2fs/dev/sda1 dumpe2fs1.42.9(28-Dec-2013) dumpe2fs:Badmagicnumberinsuper-block当尝试打开/dev/sda1时 找不到有效的文件系统超级块. [root@localhost~]#blkid/dev/sda1 /dev/sda1:UUID="6efb8a23-bae1-427c-ab10-3caca95250b1"TYPE="xfs"