9월 102016
 

우리는 ubuntu에서 패키지 인덱스를 업데이트 하기 위해 apt-get update 라는 명령을 사용하여 업데이트한다. 하지만 만약 커스텀 패키지를 이용하는 경우 (예: owncloud)에 keyexpired라는 문구를 볼 수 있다. 이는 패키지를 서명하는데 사용된 인증키가 시간이 지나 만료되었기 때문이다. 따라서 키를 다시 업데이트 해주는 작업이 필요하다. 아래의 절차를 따라 새로 받아보도록 하자.

1)  아래와 같은 메시지를  apt-get update 사용시 발견

Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://download.opensuse.org  Release: The following signatures were invalid: KEYEXPIRED 1472205884

W: Failed to fetch http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/Release

W: Some index files failed to download. They have been ignored, or old ones used instead.

2) apt-key list 명령어를 통해 expired 키를 찾기

# apt-key list | grep "expired:"
pub 1024D/BA684223 2012-02-08 [expired: 2016-08-26]

3) 목록에 있는 내용을 통해 “BA684223″이란 키가 2016-08-26에 만료되었으며 업데이트 해야함을 확인 가능

4) apt-key 명령으로 새로 키(BA684223)를 업데이트 받음

# apt-key adv --recv-keys --keyserver keys.gnupg.net BA684223

# apt-key adv --recv-keys --keyserver keys.gnupg.net BA684223
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.DE4JfiHL45 --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg --keyring /etc/apt/trusted.gpg.d/docker-maint-testing.gpg --keyring /etc/apt/trusted.gpg.d/openjdk-r-ppa.gpg --keyring /etc/apt/trusted.gpg.d/webupd8team-java.gpg --recv-keys --keyserver keys.gnupg.net BA684223
gpg: requesting key BA684223 from hkp server keys.gnupg.net
gpg: key BA684223: "isv:ownCloud OBS Project <isv:ownCloud@build.opensuse.org>" 5 new signatures
gpg: Total number processed: 1
gpg:         new signatures: 5

5) 다시 우분투 패키지 업데이트 작업을 진행한다.

# apt-get update

# apt-get upgrade

 

참고 자료

[1] http://superuser.com/questions/513609/how-to-apt-update-when-apt-is-not-accepting-the-repository

10월 302014
 

1. 서론
  mysql 데이터베이스의 파티션이 커지면 데이터베이스 파일을 새로운 파티션에 옮기고 심볼릭 링크를 걸어서 용량을 확보하는 방법이 있다. 한편 우분투에서는 apparmor라고 하는 권한 관리 시스템이 존재하여서, 심볼릭 링크 후에 새로운 경로(파티션)에 대한 권한을 줄 필요가 있다.
  여기서 apparmor가 설치된 mysql 환경에서 어떻게 파티션을 만들고, 공간을 확장하는지 알아 본다.
 
2. 수행 방법
1) 추가할 디스크 마운팅 및 포멧
 # fdisk -l      // 파티션 할당 상태 확인
 # fdisk /dev/xvdb  // /dev/xvdb : 추가된 디스크 주소
    n 누루고 파티션 설정(primary partition, cylinder etc)
    w 눌러서 저장
 # mkfs.ext4 /dev/xvdb1     // ext4로 포멧
 # mount /dev/xvdb1 /mnt/mysql_disk1   // 마운팅
 
 # blkid     // 추가된 /dev/xvdb1 의 UUID 확인
 # vi /etc/fstab    // 재부팅시 바로 자동 마운팅을 위해 설정
  UUID=<> /mnt/mysql_disk1 ext4 rw 0 0     # 제일 아래줄에 추가
 # df -h     // 디스크 용량 확인
 
2) Apparmor 설정파일 변경 [1]
 – 우분투는 접근관리를 좀 더 잘 하기 위해 파일에 권한을 사용자 단위로 지정하는 것이 아니라, 실행되어 있는 프로그램이 어디에 접근할 수 있는지를 설정함으로써 해결하고자 하였다. 이 편이 관리 측면에서 더 이득이 크다.
 
 # vi /etc/apparmor.d/user.sbin.mysqld
      # 제일 아래줄에 추가
      /mnt/mysql_disk1/mysql_data r,
      /mnt/mysql_disk1/mysql_data/** rwk,
 
3) sql 서버 종료
     # service mysql stop
4) 데이터파일을 새로 저장할 큰 용량의 디스크로 복사 (ubuntu mysql은 /var/lib/mysql 에 있음)
     # cd /var/lib/mysql
     # cp -R * /mnt/mysql_disk1/mysql_data
5) 기존 파일 백업
     # mv /var/lib/mysql /var/lib/mysql_bak
6) 심볼릭 링크 연결
     # cd /var/lib
     # ln -s /mnt/mysql_disk1/mysql_data mysql
7) sql 서버 다시 켜기
     # service mysql start
8) DB에 잘 접속되나 테스트
 
3. 정 리
 파일 복사하는데 꽤 시간이 걸리기 때문에 추후에는 mysql서버를 하나 더 준비하여 데이터를 옮기도록 작업하는 것이 더 좋을 것으로 예상된다. 그리고 데이터 베이스 파일을 하나로 하지 않고 여러개로 나누어서, 파일 단위로 심볼릭 링크를 걸어서 해결하는 방향이 더 좋을 것이라고 생각한다.
 
4. 관련 자료
[1] Recover an Innodb mysql database from an EBS on Ec2, Stack Exchange : http://dba.stackexchange.com/questions/57424/recover-an-innodb-mysql-database-from-an-ebs-on-ec2
[2] https://blogs.oracle.com/jsmyth/entry/running_out_of_physical_disk