This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:当许多小文件复制到 eMMC 分区时、它只能在 BBB 中使用29%的 eMMC 分区

Guru**** 2577385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/628493/linux-am3352-its-possible-to-use-only-29-of-emmc-partition-in-bbb-when-many-small-files-are-copied-to-emmc-partition

器件型号:AM3352

工具/软件:Linux

我使用的是 Beaglbone Black、microSD 卡上有来自 TI SDK 的预构建二进制文件  04.00.00.04。

然后、我将从 MicroSD 引导 BBB。

然后、我使用"partition_eMMC.sh"脚本对 eMMC 进行分区。 随附此帖子。

然后我安装了更大的分区(~900MB)并开始提取包含4K 大小文件的大 tar (~390MiB)。

一旦利用了29%的分区空间,tar 就无法进一步提取报告设备上没有剩余空间。

我在下面粘贴了 df -h 的输出、您可以看到仅使用了29%的分区。

root@AM335x-EVM:/home# df -h
文件系统 尺寸 已在
/dev/root 上使用可用使用率% 1.7G 1.5 G 68.5M 96%/devtmpfs
223.6M 4.0K 223.6M 0%/dev/tmpfs
248.1M 0 248.1M 0%/dev/shm
tmpfs 248.1M 17.5M 230.6M 7%/run
tmpfs 248.1M 0 248.1M 0%/sys/fs/cgroup
tmpfs 248.1M 0 248.1M 0%/tmp
tmpfs 16.0万 0 16.0M 0%/media/ram
tmpfs 50.0米 2.3m 47.7M 5%/var/volatile
/dev/mmcblk0p1 68.9M 740.0K 68.2M 1%/run/media/mmcblk0p1
/dev/mmcblk1p1 673.0M 454.1M 169.8M 73%/var/firmware
/dev/mmcblk1p3 99.6M 1.5米 90.6M 2%/mnt/extra
/dev/mmcblk1p2 975.9M 259.4M 649.3M 29%/mnt/mnttest

甚至不可能接触该分区中的文件、请参阅下面的

root@AM335x-EVM:/home# uname -a
Linux AM335x-EVM 4.9.28-geed43d1050 #1 preemeempt Wed Jun 28 17:20:01 EDT 2017 armv7l GNU/Linux
root@AM335x-EVM:/home#触摸/mnt/mnttest/ankur
:/mnt/mnttest/ankur:器件上没有剩余空间

可以按照以下步骤重复此测试。

在 Linux PC 中、使用附加的"generate_files"脚本生成大的 rootfs.tar.gz 文件。

我使用 了以下命令

generate_files.sh 4K 100000

输出为 rootfs.tar.gz

2.转接 partition_emmc.sh  

在 BBB 上运行它、该脚本将创建三个分区。 第二个分区为~900MB

3.在 eMMC 的第一个分区或 SD 卡上传输大 rootfs.tar.gz。

4.传输并运行脚本"script_TO_removefiles_and_extractar_bbb.sh"、并将参数作为大 rootfs.tar.gz 的路径

我使用以下命令运行了它

/home/script_to_removefiles_and_extracttar_bbb.sh /var/firmware/rootfs.tar.gz

while 脚本停止抱怨没有剩余空间,但分区上有可用空间。

我计算了方向上的文件数为65525、

root@am335x-evm:/home# ls -l /mnt/mnttest




/dev/mmcblk1p1 | wc -l 65525 root@am335x-evm:/home# blkid /dev/mmcblk1p3
/dev/mmcblk0p2:label="rootfs3" UUID ="b7c1f54c-9ee2-4e4f-a63a-decf7ffs02" type="bcpe4a1f3b5361de-4b5a130"
:/dev/mmcblk1p2 /dev/mmcblk0p1 

因此、它不会达到 ext4对每个目录的文件数量的限制。

参考文献: https://stackoverflow.com/questions/466521/how-many-files-can-i-put-in-a-directory 

现在、我无法理解为什么会出现此错误。  

是否有针对此错误的建议/更正/指导?

e2e.ti.com/.../0383.run_5F00_on_5F00_linux_5F00_pc.tar.gz

e2e.ti.com/.../to_5F00_run_5F00_on_5F00_bbb.tar.gz

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ankur、

    您能否尝试在/dev/mmcblk1p2分区上创建一个大小稍小的可用空间的文件、以检查显示的可用空间是否正确。 例如,转到/dev/mmcblk1p2分区并使用以下命令:

    DD if=/dev/zero of=test.img bs=1024 count=0 seek=600000

    然后执行 ls -l dh -h 并布置输出。

    BR

    Tsvetolin Shulev

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Tsvetolin:

    感谢您的回复、

    这是测试结果

    root@AM335x-EVM:~# mount /dev/mmcblk1p2 /mnt/mnttest
    / root@AM335x-EVM:~# ls
    root@AM335x-EVM:~ CD /mnt/mnttest /
    
    root@AM335x-EVM:/mnt/mnttest dd if =/dev/zero of=test.img bs=1024 count=0 seek=1024000
    0+0 records in
    0+0 records out
    root@am335x-evm /mnt/mnttest -rl -rl -l#
    根 1048576000六月28 20:42 test.img
    root@AM335x-evm:/mnt/mnttest df -h
    文件系统 尺寸 已在
    /dev/root 上使用可用使用率% 1.7G 1.5 G 68.5M 96%/devtmpfs
    223.6M 4.0K 223.6M 0%/dev/tmpfs
    248.1M 0 248.1M 0%/dev/shm
    tmpfs 248.1M 9.5m 238.6M 4%/run
    tmpfs 248.1M 0 248.1M 0%/sys/fs/cgroup
    tmpfs 248.1M 0 248.1M 0%/tmp
    tmpfs 16.0万 0 16.0M 0%/media/ram
    tmpfs 50.0m 288.0K 49.7M 1%/var/volatile
    /dev/mmcblk0p1 68.9M 740.0K 68.2M 1%/run/media/mmcblk0p1
    /dev/mmcblk1p3 725.6M 4.0K 725.6M 0%/run/media/mmcblk1p3
    /dev/mmcblk1p1 77.8m 512 77.8M 0%/run/media/mmcblk1p1
    /dev/mmcblk1p2 1021.0M 1000.0M 21.0M 98%/mnt/mnttest
    root@AM335x-EVM:/mnt/mnttest
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ankur
    是否要确保在运行脚本之前已删除 EMMC 上的所有文件? 我想知道这是否会起作用。 我将在 BBB 上尝试此操作、并让您知道结果??

    谢谢

    Mohsen
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 Ankur
    我拥有的.tar 文件大约为373MB、与您的文件类似、我不会遇到非常奇怪的错误。 我可以向您发送.tar 文件并查看您的 CNA 是否在您的系统上运行它

    根目录@AM335x-EVM:~# ls -l
    rw-r--r-- 1根 根 44833 Sep 25 19:48 echo
    rw-r--r-- 1根 根 156660705 9月25日19:51自由职业者
    -rwxr--r-- 1根 根 778 Sep 25 19:51 generate_files.sh
    -rwxr--r-- 1根 根 1156 9月25日19:49 partition_emmc.sh
    -rwxr--r-- 1根 根 559 Sep 25 19:51 recover_partitions.sh
    drwxr-xr-x 2 root 根 4096 Sep 25 19:48 root
    rw-r--r-- 1根 根 373258240 9月25日19:51 rootfs.tar
    rw-r--r-- 1根 根 335685957 Sep 25 19:50 rootfs.tar.gz
    -rwxr--r-- 1根 根 2408 9月25日19:49 script_to_removefiles_and_extracttar-working-original.sh
    -rwxr--r-- 1根 根 2482 9月25日19:48 script_to_removefiles_and_extracttar-working.sh
    -rwxr--r-- 1根 根 2410 9月25日19:49 script_to_removefiles_and_extracttar.sh
    -rwxr-xr-x 1根 根 785480 9月25日19:49 tcpdump
    drwxr-xr-x 2 root 根 4096 Sep 25 19:51测试
    根目录@AM335x-EVM:~编号
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想我已经回答了这个问题、

    我使用以下命令来格式化 eMMC 分区

    mkfs.ext4 -j -L $label $partition 

    现在、如果分区大小超过512MB mkfs.ext4将引用/etc/mke2fs.conf 并获取块大小和 inode 比率的"默认"值。

    对于小于512MB mkfs.ext4的任何分区、都将引用/etc/mke2fs.conf 并采用"small" fs_type、以便从中获取块大小和 inode 比率。

    当我使用 tune2fs 实用程序执行以下命令时、我发现了相同的结果。

    root@AM335x-EVM:~# tune2fs -l /dev/mmcblk1p2
    tune2fs 1.43-WIP (2015年5月18日)
    文件系统卷名称:上次
    安装在: 
    文件系统 UUID: 0a9d0c37-672f-42f3-9bc6-f2e85e97c9a9
    文件系统魔法编号:0xEF53
    文件系统版本号:1
    (动态)文件系统功能: has _dournal ext_attr resize_inode dir_index filetype extension flex_bg sparse_super large_file huize_file uninit_bg dir_nlink extra _isize
    文件系统标志: unsigned_directory_hash
    默认挂载选项:user_xattr ACL
    文件系统状态: 清除
    错误行为: 继续
    文件系统操作系统类型: Linux
    inode 计数: 65536
    块计数: 261888
    保留块计数: 13094
    自由块: 253349
    无 inode: 65525
    第一个块: 0
    块大小: 4096
    碎片大小: 4096
    个保留的 GDT 块:
    每组63个块: 每
    组32768个片段: 每
    组32768个 inode: 每个
    组8192个 inode 块:512
    个 Flex 块组大小:创建16
    个文件系统: 2017年3月30日01:06:34
    最后一次安装时间: 不适用
    上次写入时间: 2017年3月30日01:06:39
    日装数: 0
    最大安装计数: -1
    最后检查: 2017年3月30日01:06:34
    检查间隔: 0 ( )
    终身写入: 16MB
    保留块 uid: 0 (用户根目录)
    保留块 GID: 0 (组根)
    第一个 inode: 11
    inode 大小:256
    所需的额外 isize: 28
    所需的额外 isize: 28
    日记账 inode: 8
    默认目录哈希:half-MD4
    目录哈希种子: 51707e7c-29b8-49cd-BAFF-348c0431615d
    日志备份: inode 块
    

    如果观察到空闲 inode 计数,则会将其设置为"65525",这与我可以在分区中创建的文件数相匹配。

    这些问题引起了疑问、

     我可以通过使用-T 选项指定 FS_TYPE 来增加空闲 inode 的数量,但是选择小型 BLOCK_SIZE 和小型 inode 比率会产生什么影响?