분산 네트워크 파일 시스템인 Andrew File System 의 Implementation 중 OpenAFS 의 설치, 운용에 대한 전반적인 매뉴얼. 이 매뉴얼에서는 GentooLinux 배포판 기준으로, OpenAFS 를 운용하는데 '''고통없는''' 가이드를 목적으로 하고 있다. see {us} http://www.openafs.org [[TableOfContents]] = 이 문서에 대하여 = 버전 0.23 갱신일 2006년 11월 21일 저작자 2006 (C) 신종훈 (LunA_J`etch, email : luna.jetch_at_gmail_dot_com) 이 매뉴얼은 [http://creativecommons.org/licenses/by-sa/2.5/ Creative Commons ShareAlike-2.5] 라이센스에 의한 보호를 받습니다. OpenAFS 는 IBM Public License의 보호를 받습니다. = 서버를 구성하기 전에 알아야 할 사항들 = 대강의 추상적인 서비스 구조는 다음과 같다: http://etchi.cafe24.com/pngs/afs_networks_image.png 서비스 하는 측면에서는, 다수의 Replica 를 구성하여 백업/분산의 용도로 확장하기 좋다. 클라이언트 측면에서는, 다수의 볼륨을 일일이 마운트 해 줄 필요 없이, 셀(Cell) 설정 만으로 서버사이드에서 정한 대로 연결된 다수의 물리적 스토리지를 사용할 수 있다. Cell 은 네트워크 내 구성된 AFS 서비스를 한번에 묶는 이름의 의미로 사용되며, AFS가 인식하는 실제 물리적 파일시스템 공간을 파티션(partition), AFS에서 서비스를 할 때 사용되는 논리적인 파일시스템 공간을 볼륨(Volume) 이라고 부른다. == 이 매뉴얼에서 언급하는 시스템 환경에 대하여 == OpenAFS 서버를 구성하기 전에, 자신의 네트웍 환경과, 설치할 서버들, 그리고 사용할 클라이언트의 수 등을 고려하여 서버를 구성해야 하는 것은 당연한 일이다. 이 예제에서 보여주는 환경은 다음과 같다: * afsdisk1 컴퓨터 : OpenAFS 메인 DB 서버 인스턴스 + 파일 서버 인스턴스 * afsdisk2 컴퓨터 : OpenAFS 파일 서버 인스턴스 * 100명 이하의 클라이언트 인스턴스 {i} 다수의 사용자를 관리해야 하는 입장이라면, 이 매뉴얼에서 사용하는 OpenAFS 기본 인증 서버(kaserver) 대신 Kerberos v5 + openssl + 계정 정보를 담은 백엔드(ldap, radius 등) 로 인증 서버를 구축할 것을 권장한다. == 구축할 수 있는 서버 인스턴스들에 대하여 == 구축할 수 있는 서버 인스턴스들의 목록은 다음과 같다: || 인스턴스 || 사용 용도 || || kaserver ||인증 데이터베이스를 관리하기 위한 인증 서버. kerberos v5 기준에 만족하는 인증서버를 총칭하는 인스턴스 명.|| || buserver ||백업 데이터베이스를 관리하기 위한 백업 서버의 인스턴스 명.|| || ptserver ||프로텍션(Protection) 데이터베이스를 위한 프로텍션 서버.|| || vlserver ||VLDB(볼륨 위치 데이터베이스 : Volume Location Database)를 관리 하기 위한 볼륨 위치 서버(VLS). 각 셀을 구성하는 볼륨의 위치를 기억하고 관리하는, 대단히 중요한 구성품이다.|| || upserver ||업데이트 서버. 서버의 설정/바이너리들을 다른 업데이트 클라이언트들에게 전파하는 역할을 한다.|| || fs ||파일 서버. 하나의 파일서버 인스턴스는 Fileserver (파일 서버), Volserver (볼륨서버), Salvager 로 구성된다.|| || upclientetc ||클라이언트 부분의 업데이트 서버. 서버의 설정을 받아오는 인스턴스를 의미한다.|| || upclientbin ||클라이언트 부분의 업데이트 서버. 서버의 AFS 관련 바이너리를 받아오는 인스턴스를 총칭.|| || runntp ||ntp 클라이언트에 해당하는 서버. ntp 서버로 부터 시간정보를 받아와 동기화하는 인스턴스.|| 이것을 보고 생각해야 할 것은, 시스템의 구성에 따라 그 역할을 분산시킬 수 있기 때문이다. 하나의 '''OpenAFS 메인 서버'''는 최소한 '''인증(kaserver) / 백업(buserver) / 프로텍션(ptserver) / VLDB(vlserver) / (서버 부분의) 업데이트 서버(upserver)''' 에 대한 인스턴스를 가지고 있어야 하며, 메인 서버와 맞물려 스토리지를 제공하는 '''파일 서버'''의 경우 '''클라이언트 부분의 업데이트 서버(upclientetc) / 서버 부분의 업데이트 서버(upserver) / 파일 서버(fs)''' 인스턴스를 가져야 최소한의 동작 보증을 할 수 있다. 좀 더 네트웍/시스템 환경의 분산을 고려한다면 데이터베이스 서버를 Replication 하는 방식으로 여러대로 분산 시킬 수도 있다. 스토리지 역시 서버 레벨에서의 Replication을 제공하기 때문에 분산의 혜택을 받을 수 있는 것들 중 하나이다. 충분히 고려한 후 서비스를 구성하여도 늦지 않다. 최소한, 고려하지 않고 변경에 따른 소요비용을 고려한다면 더욱 그러할 것이다. = OpenAFS Database Server 구성 (최초구성) = 이 단락에서는 OpenAFS 서비스를 위한 메인 데이터베이스를 설치하고, 셀을 생성하고, 사용자 계정을 생성하는 부분을 언급할 것이다. == 미리 준비해야 할 것들 == OpenAFS를 설치, 운용할 서버가 필요함은 말할 것도 없다. OpenAFS를 사용하기 위해서는, 되도록 bind(named)를 사용하여 FQDN을 만족시켜 줄 필요가 있다. 현재 시스템이 참조하는 네임서버를 구성하던지 해서, hostname.domain.name 을 만족시켜야 할 것이다. 여기서는 첫번째 서버를 '''afsdisk1.testbed.org''' 라고 칭하게 될 것이다. (두번째 서버는 '''afsdisk2.testbed.org''' 가 될 것이다) Kerberos + openssl 을 사용할 수 있다. 다만, 이 매뉴얼에서는 언급하지 않을 것이다. 필요시 OpenAFS 공식 문서를 참조하기 바란다. 또한, 여러대의 AFS 서버 풀을 구성하려면, (최소한) 동등 셀은 같은 시간으로 동기화되어 있어야 한다. 이를 위해, 한대의 ntp 서버를 구성할 것을 권장한다. == OpenAFS 설치 == 먼저, OpenAFS를 설치해야 한다. {{{#!vim root@afsdisk1 # emerge net-fs/openafs }}} 위의 명령을 내리면, openafs-kernel 과 openafs 패키지가 설치 될 것이다. 위의 명령어를 통해 커널 모듈과 바이너리가 정상적으로 빌드될 것이다. 테스트를 해보자면,2.6.18 최신 커널에서도 무리없이 컴파일이 될 것이다. {i} 공식 문서가 설치되길 원한다면, emerge app-doc/afsdoc 을 설치하면 된다. 설치되는 장소는 OpenAFS가 Transarc 에서 IBM으로, 그리고 공개 되었을 때 변경되었다: 대강의 구조는 아래의 표를 참조하길 바란다: || 디렉토리 || 사용용도 || Transarc || 기본형태 || Gentoo || ||viceetcdir|| 클라이언트 설정 || {{{/usr/vice/etc}}} || {{{$(sysconfdir)/openafs}}} || {{{/etc/openafs}}} || ||unnamed|| 클라이언트 바이너리 || {{{unspecified}}} || {{{$(bindir)}}} || {{{/usr/bin}}} || ||afsconfdir|| 서버 설정 || {{{/usr/afs/etc}}} || {{{$(sysconfdir)/openafs/server}}} || {{{/etc/openafs/server}}} || ||afssrvdir|| 내부 서버 바이너리 || {{{/usr/afs/bin (servers)}}} || {{{$(libexecdir)/openafs}}} || {{{/usr/libexec/openafs}}} || ||afslocaldir|| 서버 상태 || {{{/usr/afs/local}}} || {{{$(localstatedir)/openafs}}} || {{{/var/lib/openafs}}} || ||afsdbdir|| 인증/서버리스트 등의 DB || {{{/usr/afs/db}}} || {{{$(localstatedir)/openafs/db}}} || {{{/var/lib/openafs/db}}} || ||afslogdir|| 로그 || {{{/usr/afs/logs}}} || {{{$(localstatedir)/openafs/logs}}} || {{{/var/lib/openafs/logs}}} || ||afsbosconfig|| Overseer 설정 || {{{$(afslocaldir)/BosConfig}}} || {{{$(afsconfdir)/BosConfig}}} || {{{/etc/openafs/BosConfig}}} || {i} net-fs/openafs-legacy 를 설치하면, Transarc 디렉토리 형태로 소프트 링크를 만들어준다. == BOS (Basic Over Seer) Server 초기 구동 == 최초 설치의 경우 설정 디렉토리(/etc/openafs)를 보면 {{{CellServDB}}} 파일과 {{{ThisCell}}} 파일이 있는데, 이 파일을 들여다보면 잘못된(?) 초기화 내용을 담고 있다. 초기화를 위해, 가차없이 삭제하자. {{{#!vim root@afsdisk1 # rm -f /etc/openafs/CellServDB root@afsdisk1 # rm -f /etc/openafs/ThisCell }}} ps. 기존에 afs를 설정한적이 있다면 /etc/openafs/BosConfig 파일도 삭제하도록한다. 이제, bosserver를 다음 명령을 통해 초기화하자: {{{#!vim root@afsdisk1 # bosserver -noauth && }}} {i} -noauth 옵션은 당신이 현재 admin 권한이 충분히 설정되어 있지 않기 때문에, 인증 절차를 무시하고 접근하기 위해 사용하는 것이다. 보안상으로 위험하므로, 습관상 -noauth를 붙여 유지보수를 하지 않도록 해야 할 것이다. 위의 명령을 수행하면 /etc/openafs/server 디렉토리안에 이전의 {{{CellServDB}}} 파일과 {{{ThisCell}}} 파일이 생성되고, /etc/openafs 에 그 파일들에 소프트 링크가 걸려있을 것이다. == Cell 이름 생성 == 물리적/논리적으로 분산되어 있는 Storage Pool 을 엮어주기 위해, 구간을 정하는 일을 해야 한다. OpenAFS 에서는 동일 Cell 이름으로 스토리지 풀을 구별한다. 이 매뉴얼에서는, '''''powercell''''' 을 사용할 것이다. :p 이 Cell 이름이 클라이언트가 마운트 해야 할 이름이기 때문에, 되도록이면 짧게 짓는 것이 좋을 것이다. {i} Cell 이름은 '''대문자를 포함하지 않는''' 조건과 함께 영문/숫자 64자로 제한되어 있다. 절대 대문자로 셀 이름을 정하지 말것. Cell 이름은 bos setcellname 명령어를 통해 구성할 수 있다. 용법은 아래와 같다: 용법 : {{| # bos setcellname -noauth |}} 아래와 같이, afsdisk1.testbed.org에 powercell 이라는 셀 이름을 정해준다. {{{#!vim root@afsdisk1 # bos setcellname afsdisk1.testbed.org powercell -noauth }}} == 데이터베이스 서버의 시작 및 구성 == 다음에 해 줄 일은, '''bos create''' 명령어를 사용, {{{/etc/openafs/BosConfig}}} 설정 파일에 데이터베이스 서버 프로세스들을 위한 설정을 추가해주고, 서버를 실행하는 일이다. 아래의 4개 프로세스를 띄우는데, 이는 셀에 포함되는 스토리지 서버에 설정되는 것이 아니라, 단일 셀을 구성하는 데이터베이스 서버 머신에만 있으면 되는 사항이다. || 실행 파일 || 사용 용도 || || kaserver ||인증 데이터베이스를 관리하기 위한 인증 서버다. 이는 Kerberos 5 인증 서버로 대체 가능하고, 기존에 Kerberos 인증 환경이 구축되어 있지 않다면 이를 사용하면 된다. (무리해서 Kerberos 를 구성할 필요가 없다는 뜻)|| || buserver ||백업 데이터베이스를 관리하기 위한 백업 서버. || || ptserver ||프로텍션(Protection) 데이터베이스를 위한 프로텍션 서버.|| || vlserver ||VLDB(볼륨 위치 데이터베이스 : Volume Location Database)를 관리 하기 위한 볼륨 위치 서버(VLS). 각 셀을 구성하는 볼륨의 위치를 기억하고 관리하는, 대단히 중요한 구성품이다.|| 위의 서버들을 구성하는 설정값을 갖추고 실행하기 위해, 다음의 용법을 사용해 설정한다: {{| # bos create <{{{server name}}}> <{{{XXserver}}}> simple <{{{XXserver의 위치}}}> -cell <{{{cell name}}}> -noauth |}} 각 서버 프로세스의 위치는 afssrvdir (1.2 절의 디렉토리 목록표를 참조할것), 즉 '''''/usr/libexec/openafs''''' 디렉토리에 있다. === 각 데이터베이스 서버 구성 및 실행 === 위의 용법을 토대로, 위의 4가지 실행파일을 다 등록/실행하기 위해, 아래와 같이 실행하였다: {{{#!vim root@afsdisk1 # bos create afsdisk1.testbed.org kaserver simple \ /usr/libexec/openafs/kaserver -cell powercell -noauth root@afsdisk1 # bos create afsdisk1.testbed.org buserver simple \ /usr/libexec/openafs/buserver -cell powercell -noauth root@afsdisk1 # bos create afsdisk1.testbed.org ptserver simple \ /usr/libexec/openafs/ptserver -cell powercell -noauth root@afsdisk1 # bos create afsdisk1.testbed.org vlserver simple \ /usr/libexec/openafs/vlserver -cell powercell -noauth }}} {i} 최초 구성을 이미 한 상태라면, 상단의 '''create''' 대신 '''start'''를 넣으면 각 서버를 띄울 수 있다. === 각 데이터베이스 서버 동작 확인 === 위의 설정으로 4개의 서버를 등록한 후, '''bos status''' 명령으로 현재 상태를 볼 수 있다. 다음의 명령을 통해 상태를 알아보자: 정상적이라면 아래처럼 메시지가 뜰 것이다. {{{#!vim root@afsdisk1 # bos status afsdisk1.testbed.org -noauth Instance kaserver, currently running normally. Instance buserver, currently running normally. Instance ptserver, currently running normally. Instance vlserver, currently running normally. }}} == AFS 보안 메커니즘 초기화를 위한 (최초) 사용자 계정 생성 == Cell 보안 메커니즘을 초기화하기 위해, 2개의 설정 엔트리를 인증 데이터베이스에 추가해야 한다. 하나는 메인 관리자 계정(admin)을 생성하는 것이고, 다른 하나는 AFS 프로세스를 위한, afs 라는 계정을 생성하는 것이다. {i} afs 계정은 시스템 구성을 위해 반드시 생성해야 한다. === kas 를 사용한 사용자 계정 생성 === 이를 위해 kas 라는 사용자 명령행 툴을 사용한다. 최초 실행 용법은 아래와 같다: {{| # kas -cell <{{{cell name}}}> -noauth |}} 목표 달성을 위해, 상단의 용법을 토대로 kas 를 실행하자: {{{#!vim root@afsdisk1 # kas -cell powercell -noauth }}} 위의 명령을 실행하면, '''ka>''' 라는 프롬프트가 뜨게 될 것이다. '''create''' 명령을 사용하여 사용자 엔트리를 생성하고, '''examine''' 을 사용하여 생성된 엔트리를 검사한다. '''setfields''' 명령을 사용하여, admin 계정이 관리자임을 인식시키면 된다. 이제 아래와 같이 실행하도록 하자: {{{#!vim ka> create afs initial_password: Verifying, please re-enter initial_password: ka> create admin initial_password: Verifying, please re-enter initial_password: ka> examine afs User data for afs key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:30 2001 password will never expire. An unlimited number of unsuccessful authentications is permitted. entry never expires. Max ticket lifetime 100.00 hours. last mod on Mon Jun 4 20:49:30 2001 by permit password reuse ka> setfields admin -flags admin ka> examine admin User data for admin (ADMIN) key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:59 2001 password will never expire. An unlimited number of unsuccessful authentications is permitted. entry never expires. Max ticket lifetime 25.00 hours. last mod on Mon Jun 4 20:51:10 2001 by permit password reuse ka> }}} === 생성한 사용자를 사용자 리스트에 추가하는 방법 === 위 구간을 수행, kas를 통해 사용자 계정을 생성하였지만 계정을 사용자 리스트에 따로 추가해야 한다. admin 계정을 사용자 리스트({{{/etc/openafs/server/UserList}}})에 추가하도록 하자. 용법과 사용예는 아래와 같다: 용법: {{| # bos adduser <'''server name'''> <'''account name'''> -cell <'''cell name'''> -noauth|}} 위의 용법을 기초로 아래의 명령을 수행, admin 계정을 사용자 리스트에 추가했다: {{{#!vim root@afsdisk1 # bos adduser afsdisk1.testbed.org admin -cell powercell -noauth }}} (admin 이외에도) 생성된 사용자는, 완전한 동작을 위해 ptserver에 마찬가지로 등록이 되어야 할 것이다. == AFS 서버 암호화 키를 생성하기 == 이제 AFS 서버의 암호화를 위한 키를 생성해야 한다. '''bos addkey''' 명령을 사용하여, 이 목적을 달성할 수 있다. 사용법은 다음과 같다: {{| # bos addkey <'''server name'''> -kvno 0 -cell <'''cell name'''> -noauth |}} 위의 용법대로 실행 할 경우, 암호 키를 집어넣으라고 하는데, 이 키의 값은 자신이 '''afs''' 계정을 생성할 때 사용한 키와 '''동일하게''' 넣어야 한다. == (ptserver) 프로텍션 데이터베이스에 admin 계정 연결하기 == '''pts createuser''' 명령어를 사용해서, 프로텍션 데이터베이스에 admin 사용자를 위한 엔트리를 생성해야 한다. {i} 기본적으로, 프로텍션 서버는 AFS UID(사용자 ID) 1을 관리자로 할당하는데, 이는 이제까지 생성한 기록상 첫번째 유저가 admin 이기 때문이다. 필요할 경우, -id 옵션을 사용해 조정할 수 있다. 문제는, UNIX 상에서의 실제 admin 유저의 UID를 필요로 한다는 것인데, 이를 위해서는 어쩔 수 없이(?) admin 계정을 만들어줘야 할 것이다. (혹은 기존의 bin 계정 - 즉 시스템의 UID가 1인 계정으로 AFS에 기록이 되는것을 보던지.) 이 admin 계정을 만들어 UID를 알아낸 후, -id 옵션을 붙여 UID를 매핑시켜주는데, admin 계정이나 기타 afs에서 사용할 계정이 반드시 로그인 되어야 할 필요는 없다는 뜻이다. (/bin/false 를 셸로 지정해도 된다는 뜻이다.) 사용법은 아래와 같다: {{| # pts createuser -name admin -cell <'''cell name'''> [-id <'''AFS UID'''>] -noauth |}} 위의 용법을 토대로, 아래의 명령어를 수행했다: 계정 생성후, admin의 UID가 1002번이라면, -id 1002 를 붙여주는 것이다. {{{#!vim root@afsdisk1 # pts createuser -name admin -id 1002 -cell powercell -noauth }}} 이제 이 사용자가 system:administrators 그룹에 포함될 수 있도록, '''pts adduser''' 명령을 사용하여 그룹에 포함시키고, '''pts membership''' 명령을 통해 확인하도록 하자. 아래의 예를 알아서 적절하게 고쳐가면서 사용하자. {{{#!vim root@afsdisk1 # pts adduser admin system:administrators -cell powercell -noauth root@afsdisk1 # pts membership admin -cell powercell -noauth Groups admin (id: 1002) is a member of: system:administrators }}} == AFS 서버 재시작 == 이제 상단의 설정이 끝났으면, 이제 까지 띄운 AFS의 모든 서버를 재시작 하도록 하자. 서버의 재시작을 위한 용법은 아래와 같다: {{| # bos restart <'''server name'''> -all -cell <'''cell name'''> -noauth |}} 위의 용법대로, 아래와 같이 실행하여 AFS 서버를 재시작 하자: {{{#!vim root@afsdisk1 # bos restart afsdisk1.testbed.org -all -cell powercell -noauth }}} == fs 인스턴스 : 파일 서버, 볼륨 서버, 그리고 Salvager 프로세스의 구동 == {i} '''''이 단락은 실제로 서비스를 위한 스토리지가 담긴 물리적 서버에서 추가되어야 하는 인스턴스 이다. 이는 원래 메인 서버에 필수적인 요소가 아니지만, 대부분이 데이터베이스 서버와 파일 서버가 같은 물리적 서버에서 작동하게 만드는 것이 보통이므로, 순차적인 구성을 보여주기 위해서 Database 서버 구성 목록에 포함시킨것이다.''''' 이제 '''bos create''' 명령을 다시 사용하여, 파일서버, 볼륨 서버, 그리고 Salvager를 등록하고, 구동해야 한다. 이들 3개의 프로세스는 다른 서버 프로세스와 마찬가지로 '''''/usr/libexec/openafs''''' 내에 있고, 각각 '''fileserver''', '''volserver''', '''salvager''' 라는 이름을 갖는다. 추가하는 방법은, 아래의 용법과 같다: {{| # bos create <'''server name'''> fs fs <'''파일서버 프로세스명'''> <'''볼륨서버 프로세스명'''> <'''salvager 프로세스명'''> -cell <'''cell name'''> -noauth |}} 위의 용법을 토대로, 아래의 명령문을 실행하면 된다: {{{#!vim root@afsdisk1 # bos create afsdisk1.ucsoft.org fs fs \ /usr/libexec/openafs/fileserver /usr/libexec/openafs/volserver \ /usr/libexec/openafs/salvager -cell powercell -noauth }}} === OpenAFS 서버 프로세스에 대한 세부 상태 확인 === 이제까지의 과정으로 모든 서버 프로세스를 구성하였으면, 그 프로세스가 잘 떠 있는지 다음의 용법으로 확인 할 수 있다: 역시 마찬가지로 '''bos status''' 명령을 사용한다. {{| # bos status -long -noauth |}} 위의 용법을 사용하여, 실행하면 다음과 같은 화면이 나온다: {{{#!vim root@afsdisk1 # bos status afsdisk1.testbed.org -long -noauth Instance kaserver, (type is simple) currently running normally. Process last started at Sun Nov 19 00:55:34 2006 (14 proc starts) Last exit at Sun Nov 19 00:52:08 2006 Command 1 is '/usr/libexec/openafs/kaserver' Instance buserver, (type is simple) currently running normally. Process last started at Sun Nov 19 00:56:08 2006 (14 proc starts) Last exit at Sun Nov 19 00:52:08 2006 Command 1 is '/usr/libexec/openafs/buserver' Instance ptserver, (type is simple) currently running normally. Process last started at Sun Nov 19 00:56:11 2006 (14 proc starts) Last exit at Sun Nov 19 00:52:08 2006 Command 1 is '/usr/libexec/openafs/ptserver' Instance vlserver, (type is simple) currently running normally. Process last started at Sun Nov 19 00:56:17 2006 (14 proc starts) Last exit at Sun Nov 19 00:52:08 2006 Command 1 is '/usr/libexec/openafs/vlserver' Instance fs, (type is fs) currently running normally. Auxiliary status is: file server running. Process last started at Sun Nov 19 00:55:34 2006 (4 proc starts) Last exit at Sun Nov 19 00:55:34 2006 Command 1 is '/usr/libexec/openafs/fileserver' Command 2 is '/usr/libexec/openafs/volserver' Command 3 is '/usr/libexec/openafs/salvager' }}} {i} 에러 발생으로 인한 종료의 경우, 종료시의 리턴값이 같이 나타나게 될 것이다. == Fileserver 의 UDP 리스닝 인터페이스 설정 == afslocaldir (/var/lib/openafs) 에서 {{{NetInfo}}} 파일을 생성하는 것으로, 현재 서버 시스템의 네트웍 인터페이스가 여러개일 때는 이들을 등록해줘야 한다. /var/lib/openafs 디렉토리로 이동, {{{NetInfo}}} 라는 이름으로 텍스트 파일을 작성한다. 입력 방식은 IP를 넣어주는데, 다음과 같이 한다: {{{#!vim 192.168.0.21 127.0.0.1 }}} 그런 다음, '''bos restart''' 명령을 사용, Fileserver를 재시작 하도록 한다. == 이제 무엇을 해야 하나? == 지금까지의 내용은 OpenAFS를 사용하기 위해, 최초로 서버를 구성하는 것에 대해서 다루었다. 서버를 구성했으면, 앞으로는 그 서버가 서비스할 셀을 제공하는 실제 스토리지 공간과 연결시켜줘야 하는 작업이 될 것이다. 그 작업을 위해, 다음 장인 OpenAFS Cell Volume 구성을 살펴보기 바란다. = OpenAFS Cell Volume 구성 = OpenAFS 서버를 구성하기 위한 두번째, 셀의 구성품인 볼륨(Volume)을 생성/추가하는 단락이다. 위의 단락을 통해 이제까지 볼륨을 담을 수 있는 큰 상자를 만들었다면, 이제 큰 상자안에 담길 그릇들을 넣을 차례이다. Cell Volume 들을 처음 구성한다면, 다음 두가지를 기억하라. 첫번째는 최소한의 구동을 위해 '''root.afs''' 와 '''root.cell''' 이 '''반드시 필요하다'''는 사실을 기억해야 한다. 두번째는 다른 시스템에 단순 파일 서버를 구성하기 위해, 앞에서 해왔던 '''데이터베이스까지 다른 시스템에 구축할 필요는 없다'''는 사실이다. 반드시 기억해두고, 구성에 임해야 할 것이다. == 디스크 준비 == 서비스를 할 디스크를 파티션을 쪼개던지, 물리 디스크를 한 파티션에 잡던지, 어떻게 하든 여분의 빈 파티션이 필요하다: AFS는 추가적인 디스크 캐싱을 하기 때문에, 파일 시스템은 ext2, 혹은 ext3을 사용할 것을 권장한다. 다른 파티션은 지원하지 않을 뿐 더러, 위험하기까지 하다. (reiserfs 의 경우, 에러 메시지를 출력하며 당신에게 경고를 할 것이다) {i} Transarc / 구 버전의 OpenAFS 는 분리된 ext2 파티션에 디스크 캐싱을 위한 공간을 필요로 했다. 이 사항 역시 지금은 바뀌었고, 지금은 /etc/openafs/cacheinfo 에 캐싱된 용량 상태를 저장한다. {i} SGI XFS를 쓰고 싶다면, 또다른 AFS 구현체인 arla (http://www.stacken.kth.se/project/arla/) 를 사용할 것을 권장한다. 여기서는, ''/dev/hda4'' 에 '''ext3'''으로 구성을 할 것이다. 준비가 되었으면, 루트 디렉토리에 vicep'''X''' 디렉토리를 만들어야 한다. ('''X''' 위치에는 선호하는 값을 넣는다. a를 넣든 b를 넣든, 영문 소문자로 넣는다. 여기서는 vicepa 로 설정하겠다.) {i} 경험상 X 위치에 숫자가 들어가거나 하면 인식하지 못하는 문제가 생긴다. {{{#!vim root@afsdisk1 # mkdir /vicepa }}} 이제 '''/etc/fstab''' 에 위 디렉토리로 파티션을 마운트하게 해 줘야 한다. /etc/fstab을 열고 아래의 줄을 추가해 줄 것이다: 아래의 내용을, 원하는 설정으로 고쳐서 사용하도록 하자. {{{#!vim fstab /dev/hda4 /vicepa ext3 defaults 0 2 }}} 이제, '''/etc/fstab'''에 설정해준 대로, 마운트를 하도록 하자. 아래의 명령을 내리면, /dev/hda4 는 /vicepa 디렉토리에 마운트 될 것이다. {{{#!vim root@afsdisk1 # mount -a }}} == (최초 구성시) 볼륨 서버 데이터베이스에 볼륨 생성하기 == 이 부분은 첫번째 AFS 서버를 구성할 때 사용하는, '''''root.afs''''' 라는 '''첫번째''' AFS 볼륨을 생성하는 부분이다. 사용법은 아래와 같다: {{| # vos create root.afs -cell -noauth |}} {i} 파티션 이름은, 실제 디바이스 파일 대신 앞에서 언급했던 파티션 이름을 사용해야 한다. (/vicep'''X''') 앞에서 '''/vicepa''' 로 생성한 것과 위의 용법을 토대로, 다음을 실행한다: {{{#!vim root@afsdisk1 # vos create afsdisk1.testbed.org /vicepa root.afs -cell powercell -noauth Volume 536870912 created on partition /vicepa of afsdisk1.testbed.org }}} 정상적으로 실행 될 경우, 해당 볼륨의 크기가 메시지에 포함될 것이다. 'partition /vicep01 does not exist on the server' 라는 메시지가 나오면, 해당 파티션을 마운트 하고, '''bos restart''' 명령으로 서버를 재시작 한 후 재시도를 하면 된다. == 서버 부분에서의 Update 서버 구성 == 셀에 포함된 다른 머신들에게 이들 디렉토리의 내용을 배포하기 위해, (서버 레벨에서의) Update 서버 (upserver 프로세스)를 시작해야 한다. 이들은 당신이 다른 서버 머신에서, 추가로 클라이언트 레벨의 Update Server를 구성할 때 활성화 된다. 용법은 아래와 같다: {{| # bos create upserver simple "/usr/libexec/openafs/upserver \ -crypt /etc/openafs/server -clear /usr/libexec/openafs" -cell -noauth |}} 위의 용법을 토대로, 서버레벨에서의 Update 서버를 구성하자: {{{#!vim root@afsdisk1 # bos create afsdisk1.testbed.org upserver simple \ "/usr/libexec/openafs/upserver -crypt /etc/openafs/server -clear /usr/libexec/openafs" \ -cell powercell -noauth }}} == 클라이언트 부분의 Update 서버 구성 == 이 부분을 접하면 이상하게 생각할 사항이, '''"왜 셀 볼륨만 있는 파일서버를 구성하는데 클라이언트 부분의 Update 서버가 필요한거지?"''' 가 될 것이다. 이 질문에 대한 대답은, '''"단순 파일서버 역시 메인 OpenAFS 서버로부터 설정들을 받아와야 하니까"''' 가 될 것이다. 따라서, OpenAFS 메인 서버 내에 만 파일 서비스를 추가하고 싶다면, 이 구간을 지나쳐도 될 것이다. 클라이언트 부분의 Update 서버는 2개로 나뉘어진다. 하나는 OpenAFS (Database) 서버로 부터 시스템 설정 사항을 받아오고(즉, /etc/openafs/server 설정을 배포하는 서버로 부터 설정을 받아오는), 동기화 하는 upclientetc 와, 바이너리 서버로부터 AFS 관련 바이너리를 동기화하는 upclientbin 이 있다. Thin Client 의 구성이 아니라면, 기본적으로는 upclientetc 만 설정하면 된다. 단순 셀 볼륨 파일 서버는 이 upclientetc 와 함께, 서버 부분에서의 Update 서버 (즉, upserver) 두가지를 필요로 한다. upclientetc 를 구성하는 용법은 다음과 같다: {{| # ./bos create <'''machine name'''> upclientetc simple \ "/usr/afs/bin/upclient <'''system control machine'''> [-t