[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:55:12 EDT 2007
i686 i686 i386 GNU/Linux


[root@localhost ~]# cat /etc/issue
Fedora release 8 (Werewolf)
Kernel \r on an \m


[root@localhost ~]# cat /etc/issue.net
Fedora release 8 (Werewolf)

[root@localhost ~]# cat /etc/redhat-release
Fedora release 8 (Werewolf)


[root@localhost ~]# cat /proc/version
Linux version 2.6.23.1-42.fc8 (kojibuilder@xenbuilder4.fedora.phx.redhat.com)
(gcc version 4.1.2 20070925 (Red Hat 4.1.2-33)) #1 SMP Tue Oct 30 13:55:12 EDT 2007


[root@localhost ~]# cat /etc/rc.sysinit | grep PRODUCT
PRODUCT=`sed "s/Red Hat \(.*\) release.*/\1/" /etc/redhat-release`
echo " $PRODUCT"
PRODUCT=`sed "s/Fedora \(.*\) \?release.*/\1/" /etc/redhat-release`
echo " $PRODUCT"
PRODUCT=`sed "s/ release.*//g" /etc/redhat-release`
echo "$PRODUCT"

* cpu 정보 보기
cat /proc/cpuinfo

* 하드 디스크 정보(scsi)
cat /proc/scsi/scsi


Posted by 달팽이맛나
,

[LINUX]yum

LINUX/기본 2011. 7. 19. 13:56

기본 명령어

패키지 리스트 확인 : 
# yum list
설치된 패키지 확인 :  # yum list installed
업데이트 목록 확인 :  # yum list updates

패키지 정보 확인     :  # yum info 패키지

패키지 의존성 확인 :  # yum deplist 패키지


# yum install 패키지 :  새로운 패키지 설치, 의존성이 있는 경우 해당 사항들을 자동으로 같이 설치.
# yum update 패키지 : 설치되어 있는 패키지 업데이트
# yum update : 설치되어 있는 모든 패키지 업데이트
# yum localinstall 패키지 :로컬에서 설치(현 시스템에 받아 놓은 경우)
# yum remove 패키지 or yum erase 패키지 : 패키지 삭제
(여기서 yum은 해당 패키지만 삭제하는 것이 아니라 해당 패키지에 의존적인 모든 패키지들을 삭제한다.)
# yum search 문자열 : 특정한 문자열이 있는 내용을 출력

 

yum이 제대로 작동을 하지 않을 때.

# yum clean all : (캐시되어 있는 헤더와 패키지 모두 제거. 
all은 clean expire-cache, clean packages, clean headers, clean metadata, clean dbcache, clean dbcache, clean rpmdb, clean plugins의미.
yum clean headers; yum clean metadata 두개의 명령으로 CLEAN OPTIONS의 all을 대신 할 수도 있다.) 

# yum check

# yum check-update :시스템에 설치된 패키지 중에서 업데이트 목록만 보여준다.

 

Posted by 달팽이맛나
,

Problem
디비 서버를 운영하다보면 아래와 같은 에러와 함께 db서버가 죽어버리는 경우가 있다.

091030 13:40:29 [ERROR] /usr/libexec/mysqld: Table ‘.some_table’ is marked as crashed and should be repaired

Solution
mysql> analyze table some_table;
mysql> repaire table some_table;
//위에서 실패하면 아래 실행
]# myisamchk -r some_table;

위와 같이 repair를 하면 쉽게 해결되기는 하지만, 그 원인은 뭘까?

mysql Reference에서 How to Repair MyISAM Tables 페이지에서 찾을 수 있었다.
위의 문제는 다음과 같은 충돌들로 일어날 수 있다.

  • tbl_name.frm이 변경에 대해서 락이 걸려있는 경우
  • tbl_name.MYI(Errcod:nnn)을 찾을 수 없는 경우
  • 파일이 unexpected end일 경우
  • 저장 파일이 충돌했을 경우
  • 테이블 핸들러로부터 nnn에러를 받았을 경우

위에서 말하는 nnn 에러는 system error로 다음 커맨드로 그 의미를 알아볼 수 있다.
]# perror 126 127 132 134 135 136 141 144 145
MySQL error code 126 = Index file is crashed
MySQL error code 127 = Record-file is crashed
MySQL error code 132 = Old database file
MySQL error code 134 = Record was already deleted (or record file crashed)
MySQL error code 135 = No more room in record file
MySQL error code 136 = No more room in index file
MySQL error code 141 = Duplicate unique key or constraint on write or update
MySQL error code 144 = Table is crashed and last repair failed
MySQL error code 145 = Table was marked as crashed and should be repaired

위의 145 번 에러 코드가 이번 경우에 해당 되었다.
참고로 135번과 136번에러는 테이블의 MAX_ROWS와 AVG_ROW_LENGTH를 수정해서 고칠 수 있다.
mysql>ALTER TABLE tbl_name MAX_ROWS=xxx AVG_ROW_LENGTH=yyy;
현재 테이블 옵션이 어떻게 되어 있는지 보려면 아래 명령어로 보자.
mysql>SHOW CREATE TABLE some_table;

다른 에러들에 대한 대처는 myisamchk르 대부분이 찾아내서 고칠 수 있다.
이 작업을 하기 전에 디비 테이블 파일들에 대한 권한을 확인한다.(없으면 부여)
먼저 mysqld서버를 중지한다.(유의: 중지 후 바로 디비 서버가 바로 죽지 않는다. 모든 index 변경사항이 디스크에 플러시 될때까지가 중지되는 시점이다)

Stage 1: 테이블 검사

]# myisamchk *.MYI
이 작업으로 error라고 판별된 테이블에 대해서만 Stage 2에서 고쳐질 수 있으며, 이 커맨드 과정에서 에러(e.g. out of memory)가 나면 Stage 3로 너어가면 된다.

Stage 2: Easy safe repair

]# myisamchk -r -q tbl_name (-r -q 은 “빠른 복구 모드”)
이는 data file을 건들지 않고 index file을 고치는 커맨드이다.

  1. Make a backup of the data file before continuing.
  2. Use myisamchk -r tbl_name (-r means “recovery mode”). This removes incorrect rows and deleted rows from the data file and reconstructs the index file.
  3. If the preceding step fails, use myisamchk –safe-recover tbl_name. Safe recovery mode uses an old recovery method that handles a few cases that regular recovery mode does not (but is slower).

나는 여기까지로 대부분이 해결이 되었다.
stage 3에 대한 방법, 그 외의 방법은 How to Repair MyISAM Tables를 참고하면 되겠다.

Posted by 달팽이맛나
,

[linux] /etc/fstab

LINUX/기본 2010. 1. 20. 13:55

/etc/fstab은 파일시스템들을 목적에 맞게 사용할 수 있도록 여러가지 정보들을 저장하고 부팅시에 자동으로 적용될 수 있도록 합니다.  이 파일의 정보가 조금이라도 잘못되면 부팅과정의 파일시스템마운트단계에서 멈추어 버립니다.

 

이 파일에 설정되는 정보들은 파일시스템의 장치명들과 마운트포인트(마운트될 위치, 디렉토리)와 파일시스템의 여러가지 옵션들 입니다.

 

이 파일에 설정되는 파일시스템의 정보들은 다음과 같은 것들이 있습니다.

      

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

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

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

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

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

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

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

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

       - SetUID, SetGID 설정을 허용할 것인가?

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

 

위와 같은 정보들이 /etc/fstab에 저장되어 있습니다.

 

그럼, 먼저 /etc/fstab파일의 실제 예를 보도록 하겠습니다.

 

아래는 필자가 사용하고 있는 리눅스서버의 /etc/fstab파일의 두가지 예이며 동일한 파일을 두가지 방법으로 표시한 것입니다.

 

/etc/fstab파일 예 #1 : 파일시스템장치명을 레이블명으로 표시함

 

아래의 파일은 /etc/fstab파일의 내용으로서 파일시스템장치명부분을 레이블명으로 표시한 것입니다.


 

 

/etc/fstab파일 예 #2 : 파일시스템장치명을 장치명으로 표시함

 

그리고 다음 /etc/fstab파일은 위와 동일한 것으로서 파일시스템장치명부분을 장치명으로 표시한 것입니다.




, LABEL=/라고 되어 있는 부분이 /dev/hda5로 표시되어도 무관합니다. 파일시스템 레이블(LABEL) “/” /dev/hda5이기 때문입니다. 그리고 /dev/hda1의 파일시스템 레이블(LABEL) boot이기 때문에 위의 두가지 설정은 동일한 설정으로서 앞의 파일에서는 파일시스템장치명을 레이블명(LABEL, 파일시스템이름)으로 표시한 것일 뿐입니다. 

 

레이블명으로 되어 있는 첫번째 파일의 예는 대부분 리눅스를 설치한 후에 기본설정으로 되어 있는 것이며, 장치명으로 되어 있는 두번째 파일의 예는 첫번째파일을 수정하여 표시한 것입니다.  레이블명으로 되어있는 것 보다는 명확한 파일시스템장치명으로 표시하는 것이 서버관리에 효율적이다라는 것을 알기 때문에 필자는 이렇게 사용하고 있습니다.

 

 

/etc/fstab파일의 구조

 

, 그럼 이 파일의 구조에 대해서 설명하도록 하겠습니다. 

 

먼저, fstab파일의 각행은 모두 6개의 항목으로 구분되어 있으며 6개의 항목은 다음과 같습니다.

 

[파일시스템장치명] [마운트포인트] [파일시스템종류] [옵션] [dump관련설정] [파일점검옵션]

 

위의 형식은 리눅스의 /etc/fstab파일을 나타내는 기본 구조입니다.  /etc/fstab파일을 이해하려면 무엇보다도 위의 각 항목들의 정확한 의미를 이해하는 것이 가장 중요합니다.

 

위의 설정항목들을 하나씩 설명하면 다음과 같습니다.

 

 

 

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

 

/etc/fstab의 첫번째로 설정되는 항목으로서 파일시스템의 장치명을 설정합니다. , /dev/sda1, /dev/hda2등과 같은 파일시스템 장치명의 자리입니다. 만약 파일시스템에 레이블(LABEL)이 설정되어 있다면 장치명 대신 레이블명으로 지정할 수도 있습니다.

 

 

 

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

 

파일시스템이 마운트될 위치, 즉 마운트포인트로서 /etc/fstab 2번째 항목입니다.  쉽게 설명해서 / 또는 /home과 같은 이름을 의미합니다. 위의 예에서는 /dev/hda2 /home에 마운트되어 있는 것을 알 수 있으며, 또한 /dev/hdb1 /home1에 마운트되어 있다는 것을 알 수 있습니다. 여기서 /home /home1과 같은 부분을 마운트포인트라고 합니다.

 

 

 

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

 

파일시스템의 종류를 설정하는 항목으로 /etc/fstab 3번째 항목입니다. , 앞의 예에서 /dev/hda2 /home에 마운트되며 파일시스템종류로는 ext3을 사용하고 있다는 것을 알 수가 있습니다. 그리고 /dev/hda3 swap파일시스템으로 사용되고 있다는 것도 알 수가 있습니다.  이렇게 3번째 항목에는 파일시스템의 종류를 설정하는 자리이며 여기에 올 수 있는 파일시스템의 종류에는 다음과 같은 것들이 있습니다.

 

 

ext 

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

ext2

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

ext3

저널링파일시스템으로서 ext2에 비해 파일시스템 복구기능과 보안부분을 크게 향상시킨 것으로 현재는 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디스크를 지원하는 파일시스템

리눅스에서 지원가능한 파일시스템은 매우 많지만, 대체적으로 위의 범주에서 사용됩니다. 그리고 다음은 리눅스에서 지원되는 파일시스템의 종류들입니다. 

 

adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext2, ext3,  hfs,  hpfs,  iso9660,jfs,  minix,  msdos,  ncpfs,  nfs,  ntfs,  proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix,  xfs

 

이와 같은 파일시스템들을 모두 지원가능하지만 모두 사용하는 것은 아닙니다. 만약 여러분들께서 현재 사용하고 있는 리눅스시스템에서 지원가능한 파일시스템을 확인해 보시려면 /proc/filesystems를 보시기 바랍니다.

 




[옵션] : /etc/fstab파일의 네번째 항목

 

파일시스템을 용도에 맞게 사용하기 위한 파일시스템 속성을 설정하는 옵션으로서 /etc/fstab의 네번째 설정항목입니다.  위의 예에서 /dev/hda2 파일시스템은 ext3으로 포맷되었으며 /home에 마운트되어 defaults속성을 가지고 있습니다. 여기서 defaults속성은 아래 설명을 참조하시기 바랍니다. 다음은 fstab의 네번째 설정항목에 설정가능한 파일시스템의 속성들입니다.

 

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)설정이 가능한 파일시스템.

 

따라서 위의 예에서 보았던 /dev/hda2 /home2에 마운트되며 defaults라는 속성을 가지고 있으므로 읽고,쓰기가 가능하며(rw), 일반사용자들은 마운트할 수 없으며(nouser), 부팅시 자동마운트가되며(auto), 실행파일의 실행이 가능하며(exec), SetUID SetGID의 설정이 가능(suid)한 파일시스템 속성으로 마운트되어 사용된다는 것을 알 수가 있습니다.

 

 

 

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

 

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

 

 

 

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

 

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

 

지금까지의 설명을 바탕으로 앞서 미리 보여드렸던 필자가 사용하고 있는 시스템의 /etc/fstab파일의 설정내용을 중요한 부분만 하나씩 설명드린다면 다음과 같습니다.

 

 

첫번째, /dev/hda5는 레이블명(파일시스템이름)“/”이며 /(루트)에 마운트되며, ext3파일시스템을 가지고 rw, nouser, auto, exec, suid 속성을 가지며(defaults), dump가 가능한 파일시스템이며 부팅시 fsck로 우선점검됩니다.

 

두번째, /dev/hda1은 레이블명이 “/boot”이며 /boot에 마운트되며, ext3파일시스템을 가지고, rw, nouser, auto, exec, suid 속성을 가지고 dump가능하고, 부팅시 fsck에 의해 점검됩니다.

 

세번째, /dev/hda2는 레이블명이 “/home”이며 /home에 마운트가 되고, ext3파일시스템을 가지며, rw, nouser, auto, exec, suid 속성을 가지고, dump가 가능하며, 부팅시 fsck에 의해 점검되는 파일시스템입니다.

 

네번째, /dev/hda3은 레이블명은 없으며, 스왑공간으로만 사용되고, rw, nouser, auto, exec, suid 속성을 가지며, dump가 되지않으며, 부팅시 fsck에 의해 점검되지 않는 파일시스템입니다.

 

 

흔히 /etc/fstab에 설정된 내용들의 의미를 가볍게 넘겨버리는 서버관리자들을 많이 보았습니다.  /etc/fstab의 내용은 서버내에서 가장 기본이 되는 데이터의 저장장치의 파일시스템 속성과 마운트정보를 가지고 있는 것이므로 결코 간과해서는 않되는 부분입니다.

 

이번 장의 내용을 반드시 이해하시고 /etc/fstab의 내용을 정확하게 읽어 낼 수 있는 능력을 가지도록 하십시요. 그렇게 된다면 리눅스서버의 파일시스템이 가슴속 깊이 들어와 매우 친근하게 느껴질 것입니다.

Posted by 달팽이맛나
,

[linux] du 명령어

LINUX/기본 2010. 1. 20. 10:47

옵션
-a : 디렉토리가 아닌 모든 파일에 대한 정보를 출력
-k : 결과 값을 KB 단위로 출력한다. (기본값)
-m : 결과 값을 MB 단위로 출력한다.
-h : 사용자가 이해하기 쉬운 용량의 단위를 표시한다. ((ex) KB,MB,GB)
-l : 하드 링크의 용량을 모두 계산한다.
-s : 사용량의 총 합계만 출력한다.
-S : 하위 디렉토리를 합치지 않고, 각각을 나누어서 계산한다. 지정된 디렉토리 내의 파일과 모든 하위 디렉토리의 용량, 내용까지 볼 수 있다.


# du -sh

# du -Sh

# du -sh /*
Posted by 달팽이맛나
,