fstab 파일의 가장 위에 보면 보통 아래와 같은 설명이 달려있다.

# <file system> <mount point>   <type>  <options>       <dump>  <pass>

앞의 네 항목은 딱 보면 알만한 내용들이라 그렇게 어렵지 않다.

  1. file system : 마운트 할 파일 시스템 (/dev/sda, UUID=BLAHBLAH..., proc 등)
  2. mount point : 마운트할 경로 (/, /mnt/usb 등)
  3. type : 마운트할 파일 시스템의 타입  (ext4, ntfs 등)
  4. options : 마운트할 때 줄 옵션 (rw, ro, noexec 등)

문제는 마지막 두 항목은 dump나 pass라는 이름만 보고는 어떤 역할을 하는지 알기 힘들다는 것이다. 이미 설정되어있는 값을 보아도 0이나 1같은 숫자 뿐이다. 이런걸 알아보려면 역시 Manpage가 우선이다. Manpage를 보면 마지막 두 항목은 다음과 같이 설명되어 있다.

The fifth field (fs_freq).
This field is used for these filesystems by the dump(8) command to  determine which filesystems need to be dumped.  If the fifth field is not present, a value of zero is returned and dump will assume that the filesystem does not need to be dumped.

The sixth field (fs_passno).
This field is used by the fsck(8) program to determine the order in which filesystem checks are done at reboot  time. The root filesystem  should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2.  Filesystems within a drive will be checked sequentially, but filesystems on different drives will be checked at the same time to utilize  parallelism available in the hardware.  If the sixth field is not present or zero, a value of zero is returned and fsck will assume that  the filesystem does not need to be checked.

다시 말하자면, dump라고 되어있는 다섯번째 항목은 해당 파일 시스템이 dump가 필요한지 여부를 설정하는 것이고, 마지막 여섯번째 항목은 리부팅시에 파일시스템을 검사할지 여부를 설정하는 것이다. 파일 시스템을 dump해야한다면 다섯번째 항목을 1로, 아니면 0으로 하면 되고, 파일 시스템을 리부팅 시에 검사하려면 여섯번째 항목을 1보다 큰 값으로, 필요없으면 0으로 하면 된다. 검사는 1부터 순서대로 한다.

'Operating' 카테고리의 다른 글

MySQL Replication 복구  (0) 2015.02.05
리눅스 tmp 디렉토리 파일 시스템  (0) 2015.02.02
vipw - passwd 파일 편집  (0) 2015.01.31

운영하는 서버에 /tmp 디렉토리 용량이 필요해져서 추가 디스크를 붙여서 마운트해서 사용할 필요가 생겼다. 아무래도 임시 파일을 저장하는 곳이니, 루트 파일 시스템으로 사용하고 있는 ext4보다 적당한 것이 있지 않을까 싶어서 검색을 좀 해보았다. 하지만, 그런 건 없었다.

램 디스크를 사용하는 "tmpfs"가 있기는 한데, 이건 용량이 제한되기 때문에 내가 사용하려는 용도와는 맞지 않아 사용할 수 없었다.

그냥 ext4를 사용하되, 마운트 옵션으로 다음 옵션들을 사용하면 좋다고 한다.

barrier=0,noatime

"barrier=0" 은 몇몇 경우에 파일 쓰기 성능을 향상시켜 준다고 하고, "noatime"은 파일 접근 시간을 업데이트하는 것을 막아서 파일 입출력 속도를 높일 수 있다.

참고 : http://askubuntu.com/questions/1637/good-filesystem-for-tmp

'Operating' 카테고리의 다른 글

fstab 마지막 두 항목의 의미 - dump, pass  (0) 2015.02.03
vipw - passwd 파일 편집  (0) 2015.01.31
"leaking memory" messages in ubuntu  (0) 2014.12.12

# vi /etc/passwd

(앞의 vi는 다른 에디터를 쓸 수도 있지만) passwd 파일을 편집하기 위해서는 항상 위와 같이 했었다. 그런데, 저 역할을 하는 간단한 명령어가 있었다.

# vipw

이런 간단한 작업을 위해서 일부러 명령어를 따로 익힐 필요는 없겠지만, 너무 간단해서 이미 알게된걸 일부러 안 쓸 필요도 없으니, 필요할때 사용해야겠다.

'Operating' 카테고리의 다른 글

리눅스 tmp 디렉토리 파일 시스템  (0) 2015.02.02
"leaking memory" messages in ubuntu  (0) 2014.12.12
Subversion 저장소를 Git으로 옮기기  (0) 2014.03.05

필요에 의해서 한국어 형태소 분석기를 찾아보기도 했고, MeCab을 이용한 한국어 형태소 분석과 폐쇄적인 21세기 세종 계획 성과물이란 글을 보면서 쓸만한 오픈소스 형태소 분석기가 없다는 것에 실망한 적이 있었다. 내가 전문가는 아니라서 잘 모르는 것일 수도 있겠지만, 영어는 물론이고 일본어도 연구 결과들이 공유되고 발전해가는 것이 보이는데, 왜 한국어는 없는지 답답했다. 그래서 "검색에서 쓸만한 오픈소스 한국어 형태소 분석기를 만들자!"라는 생각으로 시작했다는 전한닢 프로젝트를 보고 상당히 반가운 기분이 들었다.

그래서 한번 사용을 위해서 테스트를 해보기로 했다. 은전한닢 프로젝트는 일본어 형태소 분석기인 mecab에 한국어 형태소 사전을 추가한 형태로, 이를 사용하기 위한 Lucene/Solr용 tokenizer를 제공하고 있다. 그래서 사용해보려면 우선 mecab 설치가 필요하다.

테스트는 ubuntu 12.04 에서 진행했다.


mecab 설치

mecab은 ubuntu 저장소에 들어가있기때문에 쉽게 설치가 가능하다. 신경쓸 것은 컴파일이 필요하기 때문에 libmecab-dev 패키지도 별도로 설치가 필요하다는 것 정도이다.

$ sudo apt-get install mecab libmecab-dev


mecab-ko-dic 설치

mecab-ko-dic이 은전한닢 프로젝트의 핵심 결과물이라고 할 수 있는데, bitbucket 저장소에서 배포중이고, 사실 설치방법도 여기에 한국어로 친절하게 소개되어있기도 하다. 저장소의 다운로드 페이지에서 mecab-ko-dic 최신 버전을 다운로드 받아서 다음과 같이 컴파일하자. 이 글을 쓰는 시점에서 최신버전은 1.1.3 버전이다.

$ tar xzf mecab-ko-dic-1.1.3-20130226.tar.gz
$ cd mecab-ko-dic-1.1.3-20130226/
$ ./configure
$ make

컴파일이 잘 되었는지 테스트해보려면 다음과 같이 확인할 수 있다.

$ mecab -d .(엔터)
잘 설치되었는지 확인하려면 이렇게 확인할 수 있다.(엔터)
잘    MAG,T,잘,*,*,*,*
설치    NN,F,설치,*,*,*,*
되    XSV,F,되,*,*,*,*
었    EP,T,었,*,*,*,았/EP
는지    EC,F,는지,*,*,*,*
확인    NN,T,확인,*,*,*,*
하    XSV,F,하,*,*,*,*
려면    EC,T,려면,*,*,*,*
이렇    VA,T,이렇,*,*,*,*
게    EC,F,게,*,*,*,*
확인    NN,T,확인,*,*,*,*
할    XSV+ETM,T,할,Inflect,XSV,ETM,하/XSV+ㄹ/ETM
수    NNB,F,수,*,*,*,*
있    VV,T,있,*,*,*,*
다    EF,F,다,*,*,*,*
.    SF,*,*,*,*,*,*
EOS
(Ctrl + d)
$

이렇게 표시되면 잘 동작하는 것이다. 설치를 마무리하려면 다음과 같이 입력한다.

$ sudo make install

이렇게 하면 "/usr/lib/mecab/dic/mecab-ko-dic"에 사전 파일이 저장되고 설치가 끝난다고 했는데, 나의 경우에는 다음과 같은 오류가 발생했다.

test -z "/usr/lib/mecab/dic/mecab-ko-dic" || /bin/mkdir -p "/usr/lib/mecab/dic/mecab-ko-dic"
 /usr/bin/install -c -m 644 ./model.bin matrix.bin char.bin sys.dic unk.dic left-id.def right-id.def rewrite.def pos-id.def dicrc '/usr/lib/mecab/dic/mecab-ko-dic'
/usr/bin/install: cannot stat `./model.bin': No such file or directory
make[1]: *** [install-dicDATA] Error 1
make[1]: Leaving directory
make: *** [install-am] Error 2

model.bin 파일이 없어서 나는 오류인데, 그냥 무시하고 진행해도 별 문제없이 동작하는 것으로 보인다. mecab 설정파일(/etc/mecabrc)을 다음과 같이 수정해주면 설치가 끝난다.

6c6
< dicdir = /var/lib/mecab/dic/debian
---
> dicrc = /usr/lib/mecab/dic/mecab-ko-dic

root 권한이 없는 경우에는 사전파일들을 적당한 디렉토리에 넣어두고, 홈디렉토리에 .mecabrc 파일을 만들어서 동일한 설정을 해줘도 된다.

테스트 해보면 다음과 같다.

$ mecab(엔터)
설치가 다 끝났는지 확인하려면 이렇게 해보자.(엔터)
설치    NN,F,설치,*,*,*,*
가    JKS,F,가,*,*,*,*
다    MAG,F,다,*,*,*,*
끝났    VV+EP,T,끝났,Inflect,VV,EP,끝나/VV+았/EP
는지    EC,F,는지,*,*,*,*
확인    NN,T,확인,*,*,*,*
하    XSV,F,하,*,*,*,*
려면    EC,T,려면,*,*,*,*
이렇    VA,T,이렇,*,*,*,*
게    EC,F,게,*,*,*,*
해    VX+EC,F,해,Inflect,VX,EC,하/VX+ㅕ/EC
보    VX,F,보,*,*,*,*
자    EF,F,자,*,*,*,*
.    SF,*,*,*,*,*,*
EOS
(Ctrl + d)
$


웹서버를 운영하면서 https 보안 서버를 사용하기 위해서는 인증기관에서 SSL 인증서를 발급받는다. 발급받은 개인키에 비밀번호가 걸려있을 경우에는 아파치 웹서버를 실행할 때마다 다음과 같은 메시지를 받게된다.

... waiting .Apache/2.2.14 mod_ssl/2.2.14 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www.test.local:443 (RSA)
Enter pass phrase: [비밀번호 입력]

OK: Pass Phrase Dialog successful.
[ OK ]
root@www:/#

메시지만 나오는 것이라면 별 상관없겠지만, 개인키에 걸려있는 비밀번호를 입력해야만 서버 시작을 진행하는 것이 문제이다. 서버를 운영하다보면 관리 목적에서 자동으로 서버를 재시작해야할 경우가 종종 있는데, 그때마다 수동으로 비밀번호를 입력해주고 있을 수는 없는 노릇이다. 따라서, 이런 경우에는 개인키에 걸린 비밀번호를 제거해줘야할 필요가 생긴다.

개인키에 걸린 비밀번호는 다음과 같이 제거할 수 있다.

root@www:/etc/apache2/ssl/ssl.key# openssl rsa -in key.pem.orig -out key.pem
Enter pass phrase for key.pem.orig: [비밀번호 입력]
writing RSA key
root@www:/etc/apache2/ssl/ssl.key# [완료]

위의 예에서는 "key.pem.orig"라는 파일이 비밀번호가 걸려있는 원래 개인키 파일이다. 이렇게 실행한 후에, "key.pem"이라는 새로 만들어진 개인키 파일을 사용하면 비밀번호를 물어보는 귀찮은 일이 발생하지 않는다. 다만, 보안키의 비밀번호가 사라진만큼 보안키 저장에 신경써야하지만, 보안키 저장 장소는 비밀번호가 있건 없건 접근 권한등 보안에 신경쓰자.


vmware에서 리눅스를 Guest OS로 사용 중일때, 새 하드디스크를 추가하기 위해서는 리부팅을 해야한다. 하지만, 리부팅을 하지 않고도 디스크를 추가할 수 있는 방법이 있어 소개한다.

  1. 가상 머신의 설정에 들어가서 하드디스크를 추가한다.
  2. 리눅스 콘솔에서 관리자 권한으로 다음을 입력한다. 이때, #은 0,1,2 등의 번호가 되는데, vmware에서 하드디스크 정보에서 볼수 있는 ID값의 첫째자리(인 것으로 생각된)다. 이것을 통해서 OS가 SCSI로 연결된 장치를 재검색하게한다.
    echo "- - -" > /sys/class/scsi_host/host#/scan
  3. 나머지는 리부팅해서 하드디스크를 추가하는 과정과 동일하다.

만약, SCSI 장치 재검색 명령어가 제대로 동작하지 않는다면, 우분투 사용자일 경우 아래 방법으로 같은 결과를 얻을 수 있다.(다른 배포판도 해당 도구가 - rescan-scsi-bus.sh - 존재할지는 모르겠다)

sudo apt-get install scsitools
sudo rescan-scsi-bus.sh

'Operating' 카테고리의 다른 글

Redmine 계정으로 Subversion 인증 연동하기  (0) 2011.02.13
LVM 설정  (0) 2010.04.01
MySQL 대소문자 구분  (0) 2010.03.10
리눅스에서 제공하는 LVM을 이용하면, 파티션 용량 증설, 축소, 디스크 이전 등이 간편해진다. 특히, 계속 용량이 증가해야하는 곳에서는 유용할 텐데, 그 사용법을 간단히 정리해보았다.

설치 및 초기 설정 방법

  1. LVM 설정을 위해서 필요한 패키지 설치(우분투 기준)
    # apt-get install lvm2 dmsetup
    # modprobe dm-mod
  2. 파티션 준비
    fdisk에서 파티션을 만들때, 형식(type)을 8e(Linux LVM)으로 지정해준다.
  3. physical volume(PV) 준비

    # pvcreate <파티션 경로 (ex. /dev/sdb1)> => PV 만들기

    참고>

    # pvdisplay => PV 내역 보기 # pvremove <파티션 경로> => PV 삭제

  4. volume group(VG) 생성

    # vgcreate <새 VG 이름> <파티션 경로>

    참고>

    # vgdisplay => VG 정보 보기 # vgscan => VG 찾기 # vgrename <이전 볼륨 이름> <새 볼륨 이름> => VG 이름 변경 # vgremove <볼륨 이름> => VG 삭제

  5. logical volume(LV) 생성
    # lvcreate --name share --size 40G fileserver
    # lvcreate --name share -l100%VG fileserver
    참고>

    # lvdisplay => LV 확인 # lvscan => LV 확인 # lvrename <vg 이름> <이전 이름> <새 이름> => LV 이름 변경 # lvremove /dev/<vg 이름>/<lv 이름> => LV 삭제

기타 다른 작업들

  • 디스크 추가

    # vgextend <vg 이름> <파티션 경로>
    # lvextend -L1.5G /dev/<vg 이름>/<lv 이름>
    # lvreduce -L1G /dev/<vg 이름>/<lv 이름>
    만약 LV에서 XFS를 사용할 경우, 다음과 같이 파티션을 늘린다.

    # xfs_growfs /mnt/raid # xfs_growfs /mnt/raid -D <size>

  • 새 디스크에 기존 내용을 옮기는 경우, 즉 물리적인 디스크가 이전되는 경우
    # pvmove <이전 파티션 경로> <새 파티션 경로>
  • 사용 중인 디스크를 제외하기
    # vgreduce fileserver /dev/sdb1


'Operating' 카테고리의 다른 글

VMWare에서 리부팅없이 새 하드디스크 추가하기  (0) 2010.11.11
MySQL 대소문자 구분  (0) 2010.03.10
Flush DNS cache on Windows  (0) 2010.02.22

최근의 리눅스 배포판들의 fstab파일에는 주로 디바이스 경로가 아니라 UUID값이 들어가 있는데, 이러한 디바이스의 UUID를 확인하기 위해서는 vol_id 명령을 사용한다. 사용법은 아래와 같다.

# vol_id [디바이스 경로]
ex> vol_id /dev/sda1

프로그램을 실행하면 다음과 같은 형식으로 내용이 출력되는데, 'ID_FS_UUID' 항목에 나오는 값이 바로 해당 디바이스의 UUID이다.

ID_FS_USAGE=filesystem
ID_FS_TYPE=xfs
ID_FS_VERSION=1.0
ID_FS_UUID=34694935-eca3-4c9c-85ab-b16ca1bd548b
ID_FS_UUID_ENC=34694935-eca3-4c9c-85ab-b16ca1bd548b
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=

반대로 UUID를 이용해서 디바이스 경로를 알아내기 위해서는 'findfs' 명령을 사용한다. 사용법은 다음과 같으며, 명령을 입력하면 바로 디바이스 경로를 출력한다.

# findfs UUID=[UUID값]
ex> findfs UUID=34694935-eca3-4c9c-85ab-b16ca1bd548b
[추가]

최근 우분투 배포판에서는 vol_id 명령이 빠졌다. 대신 blkid 명령을 사용할 수 있다. 사용법은 다음과 같다.

# blkid
# blkid [디바이스 경로]


'Operating' 카테고리의 다른 글

Flush DNS cache on Windows  (0) 2010.02.22
간단하게 SMTP 서버 테스트 하기  (0) 2009.11.10
리눅스에서 가상 메모리 공간 지정하기  (0) 2009.09.23

간단히 telnet 클라이언트를 사용해서 SMTP 서버를 테스트해보는 방법이다.

  1. "telnet < 서버 이름> 25" 엔터
  2. "ehlo < 서버 이름" 엔터
  3. (인증이 필요할 경우) "auth login" 엔터
  4. (인증이 필요할 경우) BASE 64 인코딩된 사용자이름 입력
  5. (인증이 필요할 경우) BASE 64 인코딩된 비밀번호 입력
  6. "mail from:< 보내는 메일 주소>" 엔터
  7. "rcpt to:< 받을 메일 주소>" 엔터
  8. "data" 엔터
  9. 메일 내용 작성후 엔터 두번을 연타하면 완료
  10. "quit" 엔터

BASE 64 인코딩은 여기를 비롯해서 구글링하면 쉽게 해볼수 있다.

리눅스에서는 스왑(가상 메모리) 공간으로 사용하기 위해서 파티션을 만드는 것이 일반적이지만, 다음과 같이 파일을 만들어 스왑 공간으로 사용하는 것도 가능하다.

# dd if=/dev/zero of=[스왑 파일 (예)/swapfile] bs=1024 count=2048 (kb단위, 이경우 2MB)
# mkswap -c [스왑 파일] 2048
# swapon [스왑 파일]

물론, 아래와 같이 파티션을 새로 만들어서 스왑으로 사용하는 것도 가능하다.

# fdisk 등을 사용해서 스왑 파티션을 잡는다.(type 82)
# mkswap -c [파티션 경로 (예)/dev/sda2]
# swapon [파티션 경로]

+ Recent posts