[ ¸®´ª½º - Storage ] ´ë·®ÀÇ ÆÄÀÏ(inode full ¸¸µé±â)À» »ý¼ºÇÏ´Â Åø ¹®ÀÇ

   Á¶È¸ 1362   Ãßõ 0    

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

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


감사합니다.



ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
±×³É touch ¸í·É¾î·Î ÇϽøé ÆÄÀÏ °¹¼ö¸¦ ´Ã¸®´Âµ¥ À¯¿ëÇÒ°Í °°³×¿ä.
ÆÄÀÏ»çÀÌÁ ÃÖ¼ÒÇؼ­ ÆÄÀÏ°³¼ö¸¦ ´Ã·Á¾ß ÆÄÀϽýºÅÛÀÌ Ã³¸®ÇÒ¼ö ÀÖ´Â ÆÄÀÏ°³¼ö ´É·ÂÀ» »ìÆ캼 ¼ö ÀÖ½À´Ï´Ù.

ex) vi inode_full_test.sh
--------------------------------
#!/bin/bash
for i in {1..100000000}; do
  touch "touch_me_file_$i"
  echo "counter : $i"
done
--------------------------------
º¸Åë ÀÌ·± Å×½ºÆ®´Â 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
     
µð½ºÅ© I/O°¡ ÀϾ´Â °Å¶ó¼­ ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ½á¼­ ±¸ÇöÇÑ´Ù°í Çصµ ´À¸±°Ì´Ï´Ù.
Èæ±â»ç 2023-11
touch¸¦ ·çÇÁµ¹¸®´Â ½© ½ºÅ©¸³Æ® ¸¸µå´Â°Ô Á¦ÀÏ ºü¸¦°Ì´Ï´Ù.
c·Î ½Ã½ºÅÛÄÝ È£ÃâÇÏ´Â ÇÁ·Î±×·¥ ¸¸µé¾î µ¹¸±¼öµµ ÀÖ°í¿ä.
ÇϳªÀÇ µð·ºÅ丮¿¡ ³Ê¹« ÆÄÀÏÀ» ¸¹ÀÌ ³ÖÀ¸¸é ´À·ÁÁø´Ù´Â ±Ûµµ Àֱ⿡ Çϳª ´ç 1000°³·Î Á¦ÇÑÀ» Çß½À´Ï´Ù.
https://www.2cpu.co.kr/QnA/822426?&page=470
SSD¿¡¼­´Â ÀÌ·± ÀÛ¾÷ÇÏ¸é ¾ÈµË´Ï´Ù. ¼ö¸í ÆÅÆÅ ÁÙ¾î¿ä.
HDD¿¡¼­ Å×½ºÆ®Çϼ¼¿ä.
È­¶õ 2023-11
ÇØ´ç OS¿¡¼­ inode limit´Â pre-define ¾ÈµÇ¾î ÀÖ³ª¿ä??

for() + touch ¸é ±Ý¹æ ½Ã½ºÅÛ »¸À»°Í °°Àºµ¥¿ä??
³× ´äº¯ ÁֽŠºÐµé °¨»çÇÕ´Ï´Ù.
nfs¸¦ ƯÁ¤ ¸¶¿îÆ® Æ÷ÀÎÆ®·Î ÁöÁ¤Çؼ­, ¹«»çÈ÷ ½ÃÇè ¿Ï·á ÇÏ¿´½À´Ï´Ù.

°Åµì °¨»çÇÕ´Ï´Ù.


óÀ½À¸·Î (238,629)
Á¦¸ñ
2CPU : ÆǸŠ01-16   174   ´ÙÅ©Àå¹Ì
2CPU : ÆǸŠ01-16   201   ´ÙÅ©Àå¹Ì
2CPU : »ýÈ° 2CPU 01-16   1786   ³ë¸»
2CPU : ÆǸŠ01-16   272   1Çгâ3¹Ý
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 01-16   236   ±è½ã
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 01-16   64   vopbkyao
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 01-16   273   NANDROID
2CPU : NAS 01-16   2042   ±è¹ÎöGC
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 01-16   424   annm
2CPU : ÆǸŠ01-15   318   1Çгâ3¹Ý
2CPU : ÆǸŠ01-15   241   1Çгâ3¹Ý
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 01-15   255   ÀÓ»óÇölsh
2CPU : ÀÚÀ¯°Ô½ÃÆÇ 01-15   236   ±×´ë
2CPU : ÆǸŠ01-15   95   ¿Ã¿þ¾î
2CPU : ÆǸŠ01-15   155   ¿Ã¿þ¾î