Linux磁盘管理——文件系统 怎么理解格式化 每天一个linux命令(3):du命令

文件系统

参考:怎么理解格式化

硬盘有主引导扇区,主引导扇区上有主引导记录MBR、磁盘分区表、魔数。可以在一块硬盘上创建多个分区,然后对这些分区进行格式化,这里的格式化指的是在分区上创建文件系统的过程,如果不格式化就没办法在分区上存放文件、文件夹。在分区上创建文件系统的过程叫做高级格式化。对硬盘还有低级格式化一说,低级格式化指的是在硬盘上划分磁道,指定一个block多少扇区。低级格式化在硬盘出厂时已经设置好。所以买到硬盘我们只需要创建创建文件系统高级格式化来存放数据。

inode表中每一个条目对应一个文件,条目的大小是固定的。每个条目中指出了文件大小以及占用了哪些磁盘块,当文件特别大时,磁盘块必然很多,怎么记录这么多的磁盘块呢?使用间址

时间戳指的是:Access、modify、change三个时间

查看分区磁盘块使用情况

[root@51cto ~]# df /dev/sda1
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1               198337     25850    162247 14% /boot

查看分区 inode使用情况  -i

[root@51cto ~]# df -i /dev/sda1
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1              51200      38   51162 1% /boot

-P选项使用posix标准 长文件夹不换行显示

[root@51cto ~]# df -iP
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda2            1281120   20066 1261054 2% / tmpfs 238344 1 238343 1% /dev/shm /dev/sda1 51200 38 51162 1% /boot /dev/sda3 1281120 11 1281109 1% /home /dev/sda5 1281120 13 1281107 1% /tmp

可以使用stat查看文件详细信息

[root@51cto ~]# stat install.log
  File: `install.log'
  Size: 9714 Blocks: 24 IO Block: 4096 regular file Device: 802h/2050d Inode: 783363 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-05-25 05:23:47.379999800 +0800 Modify: 2018-05-25 05:25:36.807999764 +0800 Change: 2018-05-25 05:25:39.006999765 +0800

Inode: 783363   Inode编号783363  

Links:1  硬链接数量 1

注意:文件大小 与 文件占用空间 把并不等价

文件大小是文件的实际大小

文件占用空间,由于磁盘块大小是固定的,比如4K一个磁盘块,4bit大小的文件也要占用4K的空间。但是实际大小事4bit

 文件夹和文件名

在元数据存储区的inode表中,每个表目包含所有者,时间戳,文件大小等信息,但是没有没有包含文件名。文件名存放在目录里面,也就是文件夹里面。

在文件系统里面,文件夹也像文件一样,占用一个inode编号(inode表目),然后inode表目存放文件夹的元数据。文件夹的元数据指定文件夹所占用的磁盘块(标准叫法:目录磁盘块,存放的是目录而不是数据),目录磁盘块里面存放目录的条目dentry,以后在这个文件夹里面创建文件 或者 文件夹,都会把这个文件/文件夹的inode编号、名称在dentry里面添加一条。

目录磁盘块里面dentry每一个条目象征性表示为 inode+名字,实际上每个条目格式如下

上图可见,name一项是以4个一组分配的,不够的空间补\0

创建文件、删除文件的过程

创建文件时,这个文件的上层目录必须事先存在,因为要在上层目录的目录磁盘块dentry中添加该文件的条目。

1目录条目删除:  指dentry中删除

如果只是上图1~3的删除过程,且删除后没有后续磁盘IO,是可能恢复数据的。360系统管家有个功能,文件粉碎,可以在以删除的数据对应的磁盘块上写入随即数据,这样恢复也不是原来的数据了。

复制文件和剪切文件

如果把/var/log/message剪切到/var下,速度很快,而不管message有多大。因为只是单纯把log目录磁盘块中的一个表目移动到了var目录磁盘块中。message实际占用的物理磁盘快根本不需要动地方。

而复制耗时主要是以为要分配新的inode,新的磁盘块,跟创建文件一样,所以很耗时。

如果只是在一个分区中剪切,复制。剪切数度是比复制块

但如果是跨分区剪切复制、剪切情况就有所不同

复制:原分区不用动,目标分区上需要找到空闲inode表目,空闲物理磁盘快,拷贝数据

剪切:原分区暂时不用动,目标分区上需要找到空闲inode表目,空闲物理磁盘快,拷贝数据。 拷贝完毕后删除源分区上的inode表目,释放物理磁盘快。

 du

参考:每天一个linux命令(3):du命令

实际文件系统

当一个分区很大时,inode表,inode位图,磁盘块位图都会很大

超级快
每个块组描述符(Group Descriptor)存储一个块组的描述信息,例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块还有多少个等等

查看Linux支持哪些文件系统

[root@51cto ~]# ls /lib/modules/2.6.32-358.el6.x86_64/kernel/fs/
autofs4     cifs      dlm       ext2  fat      gfs2  jffs2       nfs         nls       udf
btrfs       configfs  ecryptfs  ext3  fscache  jbd   lockd       nfs_common  squashfs  xfs
cachefiles  cramfs    exportfs  ext4  fuse     jbd2  mbcache.ko  nfsd        ubifs

在分区上创建文件系统

mkfs命令就是对分区进行格式化,格式化的过程就是创建文件系统的过程。

-t 指定文件系统类型  mkfs.ext2  mkfs.ext3  mkfs.ext4
-b 指定磁盘块大小
-L 指定卷标

实际上mkfs -t是调用的下面命令

[root@51cto ~]# which mkfs
/sbin/mkfs
[root@51cto ~]# ls /sbin/mkfs*
/sbin/mkfs         /sbin/mkfs.ext2  /sbin/mkfs.ext4
/sbin/mkfs.cramfs  /sbin/mkfs.ext3  /sbin/mkfs.ext4dev

下面2条命令等价

[root@WebServer ~]# mkfs -t ext3 -b 1024 -L "test" /dev/sdb6
[root@WebServer ~]# mkfs. ext3 -b 1024 -L "test" /dev/sdb6

可以使用blkid查看磁盘上这些分区是什么文件系统

[root@51cto ~]# blkid
/dev/sda1: UUID="869facf4-9991-4ec6-b707-9bd26f696962" TYPE="ext4" 
/dev/sda2: UUID="75f4aec3-1775-4f0b-83db-090575d4c17c" TYPE="ext4" 
/dev/sda3: UUID="c0f04f79-8121-4118-b8ed-a7b018da76da" TYPE="ext4" 
/dev/sda5: UUID="72b88f1d-cb50-48bb-b040-9a808f7297ae" TYPE="ext4" 
/dev/sda6: UUID="b3795e5b-4973-4566-935c-45840f01b99d" TYPE="swap" 

UUID是一个分区的唯一标识

mke2fs

(make ext2 file system)
-j ext3格式化为日志文件系统
-b 块大小 1024 2048 4096 8192
-L 指定卷标
-m 指定预留给管理员磁盘块5%
-i 指定一个Inode保留的块大小 2048

e2label

查看和设置分区卷标

[root@51cto ~]# blkid
/dev/sda1: UUID="869facf4-9991-4ec6-b707-9bd26f696962" TYPE="ext4" 
/dev/sda2: UUID="75f4aec3-1775-4f0b-83db-090575d4c17c" TYPE="ext4" 
/dev/sda3: UUID="c0f04f79-8121-4118-b8ed-a7b018da76da" TYPE="ext4" 
/dev/sda5: UUID="72b88f1d-cb50-48bb-b040-9a808f7297ae" TYPE="ext4" 
/dev/sda6: UUID="b3795e5b-4973-4566-935c-45840f01b99d" TYPE="swap" 
[root@51cto ~]# e2label /dev/sda5

[root@51cto ~]# e2label /dev/sda5 "backup"
[root@51cto ~]# e2label /dev/sda5
backup

tune2fs

调整和查看ext2/ext3文件系统的文件系统参数
-l 查看文件系统信息
[root@51cto ~]# tune2fs -l /dev/sda5
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name:   backup
Last mounted on:          /tmp
Filesystem UUID:          72b88f1d-cb50-48bb-b040-9a808f7297ae
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              1281120
Block count:              5120000
Reserved block count:     256000
Free blocks:              4995565
Free inodes:              1281106
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1022
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8160
Inode blocks per group:   510
Flex block group size:    16
Filesystem created:       Fri May 25 05:18:56 2018
Last mount time:          Fri Jun  8 18:13:22 2018
Last write time:          Fri Jun  8 18:45:24 2018
Mount count:              10
Maximum mount count:      -1
Last checked:             Fri May 25 05:18:56 2018
Check interval:           0 (<none>)
Lifetime writes:          482 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:      048aecca-f61c-4009-b778-86a8727983b1
Journal backup:           inode blocks

Last mounted on:          /tmp上次挂在在/tmp目录下


-c 设置强制自检的挂载次数
-i 设置强制自检的时间间隔 d m w
-m 设置为管理员保留的磁盘快百分比
-j 将ext2 转成 ext3 文件系统
-L 修改文件系统的卷标
-r 调整系统保留的磁盘空间
-o 设置分区的默认挂载项
 [root@WebServer ~]# tune2fs -L "test" /dev/sdb6
 [root@WebServer ~]# tune2fs -l /dev/sdb6
 [root@WebServer ~]# tune2fs -j /dev/sdb6
[root@WebServer ~]# tune2fs -m 2 /dev/sdb6
 [root@WebServer ~]# tune2fs -r 4000 /dev/sdb6

猜你喜欢

转载自www.cnblogs.com/kelamoyujuzhen/p/9154643.html