노트가 너무 길어져서 각각의 글로 나눠서 포스팅했습니다.

 

http://jswlinux.tistory.com/category/Computer/Solaris%20/%20솔라리스

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

오픈솔라리스/오픈인디아나는 리눅스와 비교해서 여러모로 프로그램/패키지가 참 부족하다.

그래서 Gentoo Prefix on Solaris라는 프로젝트도 쓸만한데, 내 경험으로는 빌드가 안된다. 그래서 바이너리를 배포하는 좋은 곳이 있어서 소개해드린다.

아래의 명령어만 입력하면 된다.

pfexec pkgadd -d http://get.opencsw.org/now

위의 명령어에서 멈추는데, Ctrl+C를 눌러서 종료를 해도 괜찮다. 이미 pkgutil/opt/csw/bin에 다운로드 되어있다.

이제 /opt/csw/bin/pkgutil -v를 해서 만약 버전이 1.7이 나오면 업그레이드를 해준다.

pfexec pkgutil -u pkgutil

pkgutil -v


무슨 패키지가 있나 궁금하시면 http://www.opencsw.org/get-it/packages/ 여기를 가보시면 된다.

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

zfs list : zfs에서 마운트되는 디렉토리(?) 리스트. 이 리스트에 있어야만 스냅샷을 찍을 수 있다.

zfs list -o name -t snapshot : 스냅샷 리스트

zfs가 사용 중인 메모리 양 확인하기
kstat zfs:0:arcstats:size
또는

pfexec mdb -k 한뒤, ::memstat
종료할 때는 ::quit



ZFS 용 storage pool 생성 & filesystem 생성

zpool status: 현재 pool 상태 확인

zpool list: 현재 pool 리스트

zpool create -m /data externalHDD c1d0s0 c1d1s0 : /data 에 externalHDD라는 zfs파일시스템을 생성
* pool의 가장 상위 레벨 장치는 오프라인 전환이 불가능하며, destroy 실행시 모든 자료가 날아간다.


zfs에 파일시스템 추가하기

zfs create rpool/경로명 (만약 /var/apache2/2.2/htdocs를 추가하고 싶으면, /var, /var/apache2/,

/var/apache2/2.2/, /var/apache2/2.2/htdocs 모두 추가해야한다.

예: zfs create rpool/var; zfs create rpool/var/apache2)

zfs set mountpoint=원하는경로명 rpool/경로명

(예: zfs set mountpoint=/var/apache2/2.2/htdocs rpool/var/apache2/2.2/htdocs)

zfs set sharenfs=on rpool/경로명

zfs set compression=on rpool/경로명

zfs get compression rpool/경로명

(참고: /var/mysql은, mysql 설치 이후에 zfs로 파일시스템 생성 후 마운트 시켰을 경우 mysql 디비테이블이 모두 망가졌었음. 따라서 먼저 zfs에서 파일시스템을 먼저 만들어놓고 mysql 설치했음)



스냅샷 찍을 때

zfs list 했을 때,

jswlinux@server:/usr/lib/pkgconfig$ zfs list

NAME                              USED  AVAIL  REFER  MOUNTPOINT

rpool                            10.0G   137G    81K  /rpool

rpool/ROOT                       5.87G   137G    19K  legacy

rpool/ROOT/opensolaris           69.6M   137G  2.93G  /

rpool/ROOT/opensolaris-05.2010   5.80G   137G  5.60G  /

rpool/dump                       1.44G   137G  1.44G  -

rpool/export                     1.26G   137G    22K  /export

rpool/export/home                49.6M   137G    21K  /export/home

rpool/export/home/jswlinux       49.6M   137G  40.1M  /export/home/jswlinux

rpool/export/webserver           1.21G   137G    22K  /export/webserver

rpool/export/webserver/ROOT      1.21G   137G    19K  legacy

rpool/export/webserver/ROOT/zbe  1.21G   137G  1.20G  legacy

rpool/swap                       1.44G   138G   101M  -

jswlinux@server:/usr/lib/pkgconfig$


라고 나왔는데, / 아래의 디렉토리에 대해서 스냅샷을 찍을 경우 rpool/ROOT에 recursive 옵션을 붙여도 스냅샷은 찍히지 않는다. 반드시 현재 BE의 이름, 즉 다시 말해 rpool/ROOT/opensolaris-05.2010에 대해서 스냅샷을 찍어야한다.

zfs snapshot -r rpool/ROOT/opensolaris-05.2010@20111025

 


웹서버 사이트 파일들의 전용스냅샷을 위한 zfs 파일시스템 생성

zfs create rpool/var

zfs create rpool/var/apache2

zfs create rpool/var/apache2/2.2

zfs create rpool/var/apache2/2.2/htdocs

(아래 명령어에서, 마운트포인트가 이미 존재해서 안된다는 메시지가 나오면, cd /var/apache2/2.2; mv htdocs ht식으로 이름을 잠시 변경해준다)

zfs set mountpoint=/var/apache2/2.2/htdocs rpool/var/apache2/2.2/htdocs

mv ht/* htdocs/

chown -R root:bin htdocs

rm -rf ht

zfs set sharenfs=on rpool/var/apache2/2.2/htdocs

zfs set compression=on rpool/var/apache2/2.2/htdocs

zfs get compression rpool/var/apache2/2.2/htdocs

 

 

나의 스냅샷 리스트

/usr/sbin/zfs snapshot -r rpool/var/apache2/2.2/htdocs@`date +%m.%d.%Y-%H:%M`

/usr/sbin/zfs snapshot -r rpool/export/home/jswlinux@`date +%m.%d.%Y-%H:%M`

/usr/sbin/zfs snapshot -r rpool/var/mysql@`date +%m.%d.%Y-%H:%M`

/usr/sbin/zfs snapshot -r rpool/ROOT/opensolaris-01.02.2010@`date +%m.%d.%Y-%H:%M`

 


zfs 캐쉬파일시스템 만들기 (USB 메모리스틱이나 SD카드로)
장치명을 확인하기 위해 데스크탑에 마운트 된 메모리스틱/SD카드의 이름을 참고하거나 혹은 format 명령어로 확인한다. 만약 format 명령어로 나오지 않는 타입의 메모리의 경우 format -e로 확인한다.
cat /etc/mnttab |grep 장치명
umount /media/장치명

zpool add rpool cache 장치명

zpool status 에서 확인

 


기존 Pool에 장치 c1t4d0을 추가
zpool add zfs_stripe c1t4d0


 

ZFS pool 관리
zpool add zfs_stripe c1dt4d0
zpool create -m /vfs/vfs_M vfs_mirror mirror c1t5d0 c1t6d0: mirror Pool 생성 (mount point 설정)
zpool create -m /vfs/vfs_R vfs_raid raidz c1t2d0 c1t3d0 c1t4d0: RAIDZ pool 생성. 최소 3개 이상 묶어줌

 

 

Pool Import / Export (사실상 하드를 뗏다붙였다하는 용도로 쓸 수 있다고 보면 된다)

pool Export

zpool export -f vfs_raid : 파일의 권한을 다른 컴퓨터에게 주기위해 권한을 포기.

 

Pool Import

zpool import vfs_raid

zpool import -d /dev/dsk : export에서 포기한 권한을 검색


Pool 제거 (destroy는 모든 자료를 삭제하니 주의한다)

zpool destroy zfs_mirror

 

Pool 내에 device Off-line

zpool offline vfs_mirror c1t5d0

 

Pool 내에 device On-line

zpool online vfs_mirror c1t5d0

 

Pool 내의 disk문제로 인한 disk 교체

zpool replace vfs_raid c1t3d0 c1t6d0 : c1t3d0 을 c1t6d0 으로 교체

 

disk 제거와 추가

zpool detach vfs_raid c1t3d0 : c1t3d0 제거

zpool attach vfs_raid c1t6d0 : c1t6d0 추가


하드디스크 2개를 따로 추가해서, 별도의 zpool2라는 풀을 만들고 그 둘을 미러링하는 경우

zpool create zpool2 mirror c2d0s0 c2d1s0
zpool status zpool2


ZFS filesystem 관련 명령

기존 Pool(Dataset) 에서 Filesystem 추가 생성 (자식 파일 시스템 생성)

zfs create vfs_mirror/d1

zfs create vfs_mirror/d2

 

자식 파일 시스템의 Mount Point 변경

zfs set mountpoint=/vfs/data1 vfs_mirror/d1

 

부모 파일시스템의 Mount Point변경

zfs set mountpoint=/vfs/parent1 vfs_mirror

오픈인디아나/오픈솔라리스/오라클 솔라리스 등에서 버츄얼 박스 사용시,
zfs에 가상디스크를 생성하면, zfs 특성상 모든 메모리를 캐시로 사용하려고 해서 시스템 전체가 느려짐.
따라서 버츄얼박스가 사용하려는 디렉토리를 별도의 마운트 포인트로 잡아주고 캐쉬를 비활성화한다.
zfs set primarycache=none, secondarycacne=none pool


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

오픈인디아나에서 PS1 수정시,

.bashrc 말고 .profile 수정

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

기본 패키지 명령어

 

pkg search name

pkg install name

pkginfo name


pfexec pkgadd -d http://www.opencsw.org/pkg_get.pkg 이후,

pkg-get -a 설치가능한 패키지 목록 나열
pkg-get -c 설치한 패키지와 비교
pkg-get -i 설치
pkg-get -D 검색
pkg-get -U 모든 CSW 패키지 업그레이드

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

Solaris 10 dvd 준비 (오픈솔라리스가 아님)


cd /media/SOL_10_1009_X86/Solaris_10/Product/

pfexec pkg. add -d . SUNWmcon SUNWmconr SUNWmcos SUNWmcosx SUNWmctag SUNWjato SUNWjhrt SUNWzfsgu

pfexec svcadm enable system/webconsole:console

pfexec smcwebserver start


웹브라우저에서 https://localhost:6789/


블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

1. /etc/services 파일에서 포트 확인


2. svcs ftp 확인 후 있으면 시작


3. 없으면

ls /usr/sbin/in.ftpd 파일 확인

4. 없으면 설치

pfexec pkg install SUNWftp


5. 설정

vi /etc/inetd.conf ftp 관련항목 주석해제

pfexec inetconv (ftp 서버데몬의 manifest를 가져옴)

svcs ftp

pfexec svcadm enable ftp

svcs ftp

6. 상위디렉토리 접근 금지시

vi /etc/ftpd/ftpaccess 에서 restricted-uid * 추가


7. umask 변경

pfexec inetadm -m sec:/network/ftp:default exec="/usr/sbin/in.ftpd -a -u 002"

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

패키지 매니져에서 iconv로 검색, 나오는 모든 패키지 설치한 뒤,

Xchat에서 인코딩 CP949 선택

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

오픈인디아나에서 삼바 설치는 상당히 쉽다.

먼저 패키지를 설치한다.
pfexec pkg install samba

설치가 끝나면 /etc/samba/smb.conf 파일을 생성해준다.
필자의 "잘 구동되는" 파일을 올려본다.


[global]

workgroup = WORKGROUP

server string = FileServer

netbios name = FileServer

security = user

load printers = yes

log file = /var/samba/log/log.%m

max log size = 50

encrypt passwords = true

passdb backend = smbpasswd

unix charset = UTF-8

display charset = UTF-8

unix extensions = no

wide links = yes

follow symlinks = yes

veto files = /Thumbs.db/Backup/Desktop

dns proxy = no

hide dot files = yes

hide files = /.*/

case sensitive = yes

preserve case = yes

short preserve case = yes


[homes]

comment = File Server

browseable = no

read only = no

writable = yes

valid users = %S

dos filetimes = true

guest ok = no

create mask = 0664

directory mask = 0775

dont descend = config defaults

map archive = no

map system = no

map hidden = no

delete readonly = yes

inherit permissions = no

nt acl support = no

[printers] 
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no

writable = no

printable = yes


삼바의 설정에 대해서 모두 설명할 수는 없으니, 본인이 참고한 사이트를 알려드린다.

서비스 데몬을 시작해준다.
pfexec svcadm enable samba wins

삼바 서비스를 이용할 사용자를 추가해준다.
pfexec smbpasswd -a USERNAME
pfexec smbpasswd -e USERNAME

 

블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,

오픈인디아나에서 MySQL은 AMP만 설치하면 같이 설치되니 별도로 해줄 것은 없다.

설치법: http://jswlinux.tistory.com/entry/오픈인디아나-151a에서-APM-설치하기

 

MySQL 초기 세팅

mysql -u root

use mysql

update user set password=password('password') where user='root';

flush privileges;

quit


Joomla에서 64비트 mysql 버그 (Error loading Modules: MySQL server has gone away) 해결법

svccfg -s mysql:version_51 setprop mysql/enable_64bit=true

svcadm refresh mysql:version_51

svcadm restart mysql:version_51



블로그 이미지

jswlinux

Seowon Jung의 잡동사니 보관소

,