xfs 파일시스템에서 quota 설정하기
먼저 커널에서 xfs 파일시스템에 대해 쿼터 지원이 되야 됨.
(CentOS 4.7 에선 xfs와 xfs quota가 모두 기본으로 지원)
내가 테스트한 환경은
OS : CentOS4.7 ServerCD 32bit
Riad : 3ware 9650SE-8LP
HDD : Seagate 1.5TB * 8 Raid6 = 8.3TB
mkfs.xfs를 통한 파일시스템 생성은 ext 파일시스템과는 비교가 안되게 빠르다. 1초도 안걸리고 끝나 버린다. 허걱… 이게 제대로 된건가 할 정도로 번개처럼 지나가고 끝나버림. 그런데 그게 정상이다.
참고로, mkfs.ext3 를 통해 파일시스템을 생성하면 30분은 족히 걸린다.
ext3 파일시스템이 현재 안정적으로 지원가능한 최대 용량은 8TB인데(centos5.2 64bit에선 16TB도 지원 된다고 하지만 아직 검증이 안된듯 하고, 새로운 ext4파일시스템 한창 개발중이라 하니 EXT4에 대용량을 기대해 볼 수 밖에) xfs파일시스템은 단위도 생소한 엑사바이트급(100만테라급)이라고 한다.
ext3와 xfs 파일시스템은 hdparm 툴로 성능 체크를 해보면 큰 차이는 없는듯, 2년 전쯤의 KLDP글에서 어떤분은 xfs 파일시스템 튜닝을 안하면 성능이 떨어진다 했는데, 그사이 디폴트로 써도 좋게 다듬어 놓았나보다.. ext3의 경우 튜닝을 하지않아도 왠만한 환경에선 성능이 나오도록 되있듯 그런가 보다.
ext3
Timing cached reads: 20296 MB in 2.00 seconds = 9605.78 MB/sec
Timing buffered disk reads: 580 MB in 3.09 seconds = 234.56 MB/sec
xfs
Timing cached reads: 20296 MB in 2.00 seconds = 10164.79 MB/sec
Timing buffered disk reads: 580 MB in 3.09 seconds = 218.79 MB/sec
yum install xfsprogs kmod-xfs -y 를 통해 xfs 파일시스템을 커널 모듈형태로 설치 했다.
한가지 주의점은 위와 같이 설치를 하면 커널 2.6.9-78.0.13.EL을 설치 후 진행을 한다.
2009년 5월 11일 현재 xfs 커널모듈이 kmod-xfs-0.4-1.el4.2.6.9_78.0.13.EL 까지 만들어져 있어서
2.6.9-78.0.22.EL 커널보다 아래인 2.6.9-78.0.13.EL 커널이 설치가 되며 xfs kmod가 깔린다.
fstab에는
/dev/sda1 /home xfs noatime,nodev,noexec,nosuid,usrquota,grpquota 1 1
-> mount -o remount 를 통해서는 적용되지 않는다. umount / mount 가 필요하다.
파티션 타입은 확장 파티션임(parted를 이용한 GPT)
xfs_quota -x -c 'limit -g bsoft=300m bhard=350m testgroup' /home
이렇게 해서 제한 설정을 해 주고,
xfs_quota -x -c 'report -h' /home
라고 해보면,
Group quota on /home (/dev/hda6)
Blocks
Group ID Used Soft Hard Warn/Grace
---------- ---------------------------------
testgroup 0 300M 350M 00 [------]
이런식으로 출력된다.
xfs파일시스템은 ext2/3 파일시스템과 달리 쿼터DB파일(aquota.group, aquota.user)이 존재하지 않으며 메타데이터 형태로 존재하기 때문에 DB생성을 위한 quotacheck가 필요없다. 쿼터설정 후 작동이 잘 안되면 시스템 리부팅.
ext2/3 파일시스템에서 쿼터DB파일 생성시간도 mkfs에 버금가는 긴 시간을 필요로 한다. 그런데 xfs는 쿼터로만 마운트하면 끝이다.
xfs_quota라고만 쳐서, xfs 쿼터 콘솔에서
quota -g root 라고 해보면,
xfs_quota> quota -g root
Disk quotas for Group root (0)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/hda6 2277280 0 0 00 [--------] /home
라고 뜸.
quota -g testgroup이라고 하면,
xfs_quota> quota -g testgroup
Disk quotas for Group testgroup (888)
Filesystem Blocks Quota Limit Warn/Time Mounted on
/dev/sda1 205428 307200 358400 00 [--------] /data1
설정한 규칙을 지워주려면 remove옵션을..
xfs_quota -x -c 'remove' /home 이런식으로 변형시켜 해보면, 틀린 명령이라 나옴.
지우는 것은 좀더 연구를 해봐야 할 거 같고,
----> 차 후에 알게된 건데, 쿼터설정을 푸는것은 의외로 간단하다. 아래처럼 설정값을 0을 하면된다.
xfs_quota -x -c 'limit -g bsoft=0 bhard=0 testgroup' /home
쿼터설정과 연동되어서 클라이언트에 용량정보가 표시되는 아래 프로토콜에서 삼바에서는 제대로 용량 표기가 되지만, netatalk에선 파티션 전체 크기가 보인다(netatalk도 쿼터설정대로 용량이 다차면 데이터는 더이상 쓰진 못함. 그렇다 쳐도 클라이언트 유저들에게 혼돈만 초래함.)
samba-3.0.28-0.el4.9
netatalk-2.0.3
netatalk-2.0.4 beta2 에서 해결이 된듯 싶다. FIX: many compilation errors (solaris, AFS, Tru64, xfs quota…)
netatalk-2.0.4 beta2 정보는 아래사이트 참조
http://mac.softpedia.com/get/Utilities/Netatalk.shtml