[ 리눅스 - Storage ] 대량의 파일(inode full 만들기)을 생성하는 툴 문의

   조회 2037   추천 0    

리눅스에서 inode full 이 발생할 경우에 대비하여, 대량의 inode(작은 크기)을 만드는 시험을 하고자 합니다.

큰 사이즈 파일을 만드는 dd/fio/fallocate등은 검색이 되나 이러한 목적에 대한 툴 아시면 소개 부탁 드려 봅니다.


감사합니다.



짧은글 일수록 신중하게.
레인보우7 2023-11
그냥 touch 명령어로 하시면 파일 갯수를 늘리는데 유용할것 같네요.
파일사이즈를 최소해서 파일개수를 늘려야 파일시스템이 처리할수 있는 파일개수 능력을 살펴볼 수 있습니다.

ex) vi inode_full_test.sh
--------------------------------
#!/bin/bash
for i in {1..100000000}; do
  touch "touch_me_file_$i"
  echo "counter : $i"
done
--------------------------------
이일저일 2023-11
보통 이런 테스트는 python scrpt로 합니다만... 좀 느리군요. 10초에 60k개 정도 밖에 못 만드네요.
라즈베리파이4로 SD 카드 위에서 한 테스트라서 그럴 수 있지만... 생각보다 더 느리군요.

맨 아래 쪽에 스크립트가 있습니다.
x라는 폴더 아래 1000개의 폴더를 만들고 다시 1000개를 만들고 그 안에 1000개의 파일을 생성하는 식이니까... 총 100억개 정도의 파일을 만듭니다.
다 소진되면 파일 시스템이 사용불능이 될 수도 있으니 주의해서 사용하세요.

pi@raspberrypi:~/Test/inode_full $ date; df -hi; sleep 10; df -hi
Fri 24 Nov 18:57:45 KST 2023
df: /run/user/1000/doc: Operation not permitted
Filesystem    Inodes IUsed IFree IUse% Mounted on
/dev/root        1.9M  912K  963K  49% /
devtmpfs        410K  433  410K    1% /dev
tmpfs            475K    1  475K    1% /dev/shm
tmpfs            800K  758  800K    1% /run
tmpfs            475K    3  475K    1% /run/lock
/dev/mmcblk0p1      0    0    0    - /boot
tmpfs            95K    28  95K    1% /run/user/1000
df: /run/user/1000/doc: Operation not permitted
Filesystem    Inodes IUsed IFree IUse% Mounted on
/dev/root        1.9M  972K  902K  52% /
devtmpfs        410K  433  410K    1% /dev
tmpfs            475K    1  475K    1% /dev/shm
tmpfs            800K  758  800K    1% /run
tmpfs            475K    3  475K    1% /run/lock
/dev/mmcblk0p1      0    0    0    - /boot
tmpfs            95K    28  95K    1% /run/user/1000
pi@raspberrypi:~/Test/inode_full $ cat inode_full.py
#!/usr/bin/python3

import os

os.mkdir('x')
for x in range(1000):
    x_dir = f'x/{x:05}'
    os.mkdir(x_dir)
    for y in range(1000):
        y_dir = f'/{y:05}'
        os.mkdir(x_dir + y_dir)
        for z in range(1000):
            with open(x_dir + y_dir + f'/{z:05}', 'w') as f:
                pass
     
엠브리오 2023-11
디스크 I/O가 일어나는 거라서 어떤 프로그래밍 언어를 써서 구현한다고 해도 느릴겁니다.
흑기사 2023-11
touch를 루프돌리는 쉘 스크립트 만드는게 제일 빠를겁니다.
c로 시스템콜 호출하는 프로그램 만들어 돌릴수도 있고요.
이일저일 2023-11
하나의 디렉토리에 너무 파일을 많이 넣으면 느려진다는 글도 있기에 하나 당 1000개로 제한을 했습니다.
https://www.2cpu.co.kr/QnA/822426?&page=470
엠브리오 2023-11
SSD에서는 이런 작업하면 안됩니다. 수명 팍팍 줄어요.
HDD에서 테스트하세요.
화란 2023-11
해당 OS에서 inode limit는 pre-define 안되어 있나요??

for() + touch 면 금방 시스템 뻗을것 같은데요??
네 답변 주신 분들 감사합니다.
nfs를 특정 마운트 포인트로 지정해서, 무사히 시험 완료 하였습니다.

거듭 감사합니다.


QnA
제목Page 233/5730
2015-12   1790475   백메가
2014-05   5265502   정은준1
2013-01   5729   문어머리
2018-01   4357   늘파란
2009-11   12331   씨형
2013-01   5810   김준유
2016-11   6141   케리스
2021-10   1977   IRIX6530
2023-05   2398   나스초보에요
2014-08   4108   김건우
2023-05   1673   민경열
2013-01   6429   2CPU최주희
2019-03   690   어흥씨
2014-09   10639   한효석
2018-01   4671   퍼싱글
2020-06   3553   seru
2016-01   5568   라온제나
2023-06   1766   허어
2016-12   7386   큰고양이
2014-09   11372   천외천oo노…
2019-04   4626   버팔로윙
2013-03   12699   디스토리