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

   조회 2026   추천 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 231/5728
2014-05   5256245   정은준1
2015-12   1781208   백메가
2023-11   2089   화란
2023-11   2482   화정큐삼
2023-11   1528   inquisitive
2023-11   1505   pumkin
2023-11   1995   Rich
2023-11   1793   seoulmetro
2023-11   2895   atozztoa
2023-11   2496   SLALqHD
2023-11   2370   Sikieiki
2023-11   2027   전설속의미…
2023-11   2874   마법사오즈
2023-11   1483   밥알1김형근1
2023-11   3775   나스좋군
2023-11   2150   Caig
2023-11   2441   치킨좋아요
2023-11   2839   영산회상
2023-11   1827   샤멍
2023-11   1465   미담
2023-11   3686   느린닭
2023-11   2039   최창현