• 使用mkfs.ext4格式化大容量磁盘


    使用mkfs.ext4默认参数格式化磁盘后,发现格式化时间特别长,并且格式化会占用磁盘很大的空间。
    例如2TB的磁盘格式化会占用10分钟左右时间,并占用30G左右的磁盘空间。
    究其原因,原来inode会占用磁盘空间,每个inode占用256b大小空间。
    默认情况下,mkfs2fs会为每16kb的磁盘空间分配一个inode,
    格式化时系统根据磁盘大小,计算可以保存的文件个数,进而为inode保留空间。
    所以格式化大容量磁盘,系统会分配过多inode,为inode预留过多空间,导致磁盘空间占用特别大。


    例如:一个2Tb的磁盘,格式化时会出现以下信息

    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
    

      

    通过以上信息可以计算出磁盘格式化后inode占用的磁盘空间
    122101760 * 256 / 1024 / 1024 = 29810mb
    inode数量 122101760
    乘以
    每个inode占用的空间 256b
    除以
    1024 换算为kb
    再除以
    1024 换算为 mb
    通过以上计算可以得出结论:磁盘空间很大的磁盘使用默认参数格式化磁盘会占用大量磁盘空间,浪费磁盘空间。


    mkfs.ext4有参数-i,可以指定:多大磁盘空间分配一个inode

    man mkfs.ext4
     -i bytes-per-inode
    	Specify  the  bytes/inode ratio.  
    	mke2fs creates an inode for every bytes-per-inode bytes of space on the disk. 
    	The larger the bytes-per-inode ratio, the fewer inodes will be created.  
    	This value generally shouldn’t be smaller than the blocksize  of  the filesystem,  
    	since  in  that case more inodes would be made than can ever be used.  
    	Be warned that it is not possible to expand
    	the number of inodes on a filesystem after it is created, 
    	so be careful deciding the correct value for this parameter.
    

      

    增大-i参数,从而减小inode总数,可以减小inode占用的磁盘空间,减少磁盘浪费。

    例如:指定1m空间分配一个inode来格式化2TB磁盘

    mkfs.ext4 -i 1048576 -n /dev/sdc
    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
    

    通过以上信息可以计算出磁盘格式化后inode占用的磁盘空间

    1907840 * 256 / 1024 / 1024 = 465mb
    inode数量 1907840
    乘以
    每个inode占用的空间 256b
    除以
    1024 换算为kb
    再除以
    1024 换算为 mb
    通过更改-i参数,节省了29G空间。


    除了更改-i参加,也可以直接通过-T参数直接指定多大磁盘空间分配一个inode。

    mkfs.ext4 -T largefile -n /dev/sdc1
    mkfs.ext4 -T largefile4 -n /dev/sdc1

    largefile和largefile4对应的【多大磁盘空间分配一个inode】其实是在 /etc/mke2fs.conf 定义的。
    largefile 类型就是 1M 一个 inode
    largefile4 类型就是 4M 一个 inode

  • 相关阅读:
    Hbase与Maven工程的Spring配置笔记
    CentOS7.0+Hadoop2.7.2+Hbase1.2.1搭建教程
    利用Python进行博客图片压缩
    Qt下Armadillo矩阵函数库的添加
    Qt下Eigen矩阵函数库的添加
    OpenCV2.4.13+VS2013配置方法
    OpenCV2.4.13+Qt5.6.2配置方法
    异想家Win10系统安装的软件与配置
    异想家Win7系统安装的软件与配置
    STM32学习笔记:基础例子
  • 原文地址:https://www.cnblogs.com/micmouse521/p/8064568.html
Copyright © 2020-2023  润新知