mkfs.ext3 是最常用的命令之后. 跟他同一效果的命令是mkfs -t ext3 都将会把指定分区格式化为ext3格式。
执行此命令之后,请确定你要格式化的分区已经没有重要数据,否则不要轻易执行它。
ext3文件系统是linux下最常用的文件系统格式,比ext2多了日志记录功能,牺牲了一点空间利用率,换来了数据的安全.
命令使用,比如我们用fdisk /dev/sda 给磁盘先分了一个分区/dev/sda5 分区完记得执行partprobe将分区信息写入内核.
此时必须把分区格式化之后,才可以挂载到文件系统.
mkfs.ext3 /dev/sda5 格式化完毕之后,就可以正常挂载了 mount /dev/sda5 /data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这个命令可是我们进行硬盘优化的最基本命令之一,下面简单介绍一些关于磁盘优化的信息.
mkfs -t ext3 /dev/sda5
mkfs.vfat /dev/sdb2
mount -t vfat /dev/sdb2 /sdb2
文件系统的优化:
mkfs.ext3 -b 1024 /dev/sda
文件的大小来决定数据块的大小
文件很大,但是数据块很小,影响读取的速度
文件很小,但是数据块很大,浪费数据块
mkfs.ext3 -b 1024 -i 2048 -m 1 /dev/sdb6
tune2fs -l /dev/sdb6
tune2fs -i 2 /dev/sdb5 变成两天
tune2fs -c 3 /dev/sdb5 次数
格式化时创建block。文件系统的存储原理,block size:1k.2k.4k
mkfs.ext3 -b 1024 /dev/sdb1
比较不同的block size对磁盘使用的影响:
[root@rhel /]# mkfs.ext3 -b 1024 /dev/sdb1
[root@rhel /]# mkfs.ext3 -b 4096 /dev/sdb2
[root@rhel /]# mount /dev/sdb1 /mnt/d1
[root@rhel /]# mount /dev/sdb2 /mnt/d2
[root@rhel /]# mkdir /mnt/d1/dir
[root@rhel /]# mkdir /mnt/d2/dir
[root@rhel /]# echo "yliang">/mnt/d1/dir/test
[root@rhel /]# echo "yliang">/mnt/d2/dir/test
[root@rhel /]# ls -lh /mnt/d[12]
/mnt/d1:
总用量14K
drwxr-xr-x 2 root root 1.0K 4月4 14:36 dir
drwx------ 2 root root 12K 4月4 14:20 lost+found
-rw-r--r-- 1 root root 7 4月4 14:29 test
/mnt/d2:
总用量24K
drwxr-xr-x 2 root root 4.0K 4月4 14:36 dir
drwx------ 2 root root 16K 4月4 14:21 lost+found
-rw-r--r-- 1 root root 7 4月4 14:29 test
可以观察到两个dir目录文件大小不同,一个是1k另一个是4k,这就是因为两个分区的block size不同。
[root@rhel /]# ls -lh /mnt/d[12]/dir/test
-rw-r--r-- 1 root root 7 4月4 14:36 /mnt/d1/dir/test
-rw-r--r-- 1 root root 7 4月4 14:36 /mnt/d2/dir/test
两个test文件都是7字节
[root@rhel /]# du -sh /mnt/d[12]/dir
2.0K /mnt/d1/dir 一块是1k,test和dir两个文件就是2k
8.0K /mnt/d2/dir 一块是4k,test和dir两个文件就是8k
统计两个目录的大小是不一样的。
索引节点:
每个节点使用多少个block数据块
mkfs.ext3 -b 4096 -i 8192 /dev/sdb1 每两个block编一个号
[root@rhel ~]# mkfs.ext3 -b 4096 -i 4096 /dev/sdb1
[root@rhel ~]# mkfs -t ext3 -b 4096 -i 8192 /dev/sdb2
[root@rhel ~]# e2label /dev/sdb1
[root@rhel ~]# e2label /dev/sdb2
[root@rhel ~]# mount LABEL=d1 /mnt/d1
[root@rhel ~]# mount LABEL=d2 /mnt/d2
这里表面上是看不出什么的,要使用tune2fs来查看,这个工具是用来查看ext2/ext3文件系统属性的。
[root@rhel ~]# tune2fs -l /dev/sdb1 |more
tune2fs 1.35 (28-Feb-2004)
Filesystem volume name: d1
Last mounted on: <not available>
Filesystem UUID: 226763f8-23e4-43ae-8ee8-6268b8b4ca03
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal resize_inode filetype needs_recovery spars
e_super large_file
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 25600
Block count: 25596
Reserved block count: 1279
Free blocks: 23754
Free inodes: 25589
First block: 0
Block size: 4096
Fragment size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 25600
Inode blocks per group: 800
Filesystem created: Fri Apr 4 15:20:27 2008
Last mount time: Fri Apr 4 15:26:55 2008
Last write time: Fri Apr 4 15:26:55 2008
Mount count: 1
Maximum mount count: 33
Last checked: Fri Apr 4 15:20:27 2008
Check interval: 15552000 (6 months)
Next check after: Wed Oct 1 15:20:27 2008
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Journal inode: 8
Default directory hash: tea
Directory Hash Seed: 2dffdd47-c0fc-47a1-8af4-e3e906269805
Journal backup: inode blocks
这两条信息就是
Inode count: 25600
Block count: 25596
保留块:是为管理员保留的磁盘管理空间,为防止磁盘空间剩余太少以致管理员无法编辑配置文件而设置的,默认是总数据块的
5%。
用tune2fs -l /dev/sdb1查看保留块信息
[root@rhel ~]# tune2fs -l /dev/sdb1 |grep Reserved
Reserved block count: 5119
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
mkfs.ext3 -b 4096 -i 8192 -m 2 /dev/sdb1
设置保留块的数量占总数的2%。再用tune2fs查看
调整ext2/ext3文件系统
tune2fs是一个调整ext2/ext3文件系统的工具。
-l <device> 查看文件系统信息
-c <count> 设置强制自检的挂载次数
-i <n day> 设置强制自检的间隔时间
-m <percentage> 保留块的百分比
-j 将ext2文件系统转换为ext3格式
例:-c
没挂载过的分区挂载次数为0,最大34
tune2fs -l /dev/sdb1
Mount count: 0
Maximum mount count: 34
挂载后再查看
mount /dev/sdb1 /mnt/d1
tune2fs -l /dev/sdb1
Mount count: 1
Maximum mount count: 34
挂载过1次了,达到34的时候就会强制自检
-c就是来改变这个最大次数的
[root@rhel ~]# tune2fs -c 2 /dev/sdb1
tune2fs 1.35 (28-Feb-2004)
Setting maximal mount count to 2
[root@rhel ~]# tune2fs -l /dev/sdb1 |grep -i "mount count"
Mount count: 1
Maximum mount count: 2
这个值只在系统启动过程中起作用
把最大值设为负值就永远不会自检了
tune2fs -c -1 /dev/sdb1
-i <n day> 设置强制自检的间隔时间
tune2fs -l /dev/sdb1
Check interval: 15552000 (6 months)默认的间隔是6个月
如果不自检可以把-i 设置为0
如果这样:tune2fs -c -1 -i 0 /dev/sdb1挂载次数和时间都不能让它自检了,要想自检只能手工的fsck了
-m <percentage> 保留块的百分比
[root@rhel ~]# tune2fs -m 2 /dev/sdb2
tune2fs 1.35 (28-Feb-2004)
Setting reserved blocks percentage to 2 (532 blocks)
-j 将ext2文件系统转换为ext3格式
[root@rhel ~]# df -T
/dev/sdb2 ext2 103129 1550 96255 2% /mnt/d2
umount /dev/sdb2
tune2fs -j /dev/sdb2
mount /dev/sdb2
ext3不能被转换为ext2的,但是可以把ext3类型的强制挂载为ext2的,这时不会有日志
mount -t ext2 /dev/sdb1
文件系统检查工具
fsck和e2fsck[有点危险,识别ext2和ext3上有误差,尽量不用]
fsck是检查文件系统完整性的工具,并自动修复。
fsck的两种用法:
用法一:fsck -t ext2 /dev/sdb1
用法二:fsck.ext2 /dev/sdb1
这样手动运行时,如果文件系统上有错误,会部修复不修复yes or no,如果想全自动修复
fsck.ext2 -y /dev/sdb1这样就自动回答了yes
开机时会自动运行它就是/etc/fstab 中的最后一个参数