标签:linux
Linux: ext2,3,4这几个文件系统大多数linux都支持
对磁盘进行分区后,通过kpartx和partx指令让内核识别磁盘分区,接下来进行磁盘区的格式化,也就是创建文件系统:
格式化操作其中之一就是对分区创建元数据区和数据区,元数据区存的是inode,每个inode就是一个条目,对应一个文件,inode中还存着文件在数据区对应的块的编号,数据区很多的block,每个block是512个字节,使用时以2的n次方作为单位来使用,每个分区统一以几个block做为一个最小单元来存储数据。
文件修复和检测是指对比元数据区的inode中的文件信息是否与对应数据区的block一样,如果不同则视为错误文件,删除inode以及对应的block。
文件系统在创建时,还会对磁盘该分区划分出一个日志区,存储日志记录,例如在进行写操作时,文件信息inode的创建先在log区中创建,如果写完成时再转入元数据区,如果中间断电,则写失败,那么进行文件修复和检测时,检测log区的inode和对应文件数据信息是否一致即可。
每个分区中还有一个区域是超级块,存储blocks的分组信息,该组里有哪些块,称为块组,该超级块也是块中的一个,存在数据区,但是该块存的是分块的元数据,存的是组的信息。在众多的块组中,都有超级块,编号为0的超级块作为使用,其他块组的超级块起到备份作用。
在元数据区里,除了文件的inode,还有inode的位图和block的位图,用于查看空闲的inode和block。这些位图的信息都存在超级块中。
超级块中记录了整个分区的重要基本信息,如分组信息,块大小,位图,空闲大小等信息,因此非常重要。
mkfs: 创建文件系统指令
-t fstype /dev/somedevice
# mkfs -t ext2 /dev/sda3 对sda3这个分区采用ext2这个文件系统进行管理
# mkfs.ext2
# mke2fs
-t
Ext4: mkfs -t ext4 = mkfs.ext4 = mke2fs -t ext4 这几个操作命令是等价的
Ext3: mkfs -t ext3 = mkfs.ext3 = mke2fs -t ext3 = mke2fs -j
Ext2:
后面加磁盘设备文件的哪一个区
格式化使用的指令,创建文件系统详解
mke2fs: 这个指令比其他的要强大,因此多使用这个指令创建分区的文件系统
配置文件:/etc/mke2fs.conf,这个文件是该指令的配置文件,配置了一些通过该指令创建的文件系统的默认属性
mke2fs -t -ext4 /dev/sda3
-t {ext2|ext3|ext4} 选取哪种文件系统
-j : 相当于-t ext3
-L Label:卷标
-b {1024|2048|4096}:指定块大小
-i #: #个字节给预留一个inode
-N #: 直接指定预留多少个Inode
-I #:Inode大小
-m #:预留管理员的空间百分比,默认为5,直接输入数字即可
-O:指定分区特性
/etc/mke2fs.conf里有mke2fs指令的默认属性,块大小,inode比率
[root@zhenzhen ~]# cat /etc/mke2fs.conf
[defaults]
base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
blocksize = 4096
inode_size = 256
inode_ratio = 16384
设定和查看卷标
e2label
e2label /dev/SOMEDEVICE: 查看卷标
e2label /dev/SOMEDEVICE Label: 设定卷标
查看磁盘分区的属性指令
blkid /dev/SOMEDEVICE: 查看设备的属性,UUID和TYPE
[root@zhenzhen ~]# blkid /dev/sda1
/dev/sda1: UUID="1769b47d-20c1-4803-bf94-2710e7e5bb0a" TYPE="ext4"
超级块中保存的是整个分区的关键信息,如大小,分组等,如下:
[root@zhenzhen ~]# dumpe2fs /dev/sda1 会显示超级块基本信息以及每个block组的信息
以下是超级块的基本信息:
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: /boot
Filesystem UUID: 1769b47d-20c1-4803-bf94-2710e7e5bb0a 该分区的uuid,用于挂载识别的
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
该分区支持的特性,可以使用tune2fs的O选项进行调整
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super 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: 128016
Block count: 512000
Reserved block count: 25600
Free blocks: 465017
Free inodes: 127978
First block: 1
块大小
Block size: 1024
Fragment size: 1024
Reserved GDT blocks: 256
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 2032
Inode blocks per group: 254
Flex block group size: 16
Filesystem created: Fri Oct 2 11:34:24 2015
Last mount time: Fri Oct 2 12:21:12 2015
Last write time: Fri Oct 2 12:21:12 2015
Mount count: 3
Maximum mount count: -1
Last checked: Fri Oct 2 11:34:24 2015
Check interval: 0 (<none>)
Lifetime writes: 24 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 7718dfbb-c3fb-4f24-826c-47309b6d5d96
Journal backup: inode blocks
Journal features: (none)
Journal size: 8M
Journal length: 8192
Journal sequence: 0x00000015
Journal start: 1
以下是每个block组的信息:
Group 5: (Blocks 40961-49152) [INODE_UNINIT, ITABLE_ZEROED]
Checksum 0x1a56, unused inodes 2032
Backup superblock at 40961, Group descriptors at 40962-40963
Reserved GDT blocks at 40964-41219
块和inode的位图,用于查询空间的,指明该信息在哪个块中
一个位图块可以代表一个block组中所有块的使用信息
Block bitmap at 265, Inode bitmap at 281
Inode table at 1562-1815
7933 free blocks, 2032 free inodes, 0 directories, 2032 unused inodes
空闲的块是哪些
Free blocks: 41220-49152
空闲的inode有哪些
Free inodes: 10161-12192
Group 6: (Blocks 49153-57344) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
Checksum 0xe2c5, unused inodes 2032
Block bitmap at 266, Inode bitmap at 282
Inode table at 1816-2069
8192 free blocks, 2032 free inodes, 0 directories, 2032 unused inodes
Free blocks: 49153-57344
Free inodes: 12193-14224
dumpe2fs
-h: 仅查看超级块中保存的信息,也就是最上面的信息
调整mke2fs属性的指令:mke2fs在格式化分区后,除了块和inode大小相关信息不能修改,其他基本都可以:
tune2fs 后面跟哪一个分区设备
-l: 查看超级块中的信息
-L label: 设定卷标
-m: 预留管理员的空间百分比,默认为5
-j: 如果原来的文件系统为ext2, -j能够将其提升为ext3
-o [^]mount-options[,...]:设定其默认挂载选项
-O [^]feature[,...] :调整分区特性
可以man一下,查看选项对应的功能
After setting or clearing sparse_super, uninit_bg, filetype, or resize_inode filesystem features, e2fsck(8) must be run on the filesystem to return the filesystem to a consistent state.
文件系统检测:
fsck:
-t fstype
fsck -t ext4 /dev/sda3
-a: 自动修复错误
-r: 交互式修复错误
e2fsck:
-f: 强制检测
-y: 对问题自动回答为yes
交换分区:
虚拟内存,在linux上要求的必须是单独分区的
mkswap 对分区进行格式化,将分区创建为交换分区
-L label
swapon + /dev/somesd 这个是启用交换分区
-a: 启动所有使得交换分区
-p #: 指定优先级 #是个数字
swapoff
-a
cat /proc/meminfo 这个指令是查看当前内存使用信息,其中的SwapCached是当前内核的交换分区大小
GPT
DMA: Direct Memory Access
总结:fdisk, mke2fs, mkfs, blkid, e2label, dumpe2fs, tune2fs, fsck, e2fsck, mkswap, swapon, swapoff
标签:linux
原文地址:http://wukong0716.blog.51cto.com/10442773/1703826