3. OS이야기/ 01. Administration

[UNIX/LINUX] 파일시스템의 i-node 튜닝

OSSW(Open Source System SoftWare 2014. 7. 8. 21:24

 안녕하세요!


 오늘은 i-node 관련 파일시스템을 튜닝 방법을 알아보도록 하겠습니다.


 유닉스/리눅스 기반의 시스템 운영시, 파일시스템에 여유 공간이 있음에도 불구하고, 다음 아래와 같이 No space left on device 같은 메시지를 보는 경우가 있습니다


 일반적으로 No space left on device 메세지가 출력된다면 파일시스템의 사용 공간과 i-node 공간이 부족할 때 발생되는 메세지 입니다.


[root@ktdsoss01 tmp]# cp test.sh /applog

cp: cannot create regular file `/applog/test.sh': No space left on device


 먼저, 파일시스템 사용 현황을 df 명령어를 사용하여 체크해보면, 파일시스템의 사용 공간은 여유가 있지만, i-node 사용률은 100%로 더 이상 가용 공간이 없는 상태인 것을 확인 할 수 있습니다.


 아래와 같은 상황이라면, 해당 파일시스템의 I-node가 부족하여더 이상 파일 생성이 불가능 합니다.


[root@ktdsoss01 tmp]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg_sys-lv_root

                       30G  1.2G   27G   5% /

/dev/mapper/vg_sys-lv_usr

                       30G  3.4G   25G  13% /usr

/dev/mapper/vg_sys-lv_var

                       30G  1.1G   27G   4% /var

/dev/mapper/vg_sys-lv_home

                       30G  189M   28G   1% /home

/dev/xvda1             99M   50M   44M  54% /boot

tmpfs                  12G     0   12G   0% /dev/shm

/dev/mapper/vg_app01-lv_app

                       60G   12G   45G  20% /app

/dev/mapper/vg_app01-lv_applog

                       30G  9.0G   20G  33% /applog

 

[root@ktdsoss01 tmp]# df -i

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/mapper/vg_sys-lv_root

                     7864320   15949 7848371    1% /

/dev/mapper/vg_sys-lv_usr

                     7864320  167040 7697280    3% /usr

/dev/mapper/vg_sys-lv_var

                     7864320  175723 7688597    3% /var

/dev/mapper/vg_sys-lv_home

                     7864320     173 7864147    1% /home

/dev/xvda1             26104      62   26042    1% /boot

tmpfs                3145728       1 3145727    1% /dev/shm

/dev/mapper/vg_app01-lv_app

                     3932160   63189 3868971    2% /app

/dev/mapper/vg_app01-lv_applog

                     1966080 1966080       0  100% /applog

 

그럼, 해당 파일시스템 i-node의 가용 공간을 확보하기 위해서는 어떤 방법이 있을까요?

 

 가장 쉽게 할 수 있는 조치 방법으로는 직접 해당 파일시스템에서 rm 명령어로 파일들을 삭제하는 방법이 있습니다. 해당 파일시스템에서 rm 명령어로 삭제되는 파일 수 만큼 i-node는 증가하게 됩니다하지만, 직접 삭제하는 방법은 임시 조치 일 뿐, 빈번하게 i-node 사용률이 100% 도달한다면, 해당 파일시스템 튜닝을 고려해봐야 합니다


 파일시스템의 i-node를 늘리기 위한 튜닝 방법은 해당 파일시스템 재구성 작업을 통해 i-node 설정을 변경해야 함으로, 반드시 해당 파일시스템의 데이터는 별도의 공간에 백업을 해주셔야 합니다.

 

 파일시스템 튜닝은 다음 아래와 같은 방법으로 mkfs 명령어로  –i 옵션 설정 통해, i-node 개수를 변경 할 수 있습니다. inode_ratio 값 설정시 주의사항으로는 반드시 파일시스템의 blocksize 보다 작으면 안 된다는 사실입니다.

) mkfs –t ext4 –i inode_ratio 디바이스명


 여기서 잠깐, 파일시스템의 inode_ratio 값은 생성 단계에서 미부여시 default16384로 설정되어 생성되며, 다음 아래의 경로에서 직접 확인 할 수 있습니다


[root@ktdsoss01 tmp]# cat /etc/mke4fs.conf

[defaults]

        base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr

        blocksize = 4096

        inode_size = 256

        inode_ratio = 16384

 

그럼, 지금부터 직접 파일시스템 튜닝 작업을 진행해보도록 하겠습니다.

  

[root@ktdsoss01 tmp]# umount /applog

è  변경 대상 파일시스템을 umount 작업

 

[root@ktdsoss01 tmp]# mkfs -t ext4 -i 4096 /dev/mapper/vg_app01/lv_applog

mke4fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

7864320 inodes, 7864320 blocks

393216 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

240 block groups

32768 blocks per group, 32768 fragments per group

32768 inodes per group

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

        4096000

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or

180 days, whichever comes first.  Use tune4fs -c or -i to override.

è  mkfs 명령어의 –i 옵션을 사용하여 수행 후, 변경된 inode 관련 정보를 확인

 

[root@ktdsoss01 tmp]# mount -t ext4 /dev/mapper/vg_app01-lv_applog /applog

è  작업 대상의 파일시스템을 mount 작업

 

[root@ktdsoss01 tmp]# df -i

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/mapper/vg_sys-lv_root

                     7864320   15949 7848371    1% /

/dev/mapper/vg_sys-lv_usr

                     7864320  167040 7697280    3% /usr

/dev/mapper/vg_sys-lv_var

                     7864320  175723 7688597    3% /var

/dev/mapper/vg_sys-lv_home

                     7864320     173 7864147    1% /home

/dev/xvda1             26104      62   26042    1% /boot

tmpfs                3145728       1 3145727    1% /dev/shm

/dev/mapper/vg_app01-lv_app

                     3932160   63189 3868971    2% /app

/dev/mapper/vg_app01-lv_applog

                     7864320      11 7864309    1% /applog

è  최종 작업 후 변경된 i-node 개수 확인.

 

<작업 수행 결과 비교>

 

파일시스템 튜닝 전

파일시스템 튜닝 후

I-node 개수

1966080

7864320


 파일시스템의 튜닝 전/후 비교 결과, 파일시스템의 inode_ratio 설정 값이 (16384 -> 4096) 1/4로 변경

에 따라 파일시스템의 i-node 개수는 4 증가하는 것을 확인 할 수 있습니다.


 향후 수 많은 Log들이 발생하는 시스템 대상으로 운영 및 설계하시는 분들은 참고하시면 많은 도움이 

될 것 같습니다. 


by 이용배(14.07.08)