对linux系统4T硬盘分区

使用parted工具:

yum install parted

1

2

3

4

5

6

7

8

9

10

11

parted /dev/sdb //选择硬盘

 

GNUParted 2.3Using /dev/sdbWelcome to GNU Parted! Type 'help' to view a lis ofcommands。

(parted) mklabel gpt //类型GPT

 

Warning: The existing disk label on /dev/sdb will be destroyedand all data on this disk will be lost. Do you want to continue?

Yes/No? y //确定

(parted) mkpart prinmary 1 -1 //将硬盘分成一个分区

(parted) print //查看

(parted) quit //退出Information: You may need to update /etc/fstab.

 

cat /proc/partitions | grep sdb1

8       49 3907016704 sdb1

 

mkfs.ext4 /dev/sdb1 //格式化文件系统为ext4

 

好了,那么是什么原因导致格式化这个 2T 要 8 分钟,并一下用掉 30G 呢?答案是 inode 数量。在 Linux 的文件系统中,一个文件对应一个 inode。一个 inode 大小现在默认值是 256 字节。当然 256 字节是记录不了大文件所有数据地址的,于是有间接块,间接块就是……呃,总之就是

有多少个 inode 就能存多少个文件,无论文件有多大,而一个 inode 要 256 字节。

而 inode 数量是由格式化程序(这里就是 mkfs.ext4)根据自动算出来的。默认是 16K 一个 inode也就是说,就算你在这个分区全是 16K 小的文件,都有足够数量的 inode 使用。

但问题是,对于我这种拿来当仓库用的分区,不可能全是 16K 的文件呀,高清电影和光盘映像都是上 G 的东西了。上面说过,一个文件要 inode,就算这个分区都塞满了,肯定还有很多 inode 没被使用,明显是浪费掉了。

扯了这么多还是在个实际例子吧,就拿我这个 2T 新硬盘为例。格式化时会输出一些信息

 
$ sudo mkfs.ext4 -n /dev/sdc1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=1 blocks, Stripe width=0 blocks

122101760 inodes, 488378368 blocks

24418918 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

14905 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000, 214990848

看到有 122101760 个 inodes 吧,一个 inode 占256字节,那么换算成 M 单位是:(122101760 * 256) / (1024 ** 20 = 29810M,差不多 30G 啊!

警告!警告!严重警告! 上面的命令怎么多了个 -n 参数?-n 参数表示模拟运行,但不格式化,这样可以看不同的格式化参数会有什么效果。如果没有这个参数,那就真的格式化了。所以对有数据的分区测试时千万要记得加上 -n 参数!下面我都带上这个参数。

但是运行 mkfs.ext4 需要 root 权限,漏了 -n 太危险,可以用 tune2fs 查看文件系统各种信息。

sudo tune2fs -l /dev/sdc1

找 Inode count 一行。

man 一下 mkfs.ext4,发现有两个参数可以制定 inode 数量

  • -i bytes-per-inode:多少个字节一个 inode
  • -N number-of-inodes:直接制定 inode 数量

默认 16k 一个 inode 相当于

sudo mkfs.ext4 -i 16384 -n /dev/sdc

把这个数字加大了就行了,最好是 1024 的倍数。比如 1M,即 1048576 字节。

sudo mkfs.ext4 -i 1048576 -n /dev/sdc

其实在 /etc/mke2fs.conf 定义了一些默认值,可以用 -T 来指定类型,比如 largefile 类型就是 1M 一个 inode,上一个命令相当于

sudo mkfs.ext4 -T largefile -n /dev/sdc

还有一个 largefile4,4M 一个 inode。不过比 largefile 才少了 300M,对于 2T 来说小意思了,没必要省,万一小文件过多 inode 不够呢?

于是

$ sudo mkfs.ext4 -T largefile -n /dev/sdc1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=1 blocks, Stripe width=0 blocks

1907840 inodes, 488378368 blocks

24418918 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

14905 block groups

32768 blocks per group, 32768 fragments per group

128 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000, 214990848

还有 1907840 个 inode,可以保存 1907840 个文件,真够了,估计也难用满。(1907840 * 256) / (1024 ** 2) = 465M, 省出 29810 - 465 = 29345M,29G!十来部高清了。

格式化也只需半分钟,占用 700M 左右,因为还有日志其它什么的,过度优化没必要了,控制在 1G 内我觉得够了

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值