[리눅스 일반] 파일시스템 튜닝하기 (tune2fs)

 1. 파일시스템 튜닝명령어 tune2fs 개론

 – tune2fs 는 리눅스 파일시스템의 변경가능한 파라미터값을
설정하는 명령어임. 즉, 파일시스템의 파라미터값을 변경함으로서 파일시스템을 튜닝할 수 있으며 결과적으로 시스템의 성능을 향상시킬
수 있음. 하지만, tune2fs는 파일시스템의 파라미터값을 변경하는 것이므로 잘못하용하면 파일시스템에 큰 손상을 입힐 수도
있음.

 – 사용형식
 tune2fs [ -l ] [ -c 최대마운트횟수] [ -e 에러발생시반응 ] [ -i 각점검간의간격 ] [ -m 예약블록퍼센트] [ -r 예약블록갯수 ] [ -u 사용자 ] [ -g 그룹 ] 장치명

 2. 특정 파일시스템의 수퍼블록정보 확인하기

 – tune2fs -l /dev/sda1

 – dumpe2fs -h 명령어를 사용한 것과 동일한 결과를 출력함.

 3. 특정 파일시스템의 최재 마운트횟수 설정하기

 – 파일시스템의 최대 마운트횟수를 변경하려면 -c 옵션을 사용하면 됨
 tune2fs -c 100 /dev/sda1

 – /dev/sda1 파일시스템의 최대 마운트횟수가 100으로 변경됨

 4. 특정 파일시스템의 예약블록갯수 변경하기

 – tune2fs -r 10000000 /dev/sda1

 – -r 옵션을 사용하면 특정 파일시스템의 예약블록갯수를 변경할 수 있음.

 5. 특정 파일시스템의 예약된 블록을 사용할 수 있는 그룹 설정하기

 – 예약된 블록은 기본적으로 root 그룹만이 사용가능하도록 기본설정이 되어있음.

 – tune2fs -g wheel /dev/sda1

 – tune2fs -g 10 /dev/sda1

 – -g 옵션으로 그룹명과 GID로 설정이 가능함.

 6. 특정 파일시스템의 예약된 블록을 사용할 수 있는 사용자 설정하기

 – 예약된 블록은 기본적으로 root 사용자만이 사용가능하도록 기본설정이 되어있음.

 – tune2fs -u stkim /dev/sda1

 – tune2fs -u 501 /dev/sda1

 – -u 옵션으로 사용자명과 UID로 설정이 가능함

 7. 파일시스템의 예약블록퍼센트 설정하기

 – 파일시스템의 예약블록은 기본적으로 5%로 설정이 됨. 이를 변경하기 위해서는 -m 옵션을 사용함.

 – tune2fs -m 20 /dev/sda1

 8. 변경된 수퍼블록의 파라미터값들 확인하기

 – tune2fs -l /dev/sda1

 – -l 옵션으로 해당 파일시스템의 설정값들을 확인할 수 있음.

[리눅스 일반] 파일시스템 자동마운트 정보파일 /etc/fstab

 1. 리눅스 파일시스템 마운트 설정정보파일 /etc/fstab 의 파워활용

 – 해당파일시스템의 장치명(device name)

 – 파일시스템이 마운트될 마운트포인트(디렉토리명)

 – 파일시스템 타입(ext2, ext3, iso9660, swap등)

 – 파일시스템을 Read Only로 마운트할 것인가?

 – 파일시스템을 Read, Write로 마운트할 것인가?

 – Quota정책을 적용할 것인가?

 – 일반 사용자도 마운트할 수 있도록 허용할 것인가?

 – 부팅시 자동으로 마운트를 할 것인가?

 – SerUIS, SetGID 설정을 허용할 것인가?

 – fsck로 파일시스템검사시 검사하는 순서설정

 – /etc/fstab 파일의 표시 예 #1 (파일시스템장치명을 ‘레이블명’ 으로 표시)
LABEL=/        /        ext3        defaults        1   1

 – /etc/fstab 파일의 표시예 #2 (파일시스템장치명을 ‘장치명’ 으로 표시)
/dev/hda5     /         ext3        defaults        1   1

 – /etc/fstab 파일이 ‘레이블명’ 으로 되어있는 것 보다는 명확한 ‘파일시스템장치명’ 으로 표시하는 것이 서버관리에 효과적임

 2. /etc/fstab 파일의 구조

 – /etc/fstab 파일의 각행은 모두 6개의 항목으로 구분되어 있음
[파일시스템장치명] [마운트포인트] [파일시스템종류] [옵션] [dump관련설정] [파일점검옵션]

 3. [파일시스템장치명] : /etc/fstab 파일의 첫번째 항목

 – 파일시스템의 장치명을 설정함( /dev/sda1, /dev/hda2 등과 같은 파일시스템 장치명의 자리)

 – 만약 파일시스템에 레이블(LABEL)이 설정되어 있다면 장치명 대신 레이블명으로 지정할 수도 있음.

 4. [마운트포인트] : /etc/fstab 파일의 두번째 항목

 – 파일시스템이 마운트될 마운트포인트임( /, /home 과 같은 이름을 의미)

 – /home 과 /home1 과 같은 부분을 마운트포인트라고 함

 5. [파일시스템종류] : /etc/fstab 파일의 세번째 항목

 – 파일시스템의 종류를 설정하는 항목

 – ext : 초기 리눅스에서 사용되었던 파일시스템으로서 현재는 사용하지 않음

 – ext2 : 현재 많이 사용하고 있는 파일시스템으로서 긴파일명을 지원하는 것이 특징

 – ext3 : 저널링파일시스템으로서 etx2에 비해 파일시스템 복구기능과 보안부분을 크게 향상시킨 것으로 현재는 ext2보다 ext3을 기본 파일시스템 타입으로 사용하고 있음.

 – iso9660 : CD-ROM의 표준파일시스템으로서 Read Only로 사용됨.

 – nfs : Network File System으로서 원격서버를 마운트할 때 사용함.

 – swap : 스왑파일시스템으로서 스왑공간으로 사용되는 파일시스템에 사용됨.

 – ufs : UNIX FileSystem으로서 UNIX SYSTEM 5계열에서는 표준파일시스템임.

 – vfat : 윈도우 95나 98, 그리고 NT를 지원하기 위한 파일시스템.

 – msdos : MS-DOS파티션을 사용하기 위한 파일시스템.

 – hpfs : HPFS에 대한 파일시스템.

 – ntfs : 윈도우NT나 2000의 NTFS파일시스템을 사용하기위한 파일시스템

 – sysv : 유닉스시스템 V를 지원하기 위한 파일시스템.

 – hfs : Mac컴퓨터의 hfs 파일시스템을 지원하기 위한 파일시스템.

 – ramdisk : RAM디스크를 지원하는 파일시스템

 – …그외 다수.

 – 현재 사용하고 있는 리눅스시스템에서 지원가능한 파일시스템을 확인해 보려면 /proc/filesystems 를 확인하면 됨.

 6. [옵션] : /etc/fsta 파일의 네번째 항목

 – 파일시스템을 용도에 맞게 사용하기 위한 파일시스템 속성을 설정하는 옵션

 – defaults : rw, nouser, auto, exec, suid 속성을 모두 가지는 속성. 가장 일반적인 파일시스템에서 사용되는 속성.

 – auto : 부팅시 자동마운트됨.

 – exec : 실행파일이 실행되는 것을 허용하는 파일시스템.

 – suid : SetUID와 SetGID의 사용을 허용하는 파일시스템.

 – ro : 읽기전용 파일시스템으로만 사용됨 (Read Only)

 – rw : 읽고 쓰기 파일시스템으로 사용됨 (Read, Write)

 – user : 일반 계정사용자들도 마운트를 할 수 있는 파일시스템.

 – nouser : 일반 계정사용자들은 마운트 할 수 없는 파일시스템. root 만 mount 할 수 있음.

 – noauto : 부팅시 자동마운트되지 않게 함.

 – noexec : 실행파일을 실행되지 못하게 하는 파일시스템.

 – nosuid : SetUID와 SetGID의 사용을 허용하지 않는 파일시스템.

 – usrquota : 개별 계정사용자의 쿼타(Quota)설정이 가능한 파일시스템.

 – grpquota : 그룹별 쿼타(Quota)설정이 가능한 파일시스템.

 7. [dump 관련설정] : /etc/fstab 파일의 다섯번째 항목

 – /etc/fstab 파일의 다섯번째 설정항목으로서 0 또는 1 을 가질 수 있음. 1 은 데이터백업등을 위해 dump 가 가능한 파일시스템이며, 0 은 dump 명령으로 덤프되지 않는 파일시스템임.

 8. [파일점검옵션] : /etc/fstab 파일의 여섯번째 항목

 –
/etc/fstab 파일의 여섯번째 설정항목으로서 0 또는 1, 그리고 2 가 올 수 있음. 0 은 부팅시 실행되는 fsck 가
실행되지 않는 설정이며, 1 은 루트파일시스템을 의미하며, 2는 루트파일시스템이외의 파일시스템을 의미함. 여기서 설정된
파일시스템의 순서를 기준으로 부팅시 실행되는 fsck 의 순서가 결정됨.

[리눅스 일반] 파일시스템 마운트

 1. 마운트의 의미

– 특정 디바이스(device)를 사용하기 위해 하드웨어장치와 디렉토리를 연결하는 작업을 의미

 
 2. 사용형식

 – mount -a [-fnrvw] [-t 파일시스템타입]

 – mount [-fnrvw] [-o 옵션[,…]] 장치| 디렉토리

 – mount [-fnrvw] [-t 파일시스템타입] [-o 옵션] 장치디렉토리

 – 현재 마운트되어 있는 정보 확인
 Shell# mount

 3. 리눅스에 장착된 CD-ROM 데이터 사용하기

 – CD-ROM 마운트 형식 : mount -t iso9660 /dev/cdrom /mnt/cdrom

 4. 실제로 마운트하지 않고 마운트 가능여부만을 확인하기

 – mount -f /dev/hdb /bakup

 – mount 명령어에 -f 옵션을 사용

 5. 특정 시스템을 읽기만 가능하도록 마운트하기(쓰기금지 마운트)

 – mount -r /dev/hda /backup

 – mount 명령어에 -r 옵션을 사용

 – Read-Only 명령어임. 파일시스템내의 데이터를 보호하는 목적에는 최고의 방법

 6. 읽기, 쓰기 가능하도록 마운트하기

 – mount -w /dev/hda /backup

 – mount 명령어에 -w 옵션을 사용. Default로 사용됨

 7. 현재 마운트된 정보 자세히 살펴보기

 – mount -v

 – mount 명령어에 -v 옵션을 사용

 – -v 옵션을 사용하지 않고 그냥 mount 명령어만 입력해도 동일한 결과를 보여줌.

 – mount -v 의 결과는 /etc/mtab 파일에 저장되어 있음. /etc/mtab 파일을 확인해도 동일한 결과를 확인할 수 있음.

 8. 다양한 파일시스템 유형에 맞는 여러가지 마운트 방법

 – 사용형식  : mount -t 파일시스템타입 장치명 마운트포인트

 – -t 다음에 파일시스템의 종류를 지정하면 됨.

 – mount 명령어에서 지정가능한 파일시스템의 종류
adfs,
affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2, ext3,
hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4,
ramfs, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat,
xenix, xfs, xiafs

 9. ext3 타입의 파일시스템 마운트하기

 – mount -t ext3 /dev/hda /backup

 –
현재 리눅스에서 대표적으로 사용하는 파일시스템이 ext3이므로 mkfs나 mkfs.ext3등으로 파일시스템을 생성 및 포맥작업을
옵션없이 생성하였을 경우에는 기본적으로 ext3타입으로 포맷됨. 따라서 ext3로 생성된 파일시스템을 마운트하려면 -t ext3
라는 옵션이 없어도 ext3 로 마운트가 됨.

 – mount /dev/hda /backup

 10. ext2 타입의 파일시스템 마운트하기

 – mount -t ext2 /dev/hda /backup

 11. iso9660 파일시스템 타입으로 마운트하기

 – mount -t iso9660 /dev/cdrom /mnt/cdrom

 – CD-ROM의 공식적인 파일시스템타입이 iso9660이므로 CD-ROM마운트시에는 반드시 iso9660 타입을 사용해야함.

 – /etc/fstab 에 정의되어있는 정보를 그대로 이용하는 방법도 있음.
/dev/cdrom           /mnt/cdrom          /udf,iso9660 noauto,owner,kudzu,ro 0 0

 – mount /mnt/cdrom

 – 즉, mount /mnt/cdrom 과 같이 마운트포인트만 지정하여 mount 명령을 사용하면 /etc/fstab 파일의 /mnt/cdrom 에 대한 마운트정보가 정의되어있는 그대로 마운트를 하게 됨.

 12. vfat 윈도우 파일시스템 마운트하여 윈도우디스크 사용하기

 – 윈도우파일시스템(vfat로 가정)이 있는 디바이스(device) /dev/hdc 장치를 /win 디렉토리로 마운트 시키는 예

 – mount -t vfat /dev/hdc /win

 13. MSDOS 파일시스템으로 포맷된 디스켓을 마운트하여 사용하는 방법

 – msdos파일시스템으로 /dev/fd0 를 /mnt/floppy 에 마운트 시키는 예
 mount -t msdos /dev/fd0 /mnt/floppy

 – 윈도우 PC에서 사용하던 플로피디스크를 리눅스에서 바로 사용하려면 반드시 msdos파일시스템으로 마운트를 해야 함

 – CD-ROM마운트 할 때와 마찬가지로 플로피를 마운트 할 때에도 파일시스템 타입과 장치명을 생략하고 간단히 마운트 할 수 있음
 mount /mnt/floppy

 
 14. 원격서버의 파일시스템 마운트하여 사용하기(NFS 마운트하는 방법)

 – mount -t nfs NFS서버IP주소또는호스트명:/NFS서버마운트포인트 /NFS클라이언트마운트포인트

 – -t nfs : 파일시스템타입이며 반드시 nfs로 지정해야함. 네트워크파일스시템(NFS : Network FileSystem)를 사용할 것이기 때문.

 – NFS서버IP또는호스트명 : NFS서버의 IP주소나 호스트명을 적어주면 됨

 – /NFS서버마운트포인트 : NFS서버에서 NFS클라이언트의 마운트가 허용되어 있는(NFS서버의 /etc/exports 에 설정되어 있어야함) 위치를 지정하면 됨.

 – /NFS클라이언트마운트포인트 : 마운트명령어를 사용하고 있는 NFS클라이언트의 마운트포인트를 적어주면 됨.

 – ex) mount -t nfs 192.168.0.1:/tmpdata /backup

Proftp virtualhost configuration 설정 예제(proftpd.conf)

############################################                                                                      
#

#                       ProFTPD Korea User Groups                        
#                           http://proftpd.oops.org                

#                                                                    
############################################

# 번역 : 김정균 < admin@oops.org >
# 이 예제 설정 file은 두개의 가상 server와  anonymous login를 결합하는
# 것을 설명하고 있다.

ServerName                      “ProFTPD”
ServerType                      inetd

# Port 21 은 FTP 의 기본 port이다.
Port                            21

# Global은 main server와 모든 virtualhosts에 의해 공유되는 “global” 설정
# 을 생성한다.

<Global>
  # Umask 022는 group과 world writable로 부터 새로운 dir과 file들을 막기
  # 위한 훌륭한 기본 umask이다.
  Umask                         022
</Global>

# Server가 실행하는데 일반적인 user와 group을 설정한다.
User                            nobody
Group                           nobody

# DoS 공격을 막기 위해, 자식 process의 maximun number를 30으로 설정한다.
# 만약 30이상의 접속을 허락할 필요가 있다면 간단하게 이 치수를 증가시키도록
# 한다. 이것은 오직 standalone mode에서만 가능하다. inetd mode에서는
# service 당 maximun number를 제한 하는 것을 허락하는 inetd server에서
# 설정을 해야 한다.(xintd 역시 마찬가지 이다)
MaxInstances                    30

# 접속에 stall이 될때 끊어 지지 않는 최대 시간을 지정한다.
TimeoutIdle                     300

<VirtualHost ftp.virtual.com>

  ServerName                    “Virtual.com’s FTP Server”

  MaxClients                    10
  MaxLoginAttempts              1

  # DeferWelcome 는 client가 인증을 하기 전에 servername을 display하는
  # 것을 방지한다.
  DeferWelcome                  on

  # guest login만 허락하기를 위하여
  # nomal user login을 제한한다.
  <Limit LOGIN>
    DenyAll
  </Limit>

  # 다음, 자신들의 web site 등에 개인적으로 접근하기 위한 customer에
  # 의해 사용되어 지는 “guest” 계정을 만든다.
  <Anonymous ~cust1>
    User                        cust1
    Group                       cust1
    AnonRequirePassword         on

    <Limit LOGIN>
      AllowAll
    </Limit>

    HideUser                    root
    HideGroup                   root

    # 사용자가 접근하기를 원하지 않는 private directory
    <Directory logs>
      <Limit READ WRITE DIRS>
        DenyAll
      </Limit>
    </Directory>

  </Anonymous>

</VirtualHost>

# primary address에서 작동을 하지만 port는 4000번을 사용하는 또 다른
# virtual host 이다. access는 하나의 anonymous login만 된다.
<VirtualHost our.ip.address>

  ServerName                    “Our private FTP server”
  Port                          4000
  Umask                         027

  <Limit LOGIN>
    DenyAll
  </Limit>

  <Anonymous /usr/local/ftp/virtual/a_customer>

    User                        ftp
    Group                       ftp
    UserAlias                   anonymous ftp

    <Limit LOGIN>
      AllowAll
    </Limit>

    <Limit WRITE>
      DenyAll
    </Limit>

    <Directory incoming>
      <Limit WRITE>
        AllowAll
      </Limit>
    </Directory>

  </Anonymous>

</VirtualHost>

리눅스 압축풀기 명령어

1 tar아카이브(여러 파일을 한 파일로 묶은 것)을 생성하고 푼다.
아카이브의 확장자는 .tar 이다.

tar 는 실행시 반드시 옵션이 있어야 하기 때문에 옵션에 – 를 붙이지 않아도 된다(ps도 마찬가지 이유로 – 가 필요없다). 즉, tar xvf archive.tar 도 작동한다.

2 명령어 활용예
2.1 아카이브 풀기 tar -xvf archive.tar
archive.tar 라는 이름으로 묶인 파일과 디렉토리를 현재 디렉토리에 풀어준다. v 옵션은 파일을 푸는 과정을 화면에 출력해주라는 의미이다.

2.2 아카이브 만들기 tar -cvf archive.tar 묶을파일과디렉토리들
archive.tar 라는 이름으로 파일과 디렉토리를 묶어준다.

2.3 퍼미션을 유지하며 아카이브 만들기 tar -cvfp archive.tar 묶을파일과디렉토리들
archive.tar 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.

2.4 tar+gzip 압축하기tar -czvf archive.tar.gz 묶을파일과디렉토리들
archive.tar.gz 라는 이름으로 파일과 디렉토리를 묶어준다. tar -czvfp archive.tar.gz 묶을파일과디렉토리들
archive.tar.gz 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.

2.5 tar+bzip2 압축하기tar -cjvf archive.tar.bz 묶을파일과디렉토리들
archive.tar.bz 라는 이름으로 파일과 디렉토리를 묶어준다.

tar -cvjfp archive.tar.gz 묶을파일과디렉토리들
archive.tar.gz 라는 이름으로 퍼미션을 유지하며 파일과 디렉토리를 묶어준다.

2.6 gzip으로 압축된 tar 풀기 tar -xvzf archive.tar.gz
archive.tar.gz 라는 tar 로 묶인뒤 gzip 으로 압축된 파일을 먼저 압축을 푼뒤에 묶인 파일까지 풀어준다.

2.7 bzip2로 압축된 tar 풀기 tar -xvjf arhive.tar.bz
archive.tar.bz 라는 tar 로 묶인뒤 bzip2로 압축된 파일을 먼저 압축을 푼뒤에 묶인 파일까지 풀어준다.

2.8 허가권(Permission) 유지하며 풀기 tar -xpf archive.tar
파일을 묶을 당시의 각 파일의 허가권을 유지하며 풀어준다.