top

λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

IT/λ¦¬λˆ…μŠ€(CentOS)

λ¦¬λˆ…μŠ€ μΏΌν„°(Quota)

μΏΌν„°(Quota)λž€?

μΏΌν„°λž€ 파일 μ‹œμŠ€ν…œλ§ˆλ‹€ μ‚¬μš©μžλ‚˜ 그룹이 생성할 수 μžˆλŠ” 파일의 μš©λŸ‰κ³Ό 개수λ₯Ό μ œν•œν•˜λŠ” 것. λ¦¬λˆ…μŠ€λŠ” μ—¬λŸ¬λͺ…μ˜ μ‚¬μš©μžκ°€ λ™μ‹œμ— μ ‘μ†ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλŠ”λ° λ§Œμ•½ AλΌλŠ” μ‚¬μš©μžκ°€ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•  λ•Œ, 루트(/) 파일 μ‹œμŠ€ν…œμ— 큰 νŒŒμΌμ„ 계속 μƒμ„±ν•΄μ„œ ν•˜λ“œλ””μŠ€ν¬κ°€ 꽉차면 μ‹œμŠ€ν…œ 전체가 κ°€λ™λ˜μ§€ μ•Šκ²Œ λœλ‹€. μ΄λŸ°μƒν™©μ„ λŒ€λΉ„ν•˜κΈ° μœ„ν•΄ 각 μ‚¬μš©μžλ³„λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” μš©λŸ‰μ„ μ œν•œν•΄μ•Όν•œλ‹€. μ΄κ²ƒμ΄ λ°”λ‘œ μΏΌν„°!



μΏΌν„° μ„€μ •ν•˜κΈ°

λ¨Όμ € μΏΌν„° λͺ…λ Ήμ–΄λ₯Ό μ•Œκ³ κ°€μž.

β–Ά edquota    -    μΏΌν„°(ν• λ‹ΉλŸ‰)λ₯Ό μ„€μ •ν•˜λŠ” λͺ…λ Ή

μ˜΅μ…˜

- u [μ‚¬μš©μž] : μ‚¬μš©μžμ˜ ν• λ‹ΉλŸ‰μ„ μˆ˜μ •

- g [κ·Έλ£Ή] : 그룹의 ν• λ‹ΉλŸ‰μ„ μˆ˜μ •

- p [λ³΅μ‚¬λŒ€μƒ] [μ μš©λŒ€μƒ] : [λ³΅μ‚¬λŒ€μƒ]에 μ„€μ •λœ ν• λ‹ΉλŸ‰μ„ λ³΅μ‚¬ν•΄μ„œ [μ μš©λŒ€μƒ]에 μ μš©ν•¨

ex) edquota -p -u 튀립 λ²šκ½ƒ : μ‚¬μš©μžμΈ 튀립의 ν• λ‹ΉλŸ‰μ„ λ²šκ½ƒμ—κ²Œλ„ μ μš©ν•¨

- t : grace(μœ μ˜ˆκΈ°κ°„(μ•„λž˜μ—μ„œ μ„€λͺ…ν•˜κ² λ‹€))값을 μˆ˜μ •. [λ‹¨μœ„: days, hours, minutes, seconds]


β–Ά quotacheck    -    νŒŒμΌμ‹œμŠ€ν…œμ—μ„œ μΏΌν„° κ΄€λ ¨ 체크λ₯Ό ν•˜λŠ” λͺ…λ Ή(μ„€μ •ν•œ μΏΌν„°κ°€ μ‹€μ œλ‘œ 적용됨)

μ˜΅μ…˜

- a(all) : λͺ¨λ“  파일 μ‹œμŠ€ν…œμ„ 체크

- u(user) : μ‚¬μš©μž μΏΌν„° κ΄€λ ¨ 체크

- g(group) : κ·Έλ£Ή μΏΌν„° κ΄€λ ¨ 체크

- m(no-remount) : 재마운트 μƒλž΅

- n(use-first) : 첫 번째 κ²€μƒ‰λœ 것을 μ‚¬μš©

- p(print-state) : 처리 κ²°κ³Όλ₯Ό 좜λ ₯

- v(Verbose) : 파일 μ‹œμŠ€ν…œμ˜ μƒνƒœλ₯Ό λ³΄μ—¬μ€Œ


β–Ά repquota    -    μ‚¬μš©μžλ³„ ν˜„μž¬ μ‚¬μš©λŸ‰μ„ 확인할 수 μžˆλŠ” λͺ…λ Ή

μ˜΅μ…˜

- a : /etc/filesystem 에 μžˆλŠ” λͺ¨λ“  νŒŒμΌμ‹œμŠ€ν…œμ— κ΄€ν•œ ν• λ‹ΉλŸ‰μ„ 좜λ ₯

- c : 결과물을 콜둠으둜 λΆ„λ¦¬ν•˜μ—¬ 좜λ ₯

- g : κ·Έλ£Ή ν• λ‹ΉλŸ‰λ§Œ 좜λ ₯

- l : κΈ΄ 이름도 좜λ ₯될 수 있게 μ„€μ •. λ””ν΄λ“œλŠ” 9μžμ—μ„œ μ ˆλ‹¨ν•˜λŠ”λ° 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ 전체 μ‚¬μš©μž 이름을 λ³Ό 수 μžˆλ‹€.

- u : μ‚¬μš©μž ν• λ‹ΉλŸ‰λ§Œ 좜λ ₯

- v : ν• λ‹ΉλŸ‰ μš”μ•½ μ•žμ— 해더행 좜λ ₯



이제 μ‹€μŠ΅μ— λ“€μ–΄κ°€λ³΄μž. 참고둜 λ‚˜λŠ” μ‹€μŠ΅μ„ μœ„ν•΄ 가상머신에 μƒˆλ‘œμš΄ ν•˜λ“œλ””μŠ€ν¬(1G)λ₯Ό μž₯μ°©ν•΄μ„œ /userHome 디렉터리에 λ§ˆμš΄νŠΈν–ˆλ‹€.

​

🌷1.

λ¨Όμ € μΏΌν„°λ₯Ό μ μš©ν•  μ‚¬μš©μžλ₯Ό μƒμ„±ν•œλ‹€.




🌷2.

λ§ˆμš΄νŠΈμ— κ΄€λ ¨λœ /etc/fstab νŒŒμΌμ„ μ—΄μ–΄ μΏΌν„°λ₯Ό ν• λ‹Ήν•  νŒŒμΌμ‹œμŠ€ν…œ 행에 , usrjquota=aquota.user, jqfmt=vfsv0 λ₯Ό μΆ”κ°€ν•˜μž.

​


그리고mount --options remount /userHome을 μž…λ ₯ν•΄ λ‹€μ‹œ λ§ˆμš΄νŠΈν•œλ‹€. /userHome은 μΏΌν„°λ₯Ό μ μš©ν•  ν•˜λ“œλ””μŠ€ν¬λ₯Ό λ§ˆμš΄νŠΈν•œ λ””λ ‰ν„°λ¦¬μ˜ 이름이닀. μ‚¬μš©μžμ— 따라 이름이 λ‹€λ₯Ό 수 μžˆμœΌλ‹ˆ μ•Œλ§žκ²Œ μž…λ ₯ν•˜μž.


mountλͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜λ©΄ μœ„μ²˜λŸΌ μž₯μΉ˜κ°€ μΏΌν„°μš©μœΌλ‘œ 마운트된 것을 확인할 수 μžˆλ‹€.

​




​

🌷3.

μΏΌν„°λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μΏΌν„° DBλ₯Ό μƒμ„±ν•΄μ•Όν•œλ‹€. μ•„λž˜ 그림처럼 λͺ…λ Ήμ–΄λ₯Ό μˆœμ„œλŒ€λ‘œ μž…λ ₯ν•˜μž.

1
2
3
4
5
6
7
8
9
cd /userHome
quotaoff -avug
quotacheck -augmn
rm -rf aquota.*
quotacheck -augmn
touch aquota.user aquota.group
chmod 600 quota.*
quotacheck -augmn
quotaon -avug
cs



🌷4.

DB생성 ν›„μ—λŠ” μ‚¬μš©μžλ³„λ‘œ 곡간을 ν• λ‹Ήν•΄μ€€λ‹€.
edquota -u john을 μž…λ ₯ν•˜λ©΄ μ•„λž˜ 그림처럼 λ‚˜μ˜¬ 것이고 john의 ν• λ‹ΉλŸ‰μ„ νŽΈμ§‘ν•  수 μžˆλ‹€. viνŽΈμ§‘κΈ°μ™€ λ™μΌν•˜λ‹€.

​


각 μ—΄μ˜ 의미λ₯Ό μ•Œμ•„λ³΄μž.

  • [Filesystem] : μ‚¬μš©μžλ³„ μΏΌν„°λ₯Ό ν• λ‹Ήν•˜λŠ” 파일 μ‹œμŠ€ν…œ.(μΏΌν„°λ₯Ό μ μš©ν•  ν•˜λ“œλ””μŠ€ν¬)

  • [blocks] : ν˜„μž¬ μ‚¬μš©μžκ°€ μ‚¬μš©ν•˜λŠ” 블둝(KB). μœ„ κ·Έλ¦Όμ—μ„œ 28이라고 λ‚˜μ™€μžˆμœΌλ―€λ‘œ ν˜„μž¬ john은 28KBλ₯Ό μ‚¬μš©ν•œλ‹€λŠ” 의미.

  • [soft], [hard] : blocks에 λŒ€ν•œ μ†Œν”„νŠΈ ν•œλ„μ™€ ν•˜λ“œ ν•œλ„. γ€Šμ‹€μ œμ‚¬μš©κ°€λŠ₯ ν• λ‹ΉλŸ‰ <= μ†Œν”„νŠΈν•œλ„γ€‹μ΄μ§€λ§Œ, μ†Œν”„νŠΈ ν•œλ„λ₯Ό λ„˜μ–΄ γ€Šμ†Œν”„νŠΈν•œλ„ < ν˜„μž¬μ‚¬μš©λŸ‰ < ν•˜λ“œν•œλ„γ€‹μ΄ κ΅¬κ°„κΉŒμ§€λ„ μ‚¬μš©ν•  수 μžˆλ‹€. λ‹€λ§Œ, 이 ꡬ간은 μ‚¬μš©ν•  수 μžˆλŠ” κΈ°κ°„(μœ μ˜ˆκΈ°κ°„)이 μ •ν•΄μ Έμžˆμ–΄, 기간이 λ„˜μ–΄κ°€λ©΄ 이 ꡬ간에 μžˆλŠ” νŒŒμΌμ€ μ‚¬μš©ν•  수 μ—†λ‹€. 0μ΄λΌλŠ” 것은 ν˜„μž¬ ν•œλ„κ°€ μ„€μ •λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λŠ” 뜻. 

  • [inodes] : inodes의 개수(파일의 개수) ν˜„μž¬ john은 7개의 νŒŒμΌμ„ μ‚¬μš©ν•˜κ³  μžˆλ‹€λŠ” 뜻.

  • [soft], [hard] : inodes에 λŒ€ν•œ μ†Œν”„νŠΈ ν•œλ„μ™€ ν•˜λ“œ ν•œλ„. 


이제 blocks 뢀뢄에 ν•œλ„λ₯Ό κ±Έμ–΄λ³Ό 것이닀. (johnμ‚¬μš©μžμ— νŒŒμΌμ„ μΆ”κ°€λ‘œ μƒμ„±ν•΄μ„œ μœ„ κ·Έλ¦Όκ³Ό blocks 값이 λ‹€λ₯Έλ° μ΄λŠ” λ¬΄μ‹œν•˜μž) μ†Œν”„νŠΈ ν•œλ„μ—λŠ” 10MB, ν•˜λ“œ ν•œλ„μ—λŠ” 15MBλ₯Ό μž…λ ₯ν•˜κ³  μ €μž₯ν•˜λ©΄ μΏΌν„°κ°€ μ„€μ •λœ 것이닀.



🌷5.

이제 su - john λͺ…λ Ήμ–΄λ‘œ john으둜 λ‘œκ·ΈμΈν•΄μ„œ μΏΌν„°κ°€ 잘 λ˜λŠ”μ§€ ν™•μΈν•΄λ³΄μž. μ•„λž˜ λͺ…λ Ήμ–΄μ²˜λŸΌ 아무 큰 νŒŒμΌμ„ 계속 λ³΅μ‚¬ν•΄λ³΄μž. λ‚˜λŠ” μ•½ 4.7MB의 νŒŒμΌμ„ λ³΅μ‚¬ν•΄λ³΄μ•˜λ‹€.

​


큰 νŒŒμΌμ„ test1~4λΌλŠ” μ΄λ¦„μœΌλ‘œ λ³΅μ‚¬ν•˜λ‹€κ°€ 14.1MB둜 μ†Œν”„νŠΈ ν•œλ„(10MB)κ°€ μ΄ˆκ³Όν•˜λ©΄ μœ„μ²˜λŸΌ quota exceeded κ°€ ν‘œμ‹œλ  것이닀. 그리고 μ—¬κΈ°μ„œ ν•œ 번 더 λ³΅μ‚¬ν•˜λ©΄ 18.8MBκ°€ λ˜μ–΄ ν•˜λ“œν•œλ„(15MB)λ₯Ό μ΄ˆκ³Όν•΄μ„œ λ””μŠ€ν¬ ν• λ‹ΉλŸ‰μ΄ 초과됨이라고 ν‘œμ‹œλœλ‹€. κ²°κ΅­ 18.8MB - 15MB = 3.8MBλŠ” μ €μž₯λ˜μ§€ λͺ»ν•˜κ³  λ‚ λΌκ°€μ„œ 0.9MB만 μ €μž₯λ˜μ—ˆμ„ 것이닀. ls -lλͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•΄λ³΄λ©΄ λ§ˆμ§€λ§‰μœΌλ‘œ μƒμ„±ν•œ test4파일이 μžˆκΈ΄ν•˜λ‚˜ μΌλΆ€λ§Œ μ €μž₯λ˜μ—ˆκΈ°λ•Œλ¬Έμ— 정상 νŒŒμΌμ€ 아닐 것이닀.

γ…‡γ…‡







quota λͺ…λ Ήμ–΄λ‘œ μžμ‹ μ—κ²Œ ν• λ‹Ήλœ ν•˜λ“œλ””μŠ€ν¬ μš©λŸ‰μ„ 확인할 수 μžˆλ‹€.

μœ„ 그림을 보면 blocks값이 limit(=hard)와 κ°™μœΌλ―€λ‘œ μ œν•œλœ μš©λŸ‰μ„ λͺ¨λ‘ μ‚¬μš©ν•œ 것이닀. quota(=soft)와 limit(=hard)사이에 μžˆλŠ” 곡간(15,360KB - 10,240KB = 5,120KB)은 μœ„μ—μ„œ λ§ν–ˆλ“― μœ μ˜ˆκΈ°κ°„(grace)λ™μ•ˆλ§Œ μ‚¬μš©ν•  μˆ˜μžˆλ‹€. ν˜„μž¬ 6일둜 μ„€μ •λ˜μ–΄ μžˆμœΌλ‹ˆ 6μΌκ°„λ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ john은 6일 μ•ˆμ— 5,120KB 곡간을 μ •λ¦¬ν•΄μ•Όν•œλ‹€.

​


참고둜 root κΆŒν•œμœΌλ‘œ requota /userHome을 μž…λ ₯ν•˜λ©΄ μ‚¬μš©μžλ³„ ν˜„μž¬ μ‚¬μš©λŸ‰μ„ μ•Œ 수 있고 μœ μ˜ˆκΈ°κ°„ 변경은 μœ„μ—μ„œ λ§ν–ˆλ“― edquota -tλ₯Ό μ‚¬μš©ν•œλ‹€.

​