오늘은 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 값은 생성 단계에서 미부여시 default로 16384로 설정되어 생성되며, 다음 아래의 경로에서 직접 확인 할 수 있습니다.
[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)
'3. OS이야기 > 01. Administration' 카테고리의 다른 글
L4 mode 비교 (Proxy vs. DSR) 및 Linux에서 L4모드 변경(Proxy -> DSR) 방법 (0) | 2014.07.29 |
---|---|
yum을 이용한 rpm 패키지 다운로드 (0) | 2014.07.29 |
[UNIX/LINUX] inode로 파일 삭제하기 (0) | 2014.07.04 |
Yum 명령어 기본 사용 정리 (0) | 2014.06.30 |
Crontab 설정하기 (0) | 2014.06.30 |