linux如何设置文件系统大小,浅淡linux文件系统的优化与调整

ext2/ext3文件系统的优化

文件系统存储原理:

如图示,/dev/sda2被很多block所填充;而block的大小是固定的,如图上的1K;这个block就是文件在磁盘上存储的最小单位。当某个文件不超过1K时,OS会为它分配一个block;当文件大于1K时,OS会连续分配相应大小的block给该文件。

一、根据块大小及文件大小优化

当然,这个block的大小是可调的,不过默认情况下,linux只支持三种block大小,分别为:1024/2048/4096byte;如果你而要更大的block就必须去修改你的文件系统及相应的内核模块。

如果系统中存放的文件都不大,那么相应的block就可以设小一点;如果系统中存放的文件较大,那么相应的block就应该弄大一点。

想一想,如果block很小而文件很大,那么一个大的文件就会被分成很多小块;这样在读写文件的时候就会产生很多额外的开销。反之,亦然!

这样,我们就需要针对文件的大小对block进行相应的调整,这就所谓的文件系统调优!

那么,怎样指定block的大小呢?就是在用mkfs对磁盘进行格式化的时候!命令如下:

mkfs.ext3

-b 1024 /dev/sdb2

这样,我们就在格式化的时候为/dev/sdb2指定了相应block的大小--1024byte

下面开始我们的实验:

两个linux分区,一个分区的block大小为1024,另一个block的大小为4096;看看在它们上面存储相同的文件会有什么不同!

GO----->

[root@novice ~]# fdisk

-l /dev/sdb

[root@novice ~]# mkfs.ext3

-b 1024 /dev/sdb5

[root@novice ~]# mkfs.ext3

-b 4096 /dev/sdb3

现在,我们来挂载刚刚格式化好的两个分区:

[root@novice /]# mount /dev/sdb3

/mnt/sdb3

[root@novice /]# mount /dev/sdb5

/mnt/sdb5

[root@novice /]# ls -l /mnt/sdb[35]

/mnt/sdb3:

total 16

drwx------ 2 root root 16384 Jul 17

16:26 lost+found

/mnt/sdb5:

total 12

drwx------ 2 root root 12288 Jul 17

16:23 lost+found

向刚挂载的两个分区写入相同的文件:

[root@novice /]# mkdir /mnt/sdb3/test

[root@novice /]# mkdir /mnt/sdb5/test

[root@novice /]# echo

"Hi">/mnt/sdb3/test/test.txt

[root@novice /]# echo

"Hi">/mnt/sdb5/test/test.txt

查看两个分区内相同内容文件的大小:

[root@novice /]# ls -lh

/mnt/sdb[35]/test/test.txt

-rw-r--r-- 1 root root 3

Jul 17 16:40 /mnt/sdb3/test/test.txt

-rw-r--r-- 1 root root 3

Jul 17 16:40 /mnt/sdb5/test/test.txt

[root@novice /]# ls -lh

/mnt/sdb[35]/test

/mnt/sdb3/test:

total 4.0K

-rw-r--r-- 1 root root 3 Jul 17 16:40

test.txt

/mnt/sdb5/test:

total 1.0K

-rw-r--r-- 1 root root 3 Jul 17 16:40

test.txt

#虽然都是三个字节,但占用的磁盘空间明显不一样!这是为什么呢?还记得我们在格式化分区的时候指定给每个分区的block的大小吗?!是的!就是那个指定大小的block在作怪啦!

再来看一下:

[root@novice /]# du -sh

/mnt/sdb[35]/test

8.0K/mnt/sdb3/test

2.0K/mnt/sdb5/test

#为什么会是8K和2K呢?因为目录也要占磁盘空间的啦!

#由上面的例子显然可得:当文件较小时,分配较大的block会浪费很大的磁盘空间!

二、根据节点及块数目优化

读写的数据都是存储在block里的,在读写的时候要根据block的编号来寻址;编号可以如上图所示。如,File1需要两个block,就分配两个节点给它,并在索引区(上图左边的那上部分,里面记录了文件的相关信息,如位置,节点等等)内做好相应的记录。这样,在读写的时候会寻址两次。

但是,如果我们把两个block做成一个节点呢?如下图:

如上图,File1此时在索引区内的节点编号为1,它包含了两个block。这样在读写的时候只会寻址一次;相比之下,读写性能是不是有所提高呢!

可以使用如下命令指定磁盘分区里每个节点所包含的block数目:

mkfs.ext3 -b 4096

-i 8192 /dev/sdb2

这样,/dev/sdb2里的每个节点就包含了两个block.

上面命令中-i参数与-b参数后接数字的商就是一个节点包含的block数目。

三、文件系统调整工具tune2fs

tune2fs:

-l 查看文件系统相关信息

-c 设置强制自检的挂载次数即挂载count次后强制自检

-i 设置强制自检的间隔时间即间隔n

day后强制自检

-m 保留块的百分比,percentage为整数

-j

将ext2文件系统转换为ext3文件系统(不过,现在ext2应该很少用了,呵呵)

下面,分别看看这些选项的应用:

-l

选项

[root@novice /]#tune2fs -l /dev/sdb1

tune2fs 1.41.12

(17-May-2010)

Filesystem volume

name:

Last mounted on:

Filesystem UUID:

6e4bad5e-a423-481a-bccf-cbf6c13fceef

Filesystem magic

number: 0xEF53

Filesystem

revision #: 1 (dynamic)

Filesystem

features: has_journal ext_attr resize_inode dir_index filetype

needs_recovery sparse_super

Filesystem flags:

signed_directory_hash

Default mount

options: (none)

Filesystem state:

clean

Errors behavior:

Continue

Filesystem OS

type: Linux

Inode count:

12824

Block count:

51200

Reserved block

count: 2560

Free blocks:

44649

Free inodes:

12811

First block:

1

Block size:

1024

Fragment size:

1024

Reserved GDT

blocks: 199

Blocks per group:

8192

Fragments per

group: 8192

Inodes per group:

1832

Inode blocks per

group: 229

Filesystem

created: Sun Jul 17 11:37:29 2011

Last mount time:

Sun Jul 17 16:20:30 2011

Last write time:

Sun Jul 17 16:20:30 2011

Mount count:

2

Maximum mount

count: 34

Last checked:

Sun Jul 17 11:37:29 2011

Check interval:

15552000 (6 months)

Next check after:

Fri Jan 13 11:37:29 2012

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: 0fbff785-d343-45b2-9685-ca4cc45bc604

Journal backup:

inode blocks

#怎么样,信息量?嘿嘿.....不过你可以用正则表达式过滤出你想要的东东

-c选项:

通过-l选项,我们看到

Mount count:

2

Maximum mount

count: 34

说明/dev/sdb1已经被挂载了两次,当达到最大挂载次数34时,将进行强制自检(只在重启或开机的时候)。接下来,我们用-c参数来更改强制自检的挂载次数:

[root@novice /]#tune2fs -c 3 /dev/sdb1

tune2fs 1.41.12

(17-May-2010)

Setting maximal

mount count to 3

[root@novice /]#

tune2fs -l /dev/sdb1 | grep -i

"mount count"

Mount count:

2

Maximum mount

count: 3

#很显然,不解释哈!

#如果你不想强制自检的话,可以将强制自检的挂载次数设为负数,那个挂载次数怎么也不会为负的吧!

[root@novice /]#tune2fs -c -1 /dev/sdb1

tune2fs 1.41.12

(17-May-2010)

Setting maximal

mount count to -1

[root@novice /]#

tune2fs -l /dev/sdb1 | grep -i

"mount count"

Mount count:

2

Maximum mount

count: -1

#这样/dev/sdb1永远不会进行强制自检啦,哈哈哈!

-i选项:

通过前面的-l选项,看到

Last checked:

Sun Jul 17 11:37:29 2011

Check

interval: 15552000 (6 months)

Next check after:

Fri Jan 13 11:37:29 2012

强制自检的间隔时间为6个月。

接下来,我们用-i参数来更改强制自检的挂载次数:

[root@novice /]#

tune2fs -l /dev/sdb1 | grep -i

"check"

Last checked:

Sun Jul 17 11:37:29 2011

Check interval:

86400 (1 day)

Next check after:

Mon Jul 18 11:37:29 2011

#如果不相自检,为设置为0

[root@novice /]#

tune2fs -l /dev/sdb1 | grep -i

"check"

Last checked:

Sun Jul 17 11:37:29 2011

Check interval:

0 ()

#so

easy 啦,嘿嘿

-m选项:

保留块的百分比

通过前面的-l选项,我们再次看到

Reserved block

count: 2560

保留块为2560个。默认时,这个保留块为分区大小的5%;只有root用户才能使用。我们可以用-m参数来调整,使释放出一定量的磁盘空间。

[root@novice /]#

tune2fs -m 1 /dev/sdb1

tune2fs 1.41.12

(17-May-2010)

Setting reserved

blocks percentage to 1% (512 blocks)

[root@novice /]#

tune2fs -l /dev/sdb1 | grep -i "reserved"

Reserved block

count: 512

Reserved GDT

blocks: 199

Reserved blocks

uid: 0 (user root)

Reserved blocks

gid: 0 (group root)

#保留块数量从2560变成了512啦!

好啦,今天先现到这里,嘿嘿

写得很心虚,热烈欢迎各位批评指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 修改def_window_animation_scale设置可能会影响GMS(Google Mobile Services)测试。 def_window_animation_scale是Android系统中用于设置窗口动画持续时间的系统设置。如果将其修改为非默认值,则可能会影响应用程序的性能和用户体验。例如,如果将其设置为较低的值,则窗口动画可能会变得过于,而如果将其设置为较高的值,则窗口动画可能会变得过于浓重。 GMS测试是Google为确保GMS认证设备的质量和用户体验而开发的测试。如果修改def_window_animation_scale设置可能会导致应用程序性能或用户体验受到影响,则GMS测试可能会失败。因此,在进行GMS测试之前,建议保留def_window_animation_scale的默认值。 ### 回答2: 修改def_window_animation_scale不会直接影响GMS测试,但可能会对测试结果产生一定影响。 def_window_animation_scale是Android设备的一个系统设置,用于控制窗口动画的缩放比例。修改该设置会改变窗口切换、打开和关闭动画的速度和流畅度。 在进行GMS测试时,测试人员通常会在测试设备上进行多个不同的测试,涵盖各种应用和功能的使用情况。在这个过程中,测试结果的准确性和可靠性非常重要。 如果我们修改了def_window_animation_scale的数值,可能会导致窗口动画的速度不再和默认设置一致。这可能会影响我们在测试过程中观察到的窗口切换、打开和关闭动画的效果。这些动画可能会变得过快或过慢,从而导致测试结果的偏差。 因此,在进行GMS测试时,我们通常建议将def_window_animation_scale保持在默认设置下,以确保测试结果的一致性和可比性。然而,如果我们明确知道修改了该设置不会对测试结果产生重大影响,并且需要测试与窗口动画相关的功能时,可以在这种情况下进行修改。 ### 回答3: 修改def_window_animation_scale参数不会直接影响GMS(Google Mobile Services)的测试。def_window_animation_scale是Android系统中的一个参数,控制着窗口动画的缩放比例。它的值可以设置为0(关闭动画)、0.5(默认值)或者1(开启动画),用于调整系统窗口动画的速度。 GMS测试是针对Android设备上预装的Google服务和应用进行的一系列兼容性和功能性测试,如Google Play商店、谷歌账户、Google Play服务等。这些测试是在独立的虚拟环境中进行,不会直接受到def_window_animation_scale参数的影响。 然而,修改def_window_animation_scale参数可能会间接影响GMS测试的结果。例如,如果将def_window_animation_scale值设置为0,关闭窗口动画,可能会影响到某些应用界面的显示效果,导致无法正确执行某些测试用例。因此,在进行GMS测试时,建议保持def_window_animation_scale参数的默认值或根据具体测试需求进行调整,以确保测试的准确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值