Linux入门之磁盘管理(2)文件系统

Linux入门之磁盘管理(2)文件系统

linux分区构成完成之后,一般需要进行对其创建指定的文件系统,也就是我们常说的格式化,然后对其进行分区挂载,提供指定分区的访问点。不同的分区格式会在文件系统内部提供不同的对该分区的数据存储的格式分配,以及其内部模块会支持不同的分区的接口及方法调用,例如对一个文件的打开、读取、写入、关闭等功能,每个文件系统都会有各种不同的特点。

常见的系统文件系统:

linux:

ext2、ext3、ext4;xfs(SGI);btrfs(Oracle);reiserfs;jfs(ATX);swap

windows:

ntfs、fat32

unix:

FFS(fast);USF(unix);JFS2

注意:linux是识别fat32,只不过其类型显示为vfat格式

其它领域的文件系统:

网络文件系统:NFS, CIFS

集群文件系统:GFS2、OCFS2(Oracle)

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

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

Linux中的文件系统划分:

按是否支持”Journal”(日志)功能分类:

日志性文件系统:ext3, ext4, xfs

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

文件系统的组成部分:

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

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

注意:这里说明了如果内核实现未提供相应的模块,就是能使用格式化工具去格式化对应格式分区,但内核模块不识别,当然工具是建立在内核的基础上的。

Linux虚拟文件系统:VFS

用途:为了支持不同类型格式文件系统下数据和系统内核处理的连接,中间出现了虚拟文件系统,对外提供了一个同一的接口规范来是各种文件系统来调用以此让系统管理

使用命令查看当前系统内核支持的文件系统:

/proc/filesystems  (映射内核支持的所有文件系统列表)

[[email protected] ~]# cat /proc/filesystems
nodevdrm
    ext4

解析:这里有两列,nodev表示没有设备在使用此系统模块,而为空表示有设备使用了此文件系统

使用命令创建文件系统(格式化分区):

通用文件系统工具

mkfs  命令

用法:mkfs.FS_TYPE  /dev/DEVICE :注意这里是对分区操作

FS_TYPE:   ext4

xfs

ftrfs

vfat

mkfs  -t  FS_TYPE  /dev/DEVICE:通过-t类型指定文件系统类型

-L  ‘LABEL’  :格式化时指定一个卷标,默认不指定为空

专用创建ext文件系统

mke2fs  命令

mke2fs:专门用于ext系列系统,不支持其创建它文件系统

用法:

mke2fs  [option]  /dev/DEVICE
      -t  {ext2|ext3|ext4}     #格式化为指定格式文件系统,默认不指定为ext2
      -b  {1024|2048|4096}          #设置每一个块占多少个字节,一般默认为4096
      -L  ‘LABEL’              #格式化时指定卷标
      -j                    #格式化为ext3
      -i #                   #指定多少#字节创建一个inode,不能小于block大小
      -N #                   #为数据空间创建多少#个inode
      -m #     #为管理员预留多少块占用,单位为百分比,默认为5%
      -O FEATURE  #启用指定特性,多个特性中间用 , 隔开
      -O ^FEATURE  #禁用指定特性

命令使用实例:

#查看/dev/sdb磁盘是否已经进行了分区,这里显示进行事先创建好了分区
[[email protected] ~]# fdisk -l /dev/sdb | grep ‘^/dev.*‘
/dev/sdb1     1        2914      131129+        83  Linux
/dev/sdb2     2915      14566      524340        83  Linux
/dev/sdb3     14567      37869     1048635        83  Linux
/dev/sdb4     37870      466033    19267380       5 Extended
/dev/sdb5     37870      61172     1048634+       83  Linux
#下面进行格式化,因为产生信息过多,这里我们全部写入一个文件
[[email protected] ~]# mke2fs /dev/sdb1 &> mksdb1.log
#分析格式化产生的信息:
#这里显示默认为预留了6556个块,也就是总块数的5%
[[email protected] ~]# cat mksdb1.log | grep -o ‘.*blocks.*)‘
6556 blocks (5.00%)
#查看/dev/sdb1被分配了多少个inode,多少个存数据的块,多少个分配块的分组
[[email protected] ~]# cat mksdb1.log | grep -o ‘^[0-9].*\(blocks\|groups\)$‘
32896 inodes, 131073 blocks
16 block groups
#查看/dev/sdb1分配了多少bytes来指定一个block
[[email protected] ~]# cat mksdb1.log | grep -o ‘^Blo.*e=[0-9]\+‘
Block size=1024
#格式化设置指定分区卷标名
[[email protected] ~]# mke2fs -L ‘mydata‘ /dev/sdb1  |&  grep -o ‘label=.*‘
label=mydata

使用命令查看设备属性信息:

指向设备的另一种方法,一般常见有3中:

指定设备名、设备卷标名、设备UUID

blkid  命令

用法:

blkid  [option]...  /path/to/dev
        -U  UUID:#根据指定的UUID来查找对应的设备
        -L  LABEL:#根据指定的卷标名来查找对应的设备

e2label  命令

专用于ext系列文件系统

e2label  DEVICE  [LABEL]

findfs  命令

findfs  [option]  LABEL=<label>  #根据指定卷标名查找出对于分区
findfs  [option]  UUID=<uuid>   #根据指定UUID查找出对应分区

使用案例:

#查看fstab中设置的分区格式信息
[[email protected] ~]# cat /etc/fstab | grep ‘^[^#[:space:]]‘
UUID=d4216951-0028-4b26-824e-89a2f661d008  /   ext4 defaults        1 1
UUID=2f1d03b9-c82a-45be-af0f-8766eff3f9ac   /boot  ext4  defaults        1 2
UUID=47433c93-6d04-46e5-bed0-8fd189874278  /testdir ext4 defaults        1 2
UUID=3d3cb745-3fe1-4482-9814-fc1bf9f7f76e swap  swap defaults          0 0
tmpfs   /dev/shm          tmpfs   defaults        0 0
devpts   /dev/pts          devpts   gid=5,mode=620     0 0
sysfs   /sys                  sysfs   defaults        0 0
proc    /proc            proc    defaults       0 0
#现在我们要根据UUID来找出boot分区,可以借助文本处理工具
[[email protected] ~]# cat /etc/fstab | sed -n ‘s/^UUID=\(.*\)[[:space:]]\/boot.*$/\1/gp‘
2f1d03b9-c82a-45be-af0f-8766eff3f9ac
#然后使用命令调用来根据UUID找出对应分区
[[email protected] ~]# blkid -U `sed -n ‘s/^UUID=\(.*\)[[:space:]]\/boot.*$/\1/gp‘ /etc/fstab` 
/dev/sda1
#这里显示/dev/sda1,是正确的,上面我们通过/etc/fstab显示的是/boot分区的UUID
#当然不确定可以也可以使用blkid进行详细查看
[[email protected] ~]# blkid /dev/sda1
/dev/sda1: UUID="2f1d03b9-c82a-45be-af0f-8766eff3f9ac" TYPE="ext4" 
#显示了其UUID,并且文件系统为ext4
#使用e2label设备并查看卷标
[[email protected] ~]# e2label /dev/sdb1 mydata
[[email protected] ~]# e2label /dev/sdb1 
mydata
#同样使用findfs通过管道来查询/boot分区
[[email protected] ~]# grep -o ‘.*/boot‘ /etc/fstab | grep -o ‘=.*\>[[:space:]]‘ | grep -o ‘[^=[:space:]]\+‘ | xargs -I {} findfs UUID={}
/dev/sda1
#使用findfs根据LABEL卷标名查询出,前提要操作的分区要有卷标名,不然会报错
[[email protected] ~]# findfs LABEL=`e2label /dev/sdb1`
/dev/sdb1

使用命令设置和查看分区详细信息:

tune2fs  命令  (注意:只用于支持ext类型文件系统类型)

用法:

tune2fs  [option]  /dev/dev_part
    -l:       #查询指定文件超级快(super block)信息
     -L ‘LABEL’:  #修改卷标
     -m #:      #调整预留给管理员空间,可能会破坏数据
    -O :      #文件系统启用或禁用,-O  ^has_journal,不加^为启用
    -o :      #调整文件系统的默认挂载
    -U UUID:    #修改UUID号

dumpe2fs  命令  用于查询所有快组及分区数据信息

-h:查看超级块信息

命令使用实例:

使用tune2fs查看超级块信息

tune2fs  -l  /dev/sdb1     #注意这里指定的是分区设备

#如上图,超级块所记录的所有分区的元数据都会被以报表的形式而列举出来

修改指定分区卷标

#查看卷标
[[email protected] ~]# e2label /dev/sdb1
mydata
#设置卷标
[[email protected] ~]# tune2fs -L ‘data‘ /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
#再次查看卷标
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep ‘vol‘ | grep -o ‘[^[:space:]]\+$‘
data

修改预留百分比

#先查看此分区被分配了多少个块用于存储设备
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep ‘Block.*count‘
Block count:              131073
#预留的总数大概是总数的1%
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep ‘Rese.*count‘
Reserved block count:     1310
#现在重新调整预留百分比
[[email protected] ~]# tune2fs  -m 5 /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
Setting reserved blocks percentage to 5% (6553 blocks)

解析:调整后的结果显示出来,%5预留,有6553个block,但是这里要注意,如果,调整之前,该分区如果数据已经存满(分配完block),再去调整可能会有数据丢失或损坏。

添加或移除文件系统特性

#查看指定分区文件系统的特性
[[email protected] ~]# tune2fs -l /dev/sdb1 | sed -n ‘s/.*features:[[:space:]]\+\(.*\)$/\1/gp‘
has_journal ext_attr resize_inode dir_index filetype sparse_super
解析:这里出现了has_journal表示是ext3及以上的版本才会支持的
#现在去掉日志功能
[[email protected] ~]# tune2fs -O ^has_journal /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
#查看/dev/sdb1的特性功能,已经没有了has_journal
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep ‘features‘
Filesystem features:    ext_attr resize_inode dir_index filetype sparse_super

调整设备默认挂载选项

#查看设备默认挂载选项
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep ‘^Default.*mount.*:‘
Default mount options:    (none)
#修改设备默认挂载选项为支持acl
[[email protected] ~]# tune2fs -o acl /dev/sdb1
tune2fs 1.41.12 (17-May-2010)
#再次查看,这里从没有变成了支持acl
[[email protected] ~]# tune2fs -l /dev/sdb1 | grep ‘^Default.*mount.*:‘
Default mount options:    acl

注意:如果同时设置多个默认挂载选项,可以使用 , 隔开

使用dumpe2fs查看所有含有super block信息备份的块组

#查看有多少个快组
[[email protected] ~]# dumpe2fs /dev/sdb1 2> /dev/null  | grep ‘^Group[[:space:]]‘ | wc -l
16
#列出所有包含有super block中的快组
[[email protected] ~]# dumpe2fs /dev/sdb1 2>/dev/null | grep -B2 ‘super.*block‘ | grep ‘[^-]‘ | grep -o ‘^Group[[:space:]][0-9]\+‘
Group 0                    # 0 号块组一般放primary super block
Group 1                    #以下的块组存放了super block的备份
Group 3
Group 5
Group 7
Group 9

解析:因为super block 保存了一个文件系统所产生的所有元数据,一旦受到破坏,可能整个文件系统都无法使用,这时有了超级块的备份存在,就可以通过备份进行文件系统的修复。

使用命令进行文件系统的检查、修复:

通用命令

fsck 命令

用法:

fsck   /dev/part_name  :     默认不指定为自动识别分区文件系统类型

fsck.TYPE                 指定文件系统类型:比如fsck.ext3

指定选项:

fsck  [option]   /dev/part_name
     -t  FS_TYPE   #同样指定文件系统类型:比如fsck  -t  xfs
     -a         #表示为自动修复
     -r          #交互式检查

专用于ext系列文件系统

e2fsck 命令

选项用法:

e2fsck  [option]  /dev/part_name
       -f     #表示为强制检查
       -y     #自动回答为yes
[[email protected] ~]# fsck -a /dev/sdb1 
fsck from util-linux-ng 2.17.2
data: clean, 11/32896 files, 5707/131073 blocks

注意:clean表示为block为没有损坏

时间: 2024-10-10 09:33:49

Linux入门之磁盘管理(2)文件系统的相关文章

Linux入门之磁盘管理(3)文件系统挂载

当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实现文件系统的挂载及管理. 挂载命令的使用 mount 命令 用法: mount  [option]    DEVICE  mountdir DEVICE(要挂载的设备): 设备名:如/dev/sdb1 /dev/hda2 卷标名:-L  "LABLE"  如  -L mydata UUID :-U  UUID 伪文

Linux入门之磁盘管理(1)分区管理

Linux入门之磁盘管理(1)分区管理 无论是windows还是linux,目前支持的分区结构只有两种,一种是基于blos检查启动的mbr结构,另一种是基于uefi(统一扩展固件接口)的opt分区结构.当然,目前广泛的还是使用的mbr结构. linux中有很多不同的文件系统,当使用安装光盘安装的readhat类的linux系统默认一般支持的主要格式为ext类(ext2.ext3.ext4),当然这些是redhat或者centos5.6所使用的默认设备,且安装centos7时默认使用的分区格式为x

Linux入门之磁盘管理(9)LVM逻辑卷案例

Linux入门之磁盘管理(9)LVM逻辑卷案例 案例介绍阶段(1): 创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M:而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且支持ACL功能. 1.准备工作 #这里我们分别从两个磁盘选择10G来准备组合为PV [[email protected] ~]# fdisk -l | grep -o '/.*B' /dev/sda: 21.5 GB /dev/sdb: 2

Linux系统管理之磁盘管理与文件系统

Linux系统管理之磁盘管理与文件系统 一.前言 管理磁盘是管理员的重要工作内容,本文主要介绍以下几个方面 磁盘结构及分区表示 管理磁盘及分区 管理文件系统 二.磁盘(无尘环境制造)结构及分区 1.物理结构 盘片:硬盘有多个盘片,每盘片2面 磁头:每面有一个磁头 2.数据结构 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据 磁道:同一盘片不同半径的同心圆 柱面:不同盘片相同半径构成的圆柱面 多个扇区组成磁道,多个相同直径的磁道组成柱面 笔记本的磁盘一般是2.5英寸,7mm厚度和9.5

linux 学习之磁盘管理和文件系统

linux磁盘管理 硬盘一般分为两种: (1)机械式硬盘 主要组成部分: track:磁道 sector:扇区 cylinder:分区的基本单位 MBR:硬盘首扇区, 大小:512bytes 其中:446:bootloader 64:  文件分配表(其中16为一个分区) 2:最后2个字节55AA (2)固态硬盘SSD 磁盘接口类型: 主要分为: IDE :133MB/S SCSI:640MB/s SATA:6Gbps(目前最常用的) SAS:6Gbps USB:480MB/S 识别磁盘的设备:

Linux入门之磁盘管理(6)磁盘配额

在linux中使用向磁盘中存入数据时,如果有多个用户对同个磁盘进行操作,其中一个用户放了很大数据的文件导致硬盘容量用光,那么其他用户将无法再存入数据,这时就需要对每个用户进行存入数据大小的限制,linux中提供了一种磁盘配额的功能来实现. 初始化: 添加分区挂载选项:usrquota.grpquota 初始化数据库:quotacheck 命令 使用命令 开启或取消配额:quotaon.quotaoff 直接编译配额:edquota  [username] 案例说明: 创建配额数据库 #/home

Linux入门之磁盘管理(8)LVM逻辑卷的使用

在Linux中虽然有raid来保证数据的稳定以及磁盘性能的提高,但是其扩展性并不是很好,在很多生产环境中,都是数据正在使用中,在这时如果中断一段时间就会有很大的损失,因此Linux提供了LVM虚拟逻辑卷的概念,同样多个磁盘设备或分区设备组合在一起,但是,如果空间需要缩减或者扩展,可以很方便的进行动态改变,甚至进行数据快照. 逻辑卷管理器(LVM): 1.允许对卷进行方便操作的抽象层,包括重新定义文件系统的大小 2.允许在多个目录设备间重新组织文件系统 (1)将设备指定为物理卷 (2)用一个或多个

Linux入门之磁盘管理(4)/etc/fstab与交换分区

在linux通过挂载命令可以使用各种选项进行不同文件系统的设备文件进行挂载,当然不仅限于块设备,但是无论怎么挂载,一般默认新建的文件系统进行挂载开机是不会自动挂载的,每次开启自动挂载的分区时通过/etc/fstab文件进行读取的. /etc/fstab文件 简介: 此文件内容每一行都被定义一个条目的对应挂载信息,如果把每行条目按空格切割成多断那么可以分为下面几列: 要挂载的设备或者伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序 挂载设备:一般为:设备名.LABEL="设备卷标名&

Linux入门之磁盘管理(7)RAID的实现

RAID(Redundant Arrays of Inexpensive Independent Disks)被称为廉价冗余阵列,为了提高磁盘的性能或者保存数据完整,将多个磁盘合成一个"阵列"来提供更好的性能.冗余等. RAID一般使用硬件raid,并配合指定 raid的接口或者raid卡来组成硬件raid,但是开销一般比较大,于是在linux中也提供了软件raid的实现. raid的好处: 提高IO能力: 磁盘的并行读写 提高耐用性: 磁盘冗余来实现 RAID技术分类: 多个磁盘组成