리눅스와 윈도우에서 백업을 하는 방법은 여러가지가 있지만, 막상 백업 서버를 구축하고 이를 설정하려면 신경써야 할 부분이 한두가지가 아닙니다. 이번시간에는 오픈소스 백업솔류션이며,백업/복구가 강력하며, 백업 스케쥴링이 자동화 처리된 'BackupPC'를 설치하고 설정하는 방법에 대해서 알아 보겠습니다.

 

 

BackupPC 설치

 

 

epel-release-6-8.noarch.rpm

epel-release-5-4.noarch.rpm


wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

1.centos 5.x 버전은 
epel-release-5.4.noarch.rpm

centos 6.x 버전은
epel-release-5.4.noarch.rpm 을 설치한다.

 

[root@localhost ~]# rpm -Uvh epel-release-5-4.noarch.rpm
warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]

2.Yum 으로 backuppc 다운로드
[root@localhost ~]# yum install BackupPC
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: centos.tt.co.kr
.
.
.
Installed:
  BackupPC.x86_64 0:3.2.1-10.el5                                                       
.
.
.
  perl-Params-Validate.x86_64 0:0.88-3.el5                                             
  perl-Time-modules.noarch 0:2003.1126-4.el5.1                                         
  perl-XML-Parser.x86_64 0:2.34-6.1.2.2.1                                              
  perl-XML-RSS.noarch 0:1.31-1.el5                                                     

Complete!

3.이후 apache conf 파일 수정
vim /etc/httpd/conf/httpd.conf
[이전]
 
User apache
Group apache
 
[이후]
 
User backuppc
Group apache
4. #vim /etc/httpd/conf.d/BackupPC.conf (자동생성 됨) 수정
[이전]
 
allow from 127.0.0.1
 

[이후]
 
allow from all
5. 계정 생성 및 패스워드 설정
[root@localhost ~]# htpasswd -c /etc/BackupPC/apache.users admin
New password:1234 
Re-type new password: 1234
Adding password for user admin

6. 아파치 스타트 및 자동시작 추가
# service httpd start
# chkconfig httpd on
7. Config.pl 수정
vim /etc/BackupPC/config.pl 
$Conf{ServerInitdPath} = '/etc/init.d/backuppc';
$Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start';
$Conf{CgiAdminUsers} = 'admin';



10. ID : admin PW:5번에서 설정한 값 입력


성공!


BackupPC 설정




(1). 관리자 페이지 주요 메뉴

관리자 페이지 주요메뉴

1.Status - 메인 화면이며 전체 및 부분 백업에 실패한 서버들의 목록을 확인 가능

2. Host Summary - 각각의 서버들의 백업 상태를 한눈에 확인 가능

3. Edit Config - Backup 서버 기본 Config를 수정 가능

4. Edit Hosts - Backup 받을 서버 IP를 호스트로 추가 / 삭제 가능

5. LOG file - 전체적인 Backup에 대한 Log 확인가능

6. Documentation - BackupPC에 대해서 제공해주는 문서 기능



(2). Backup 받을 host 추가 작업

1. 주요 메뉴 - Edit Hosts 메뉴에서 Add 버튼 클릭 
2. Host 에 백업 받을 서버IP 입력,dhcp 체크 해제, user에 서버 닉네임 입력 이후 상단 save 클릭
3. F5로 refresh 이후  Select a host.. 드랍메뉴 클릭하여 추가한 IP 선택
4. Edit Config에서 Xfer 선택하여 셋팅 이후 Save(이건 밑에 따로 설명)
5. 추가 IP Home 버튼 클릭하여 최초 Start Full Backup 1회 진행(4번 셋팅 이후 풀백업 진행)



(3). Linux Xfer 세팅 방법

1.Edit config -> Xfer 클릭 



2.  'XferMethod' 를 rsync 로 설정

3. 'RsyncShareName' 에 백업 받을 경로 추가후 Save 클릭



4. 백업받을 서버에 접속하여 /etc/xinetd.d/rsync 파일을 열어 disable = yes 를 'disable=no'로 변경 한다.
(xinetd가 없으면 yum을 이용하여 설치하여 준다. yum install -y xinetd.d)

5.BackupPC 서버에서 root 계정,backuppc 유저의 ssh 개인키/공개키를 생성한후 백업받을 서버 /root/.ssh/authorized_keys 파일에 넣어준다.

[root@BackupPC]#su -s /bin/bash backuppc
[backuppc@BackupPC]$ssh-keygen -t dsa
이후 경로,암호는 디폴트 값으로 설정(엔터엔터)

 

[root@BackupPC]#ssh-keygen -t rsa

 


위에서 개인키와 공개키를 만든 위치로 이동후 id_dsa.pub,id_rsa.pub 안에 내용물을 복사후 백업받을 서버의 ~/.ssh/authorized_keys 파일안에 넣음
(authorized_keys 경로는 /etc/ssh/sshd_config에서 설정) 

6. 이후 웹페이지에서 'full backup' 클릭!

 

7. 자동으로 저장위치에 백업대상 IP로된 디렉토리가 생성 될 것이다. 이곳에서 backuppc 로 로그인후 rsync 로 짧게

파일을 다운받는다(다운도운 컨트롤+C로 취소 해도됨)

$rsync -avz root@[백업대상IP]:[경로] ./

 

8. 이후 다시 웹 UI 에서 Full backup 진행


9. Log 확인으로 정상적으로 백업이 이루어지는지 확인한다.



(4). Window Xfer 세팅 방법

1.Edit config -> Xfer 클릭 



2.smbsharename에 C드라이브인지 D드라이브인지 설정


3. smbshareusername 에 계정 입력 / smbSharePasswd 에 패스워드 입력



4. Backupfileonly 에 New key에 C드라이브 인지 D드라이브인지 입력이후 add, 이후 폴더 경로 지정


5. save 클릭

6. backup 받을 서버에서는 해당 드라이브를 공유

7. windows 방화벽에서 파일 및 프린터 공유를 체크 해준다.

8. 이후 웹 페이지에서 Full backup 실시

9. Log 확인으로 백업이 이루어지는지 확인한다.


 

DHCP 

 

 

 

. VMware 상에서 Edit -> Virtual Network Edit 클릭후, VMnet8의 NAT 정보를 수정한다.

 



 

상단 그림처럼 C-Class 사설 네트워크 대역을 만들고, 그중 93번째 사설 네트워크를 사용한다.
중요한건 'Use local DHCP service to distribute IP address to VMs' 을 체크해제 해야 DHCP 구성이 가능하다.
그리고 'NAT Settings' 을 클릭해 게이트웨이 IP를 할당한다.


Gateway IP는 192.168.92.2 로 설정

 

server 설정 및 확인

 

[Server PC]의 IP주소값을 해당 대역대의 주소값중 하나의 IP로 설정한다


# vi /etc/sysconfig/network-scripts/ifcfg-eth0


[Server PC]의 IP주소는 192.168.92.77로 설정, 넷마스크는 24비트, 게이트웨이는 192.168.92.2 로 설정함. 'BOOTPROTO'는 'static' 으로 설정.
그후 'service network restart' 입력


'ifconfig' 명령어로 변경된 IP정보를 확인한다.

[Server PC]의 'DHCP' 데몬을 'yum'으로 설치한다.

# yum install dhcp 


yum 으로 설치완료후 /etc/dhcpd.conf 파일이 비어 있으므로, dhcpd.conf.sample 파일을 복사한다.
#cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

이제 /etc/dhcpd.conf 파일을 수정한다


우선 4번 라인의 네트워크 주소중 93번째 호스트 주소로  사용
netmask 는 24비트로 설정
7번행은 게이트웨이 설정이고, 8번행은 서브넷마스크 설정이다.


21번행은 할당해줄 IP범위를 설정한다


11행은 DNS 도메인명이고 12번행은 DNS 주소이다.


22번행은 기본 임대시간이고 23번행은 최대 임대시간이다.
※ 기본임대시간 : 이시간만큼 IP를 사용하고 이상이 없을시사용했던 IP재할당
    최대임대시간 : 이시간이 지나면 IP를 바꿔준다.
    ex) 이상이 없을시 10분마다 똑같은 IP를 재할당 받는데,
          그 해당 IP를 60분동안 사용하였으면, 다른 IP로 바꿔준다.



27번행은 강제로 IP할당할 클라이언트가 있다면 맥주소를 적는다
28번행은 그 맥주소의 강제로 할당할 IP주소이다.

그후 dhcp 서비스를 재시작한다.
#service dhcpd restart
netstat -atunp | grep  67번의 dhcp 가 정상적으로 작동하고 있는지 확인한다.







Client 설정 및 확인

이더넷 eth0 수정


#service network restart


 

 

dhcp 설정 끝

 

 

 

 

 


 

SCP

 

scp명령어는 ssh패키지의 일부인 openssl-clients의 안에 포함되어 있는 명령어로 22번 
포트를 이용한 파일전송 명령어이다.. 따라서 양측 다 openssh,openssh-server 패키지가 있어도
openssh-client 패키지가 없어면 명령어가 없으면 실행되지 않는다.

 

옵션:

     - r  = recursive : 하위 폴더 포함 모두 복사

     - p = preserve  : 권한및 속성 유지

     - C = compression : 압축

'Linux > Linux 명령어' 카테고리의 다른 글

Linux 명령어 chmod  (0) 2013.06.02
Linux 명령어 chown  (0) 2013.06.02
Linux 명령어 date  (0) 2013.06.02
Linux 명령어 wc  (1) 2013.06.02
Linux 명령어 split  (0) 2013.06.02

 

1. NFS 서버의 개요


■ 서버에서의 설치 및 설정

NFS(Network File System)는 썬 마이크로 시스템사에서 리눅스 시스템 간 파일의 공유를 목적으로 개발한 프로토콜이다. NFS는 TCP/IP 네트워크 속해 있는 리눅스 시스템의 파일 시스템 일부를 마운트하여 마치 자신의 디렉토리 처럼 사용 할 수 있도록 해준다.

윈도우는 간단하지만, 리눅스는 다소 복잡한 과정을 거치게 된다.

서버는 클라이언트에 의해 공유될 파일을 유지하기 위한 디렉토리(/share)를 생성하며, 이를 공유 디렉토리라 한다.
클라이언트는 서버의 /share 디렉토리를 자신의 /mnt/myshare 디렉토리에 마운트 한다. 그래서 마운트된 디렉토리에 접근함으로써 /share를 사용할 수 있게 된다. 예를 들어,서버 관리자가 /share 디렉토리에 생성된 파일을 사용할 수 있다.

NFS는 보안을 위해 서버는 NFS 설정에서 접근 가능한 클라이언트의 IP주소를 지정하며, 지정된 클라이언트만이 NFS를 사용해 서버의 공유 디렉토리에 접근 할 수 있다.

NFS를사용하기 위해서는 서버와 클라이언트가 모두 TCP/IP 네트워크에 존재해야 한다. NFS는 RPC(remote procedure call)을 사용한다. 서버는 먼저 공유 디렉토리 (/share)를 띄어 놓고 클라이언트의 마운트 요청을 기다린다. 이를 익스포팅(exporting) 이라 한다. 클라이언트가 RPC를 통해 공유 디렉토리의 마운트를 요청하면 서버는 클라이언트의 마운트 요청을 허가함으로써 NFS 서비스가 이루어진다.

 

 

. showmount : NFS 마운트 정보를 보여준다.
. nfsstat : NFS 서버와 클라이언트의 상태를 보여준다.
. nhfsstone : nfs의 성능을 벤치마크 한다.


NFS 클라이언트는 /etc/fstab 파일에 서버로부터 마운트할 디렉토리에 대한 정보를 가지고 있다.

. rpc.mountd는 클라이언트에서 작동하는 데몬이며, 마운트 요청을 서버에 보내는 데몬이다.
. rpc.nfsd 는 서버에서 작동하는 데몬이며, 파일시스템 요청을 처리한다.

 

2. 서버에서의 설치과정


1. nfs-util 설치확인

[root@localhost]#rpm -qa | grep nfs-util
 : 있으면 진행하고 없으면 yum으로 명령을 사용해 설치한다.
 

 

2. 공유
디렉토리 생성 및 허가권 변경

#mkdir /nfs_share
chmod 707 /nfs_share

* nfs 설치후 정상적으로 동작하는지 확인하기 위해 디렉토리내 test2라는 파일을 생성한다.

 

 

3. NFS를 사용해, 공유 디렉토리로 접근 가능한 클라이언트 지정

#vi /etc/exports
/nfs_share [클라이언트 IP](rw,sync)
                                         [옵션]
 

옵션 의미
ro 서버의 공유 디렉토리를 읽기 전용(read only) 모드로 마운트 한다.
rw 서버의 공유 디렉토리를 읽기 쓰기 가능(read Write)모드로 마운트 한다.
sync 마운트 디렉토리에 쓰기와 같은 연산이 발생할 경우, 공유 디렉토리와 마운트 디렉토리를 즉시 동기화 한다. 즉, 공유 디렉토리와 마운트 디렉토리의 내용을 동기화하여 NFS사용 도중 서버가 다운되거나 재부팅 현상에 의한 데이터의 불일치성을 최소화 한다. 만약, 즉시 동기화를 수행 하지 않고자 할 경우 async 옵션을 사용한다.
no_subtree_check 공유 디렉토리는 서브디렉토리를 가질 수 있다. 클라이언트가 특정 파일을 요청하면 서버는 subtree checking이라는 루틴을 실행해 서브디렉토리까지 탐색하여 클라이언트가 요청한 파일의 위치를 확인한다. 이 옵션을 사용하면 서브디렉토리를 조사하는 루틴을 실행하지 않는다. 만약, 서브 디렉토리까지 검색하고자 할 경우 subtree_check 옵션을 사용한다
no_root_squash 사용자가 클라이언트 시스템의 root계정으로 접근했을 경우, 서버에서도 root 권한을 가지게 한다. 만약, 서버에서 nobody 권한으로 지정하고자 할 경우 root_squash 옵션을 지정한다.

 
4.  /etc/sysconfig/nfs 파일을 통해 RPC에 필요한 포트 번호 지정

RPC를 통해 NFS를 사용하기 위해서는 다음과 같은 데몬이 반드시 필요하다.

데몬  역활

기본포트

rpc.portmapper rpc를 사용하는 프로그램을 지정된 포트에 맵핑시킨다. 즉, 클라이언트에 서버의 서비스 포트 번호를 전달하여 RPC 통신이 이루어지게 한다. 111
rpc.mountd NFS 클라이언트가 마운트를 요청하면 /etc/exports 파일에서 설정된 내용에 따라 마운트요청을 처리한다. 유동
rpc.nfsd rpc.mountd 데몬에 의해 마운트가 이루어지면 마운트된 공유 디렉토리에 읽고 쓰는 등의 작업을 수행하게 해준다 2049
rpc.lockd 파일 잠금을 통해 여러 사용자가 동시에 한 파일을 수정하는 것을 방지한다.
유동
rpc.statd rpc.lockd와 함께 작동하면서 NFS서버가 비정상적으로 종료되었거나 리부팅 했을 경우 복구하는 역활을 한다.
유동
rpc.rquotad NFS 파일 시스템을 마운트한 로컬 사용자에 대해 quota를 처리한다.
유동

서버 방화벽을 사용하지 않을 경우 유동적인 포트 번호의 사용은 문제가 되지 않지만
서버의 방화벽이 설치되어있을 경우, 유동적인 포트번호는 방화벽에 의해 접근이 차단된다.
따라서, 이경우 접속 포트를 유동에서 고정으로 변경해야 한다.

 

일반적으로 rpc.statd 데몬을 4000번, rpc.lockd 데몬은 4001번, rpc.mountd 데몬은 4002번,
rpc.rquotad 데몬은 4003번으로 고정한다.

#vi /etc/sysconfig/nfs
STATD_PORT=4000
LOCKD_TCPPORT=4001
LOCKD_UPPORT=4001
MOUNTD_PORT=4002
RQUOTAD_PORT=4003

5.방화벽 설정

RPC에 필요한 데몬들이 사용하는 포트 번호를 방화벽에 등록한다.


6. 서버의 재시작

#service nfs start
#/etc/init.d/nfslock restart


3. 클라이언트에서의 설정과정

1. 설치확인
#rpm -qa | grep nfs-util

2. service 명령을 사용해 nfs 서버를 시작한다.
service nfs start

3. showmount 명령을 사용해 nfs서버에 공유된 디렉토리 정보를 확인한다.
showmount -e [서버IP]

4.클라이언트의 마운트해서 사용할 디렉토리를 생성한다.
 #mkdir share_client

5.클라이언트 시스템 서버의 공유 디렉토리를 마운트해서 사용할 디렉토리를 마운트 한다.
mount -t nfs [서버IP]:/nfs_share /root/share_client/
                               (NFS디렉토리)

6. 정상적으로 마운트가 이루어 졌다.
  cd share_clinet/


 







 

■ 리눅스 시스템(삼바 서버)

 (1) 삼바 패키지 설치
리눅스에는 기본적으로 삼바 클라이언트 패키지인 samba-client와 samba-common이 설치되어 있다.
삼바 서버 패키지인 system-config-samba는 존재하지 않으니 yum 명령으로 설치

#yum -y install system-config-samba

(2) service 명령으로 smb 스크립트를 실행하여 삼바 서버 데몬을 구동한다.

#service smb start

(3) 삼바서버의 공유디렉토리로 사용할 /smb_share 를 생성하고 허가모드를 707로 변경한다.

#mkdir /smb_share
#chmod 707 /smb_share
#touch /smb_share/samber_server_test


(4)#vi /etc/samba/smb.conf 로 다음과 같이 수정

 74         workgroup = WORKGROUP
101         security = share

256 [test]
257
258         comment= test
259         path=/smb_share
260         writable=yes
261         public=yes

(5) #service smb restart

■ 윈도우 시스템(클라이언트)

실행창에서 서버 IP \\서버IP 쳐서 접근한다

 


다음과 같이 나오면 성공

 

 




 

 

 

■ 윈도우즈 시스템(삼바 서버)

(1) 윈도우즈 시스템에 smb_share 라는 폴더를 생성한다.

 

(2) 마우스로 'smb_share'를선택한 다음 마우스 오른쪽 버튼을 클릭하여 단축 메뉴를 실행한다. [속성]을 클릭하여
'smb_share 속성' 대화상자를 연 다음 [공유] 탭을 선택한다.
 

 




(3)'smb_share 속성' 대화상자의 [공유]탭에서 '공유'버튼을 선택하여 '파일 공유' 대화상자를 연다.
그리고 공유할 사람으로 Everyone을 입력한 다음 [추가] 버튼을 클릭한다.
그리고 '사용자 권한수준'을 [읽기/쓰기]로 변경한다음 [공유] 버튼을 클릭한다. 
대화 상자 나오면 [완료] 버튼 클릭

 

 

 



(4) 사용자 root를 만들고 root 사용자 패스워드를 지정한다.





■ 리눅스 시스템에서 설정(삼바 클라이언트)

(1) 삼바 클라이언트 역활을 수행하는 리눅스 시스템에 삼바 클라이언트 패키지인 sam-ba-client 와 samba-common이 설치되어 있는지 확인한다. 없으면 설치 한다
#rpm -qa | grep samba
삼바-쭈루룩.2345
삼바-쭈루룩.234
삼바-쭈루룩.1235

(2)smbclient 명령을 사용해 윈도우즈 시스템에 접속한 다음 윈도우즈에서 공유한 smb_share 폴더가 나타나는지 확인한다.
윈도우즈 시스템에 접근하기 위해서는 IP주소와 윈도우즈 시스템에서 생성했던 패스워드를 사용한다.

smbclient //[삼바서버Ip]/smb_share -u [사용자ID]
password:[비번입력]

(3) 마운트할 디렉토리 생성
#mkdir mount_samba
mount -t cifs //[삼바서버IP]/smb_share /root/mount_samba -o user=[사용자 ID]
Password : 비번입력

(4)#cd mount_samba
   됬음.




 

 

 

리눅스를 사용하면서 원격지에 있는 자료를 백업, 동기화 하는 대표적인 방법중 하나인 Rsync 를 알아보자.

원본 데이터를 가진 호스트를 서버라 하고, 그 외의 모든 호스트를 클라이언트라 하자.

먼저 서버측 설정을 해보자

 

 

서버측 설정

먼저 서버상에 xinetdrsync가 설치되어 있는지 확인한다.

 

rpm -qa | grep rsync
rpm -qa | grep xinetd

만약 설치되어 있지 않으면 yum 으로 설치하고

( yum install rsync, yum install xinetd )

그 다음 rsync를 xinetd 를 이용하여 실행시키기 위해 /etc/xinetd.d/rsync 를 수정한다.

# default: off # description: The rsync server is a good addition to an ftp serve as it \ # allows crc checksumming etc. service rsync { #disable = yes ## 기본적으로 'yes'가 되어 있는데 이걸 'no'로 변경 disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }

기본적으로 rsync 를 사용하려면 방화벽에서 873포트를 열어 주어야 한다. 그후 iptables restart 진행

/etc/init.d/iptables restart

 

이제 rsync의 환경 설정 파일을 생성해야 된다.

이 파일에는 클라이언트가 백업을 할 수 있도록 특정 디렉토리를 설정해 준다.

vi /etc/rsyncd.conf

[leeahngw]                       -- 서비스명                                                                                                                                
path=/home                     -- 백업할 자료가 있는 경로
comment=HomeBackup      -- 설명
uid=root                           -- 파일을 전송하는 사용자의 id, 기본값은 nobody
gid=root                           -- 파일을 전송하는 사용자의 그룹 id, 기본값은 nobody
use chroot=yes                 -- 위의 path를 root 디렉토리로 사용. 보안상 필요하다
read only=yes                   -- 읽기 전용
hosts allow=192.168.1.111   -- 호스트별 접속허용. 기본값은 all host이므로 보안을 유지하려면 반드시 설정한다.
max connections=1            -- 동시 접속자수
timeout 600                        -- 클라이언트에서 접근시 타임아웃시간, anonymous로 운영하는 경우 설정을 해야 클라이언트가 죽었을 때
                                            서버에서 접속을 해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있다. 보안상 hosts allow와
                                            use chroot는 설정해줄 것을 권장한다.

디렉토리를 더 추가하려면 위 형식에 맞게 더 적어주면 된다.

 

 

클라이언트 설정

사용법

rsync -avz 서버IP::서비스명 백업 디렉토리

 

rsync -avz serverIP::leeahngw /backup

 

여기서 ::에 주목해야 한다. :: 다음에는 서비스 명을 적어야 하고, 만약에 : 하나만 적는다면 ssh 나 rsh 을 통하여

원격 백업을 진행 한다는 것이다. rsync 포트로 전송하려면 :: 두개를 적어줘야 한다.

두번째 백업시에는 변경된 파일만 전송하게 된다.

 

 

SSH를 사용한 원격 백업

rsync 명령어를 이용하는데 ssh포트를 이용 하고자 한다면 따로 환경 파일을 만들어야 한다거나

하는 수고로움이 없다. 따라서 급하게 rsync 를 해야될때는 22번 포트를 이용해서 원격 백업을

많이 진행한다.

 

rsync -avz -e ssh hostname(IP):/타겟경로 /백업받을경로
rsync -avz -e "ssh -p 22" 192.168.1.112:/home/ /backup/

 

-a : archive mode 심볼릭 링크, 속성, 퍼미션, 소유권등을 보존한다
-v : verbose 진행상황을 상세하게 보여준다.
-z : compress 전송시 압축을 수행한다.
-u : update only 새로운 파일을 덮어쓰지 않는다.
-e : 복사를 위한 원격접속쉘 프로그램을 설정한다.
--delete : 서버측에 없고 클라이언트측에만 있는 파일을 지운다.

 

 

마지막 정리!! 이것만 기억하세요

서버 IP설정 다음에 ':'가 1개만 들어간다면 ssh나 rsh을 이용하는것(따라서 서버 패스워드를 묻는다.)

'::' 2개가 들어간다면 TCP 873포트를 이용한다 (서버에서 rsync 서비스로 제공하고 있는걸 받기 때문에 패스워드를 묻지 않는다, 대신 설정 파일에 허용되어 있어야 함)

Ubuntu 11.10 에 Xen 을 설치 후 GuestOS 로 2.6 버전대를 쓰려고 커널 컴파일을 돌렸는데

못보던 에러가 등장.


gcc: error : elf_i386: No such file or directory 
OBJCOPY arch/x86/vdso/vdso32-int80.so
.......
어쩌구 저쩌구.....



봤더니 gcc 버전의 문제였던거 같다. (gcc-4.6.1)

gcc 가 4.6 에서는 linker-style architecture option 을 제공하지 않는다는 참조 사이트의 이야기.


Solution

arch/x86/vdso/Makefile 을 열어서

VDSO_LDFLAGS_vdso.lds 부분에서 옵션이 "-m elf_x86_64" 라고 되어있는 곳을 "-m64" 로 바꾸고
VDSO_LDFLAGS_vdso32.lds 부분에서 옵션이 "-m elf_x86" 라고 되어있는 곳을 "-m32" 라고 바꾸면 된다.

 

 

블로그 : http://rapperkw.tistory.com/150 에서 퍼왔습니다. 문제가 될시 삭제하겠습니다.

장애증상 : 
     - mysql 컴파일시 에러

 

처리로그 :
     ../depcomp: line 512 exec : g++ : not found

 

원인분석 :
     - 위 메세지는 g++ 컴파일러가 없어서 생기는 문제이다.

 

해결방안 :
     - yum 으로 gcc 에 관련된건 다 받아버린다(무식)

     - yum install gcc*

     - 받고나서 소스가 있는 디렉토리에서 make clean 진행

     - 그 이후 다시 컴파일 진행

 

결과 : 
 - 이상없음(설치 완료) 

 

** 참고 **

아래 장애상황과 해결방법은 각 서버의 환경에 따라 다를수 있기때문에 아래 해결방법이 꼭 정답이라고 볼 수없고, 허접스러운 제가 해결하였던 방법이므로, 각자 상황에 맞게 적절히 도움을 받으셨으면 합니다.

 

 

 

yum으로 httpd 를 설치할려고 #yum install httpd 를 입력했다. 그러자 아래와 같은 에러메시지와 함께 install 이 안됨

 

 http://mirrors.neusoft.edu.cn/centos/5.9/updates/i386/repodata/filelists.sqlite.bz2: [Errno -1] Metadata file does not match checksum
Trying other mirror.
Error: failure: repodata/filelists.sqlite.bz2 from updates: [Errno 256] No more mirrors to try.
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
The program package-cleanup is found in the yum-utils package.

 

## 해결방법 ##

#yum clean all

쳐서 yum 캐시를 지움 그후 yum install httpd 하니깐 정상적으로 install 정보를 받아옴.