debug random = 0

건강한 P2P 네트워크를 위해서는 건강한 node들이 골고루 많이 퍼져 있어야 합니다. 이는 비트코인도 마찬가지인데요, "full node를 돌리는 게 중요하다" 이런 얘기 들어보신 분들이 많으실 겁니다. 혹시 모르시는 분들을 위해 설명하자면 full node란 건 비트코인이 생겨난 후 지금까지의 모든 이체 내역을 담은 블록체인을 전부 가지고 있는 node입니다. 비트코인이 생긴 지 꽤 됐으니 용량도 꽤 듭니다. 현재 기준 약 160GB정도가 소요되는데요, 크다면 크고 작다면 작은 용량인데 내가 코인 네트워크에 이정도는 기여할 수 있다고 생각하시면 full node를 돌리는 것 고려해 보셔도 좋을 것 같습니다.

 

 

비트코인 고래들과 거대 마이닝 풀 사이에서 라즈베리 파이로 돌리는 full node가 뭔 힘이 있냐고 할 수 있겠지만, 올해 UASF를 통해 보셨을 겁니다. 약자도 뭉치면 강하다는 것을요앞으로 비슷한 사태가 있을 때 full node를 통해서 비트코인의 앞날에 한 표를 던질 수 있게 됩니다. 또한 full node를 비트코인 지갑으로도 활용하시는 경우, 3자를 믿는 부분을 최소화하고 내 비트코인을 정말로 온전하게 내가 소유할 수 있습니다.

 

 

사실 라즈베리 파이로 돌리면 번거로운 것도 많고, 사실 어떻게 보면 라즈베리 파이보다 컴퓨터가 더 널리 보급된지라 걍 컴퓨터에서 full node를 돌려도 되지만 왜 이걸 해봤냐면... 그냥 해보고 싶어서 해봤어요 ㅋㅋㅋ 굴러다니는 라즈베리 파이가 하나 있는데 어따 써먹어보고 싶어서덕질 좀 해봤네요;; 굳이 장점을 찾자면 공간을 덜 차지하고, 전기도 덜 먹는 full node를 만들 수 있다 정도 있겠네요 ㅋㅋ

 

사실 라즈베리 파이는 처음입니다ㅋㅋㅋ 근데 이거 해보니까 그냥 컴퓨터네요ㅋㅋ 제가 아두이노는 좀 만져봤는데 아두이노는 컴퓨터랑 좀 많이 다른데요, 이건 그냥 컴퓨텁니다. 크게 겁먹으실 것 없으실 듯 합니다. 특히 리눅스에 익숙하신 분들이라면요!

 

그리고 아래의 내용 중, 라즈베리파이 부분 말고 full node 설치과정은 일반 PC에서도 거의 동일합니다. 이거대로 하시면 우분투에서도 full node 돌리실 수 있으니 참고하셔요!

 

서론이 길었는데요시작합니다.

 

 

준비물

 

1.     라즈베리 파이 버전은 크게 상관 없을 듯 하지만, 여기서는 Pi3를 기준으로 설명합니다. Pi1같은 구 버전 파이를 쓰는 경우 다운로드 해야하는 OS파일이 다를 수 있습니다.

 

2.     남는 스마트폰 충전기 – 2.0A 이상이면 좋음. 라즈베리 파이는 micro USB B타입을 쓰므로 타입C를 쓰는 최신 스마트폰 충전기는 타입Cà타입B 변환 젠더 필요.

 

3.     microSD카드 – 8GB이상. 속도도 class10이상 권장함.

 

4.     microSD 카드리더기 노트북 등에 자체적으로 카드리더기가 있으면 필요 없음.

 

5.     모니터, 마우스, 키보드 최초 OS 설치 후 라즈베리 파이에 openssh 서버를 설치해서 SSH 접속이 가능해질 때까지만 필요. Pi3의 경우, HDMI 단자 밖에 없으므로 HDMI가 되는 모니터를 쓰든지 변환 젠더를 써야 함. 마우스와 키보드의 경우에는 USB 타입이어야 함(거의 없겠으나, PS2를 쓰는 경우 역시 변환 젠더 필요)

 

6.     외장하드 라즈베리 파이에서 USB2.0까지만 지원하니 USB3.0이상 지원하는 하드디스크는 무의미. 현재 비트코인 블록체인 총 용량이 약 160GB 정도 되니, 장래를 고려했을 때 512GB, 최소 256GB 이상의 외장하드.

 

 

 

설치 절차

 

1.     먼저 라즈베리 파이에서 돌릴 운영체제를 다운로드합니다.
https://www.raspberrypi.org/downloads/
여기에서 라즈베리 파이용 OS들을 확인할 수 있음.
라즈베리 파이에는 매우 여러가지의 운영체제를 사용할 수 있는데, 공식 운영체제인 라즈비안(Raspbian)도 데비안 기반의 리눅스 배포판이지만, 리눅스 배포판 중 가장 많이 사용되는 우분투가 가장 설치하기 편리할 것 같아서 여기에서는 우분투 마테(Ubuntu MATE)의 라즈베리파이용 버전을 선택했습니다(라즈베리 파이용 우분투 서버도 있지만, 설치해본 결과 apt 패키지 매니저 관련해서 문제가 있는 것 같아서 배제. 나중에 알고 보니 라즈베리용 공식 OS인 라즈비안도 우분투랑 매우 유사한 데비안 기반이었네요그래서 이름도 라즈비안;; 데비안을 써본 적은 없으나 아래 내용들 대부분 별다른 어려움 없이 데비안/라즈비안에 적용 가능할 것으로 생각됩니다). 하지만 어차피 비트코인 노드를 소스로부터 컴파일할 것이기 때문에 사실상 거의 모든 운영체제에서 가능할 겁니다.
라즈베리 파이3용 우분투 마테 다운로드(토렌트): https://ubuntu-mate.org/raspberry-pi/ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz.torrent
(
위 링크 출처: https://ubuntu-mate.org/download/ 맨 아래 Raspberry Pi à 16.04.2 (Xenial))
토렌트로 다운로드하면 확장자가 img.xz인 파일을 얻을 수 있습니다(아마 파일명이 ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz 일 것으로 생각됨).

 

 

2.     다운로드한 운영체제 파일을 micro SD카드에 넣기
먼저 카드리더기를 이용해서 사용하시는 PCmicro SD카드를 연결해 줍니다.
우분투의 경우: 기본 탑재 유틸리티인 Disks에서 파티션 이미지 파일을 SD카드에 구워주는 기능이 기본으로 탑재돼 있음.
Disks에서 sd카드의 모든 파티션을 삭제하고 톱니바퀴모양 버튼이나 우측상단 三모양 버튼 à Restore Partition Image à img.xz파일 선택. 아래의 참고 이미지(퍼왔어요;;) 참조

윈도우의 경우: 7zip(http://www.7-zip.org/)으로 xz압축을 해제해서 img파일을 얻고, Win32 Disk Imager(http://sourceforge.net/projects/win32diskimager/)를 이용해서 sd카드에 img파일을 구울 수 있음.
 

 

 

3.     유선랜+DHCP를 사용하여 인터넷 연결을 하려는 경우 지금 미리 랜선을 연결해 놓습니다.
 

 

 

4.     라즈베리 파이에 모니터, 키보드, 마우스를 연결하고 전원을 연결
참고로 라즈베리 파이에는 따로 전원 스위치가 없고 micro USB 케이블을 연결하면 바로 켜지는 구조입니다.
 

 

5.     부팅이 시작되고 우분투 마테의 경우에는 마치 우분투를 처음 까는 것처럼 차례대로 설정하는 화면이 나옵니다. 우분투를 설치하듯이 한 단계씩 진행하면 됩니다.
화면 캡쳐는 굳이 필요 없을 것 같으나 보려면 à https://fossbytes.com/install-ubuntu-mate-on-raspberry-pi-2-3/
 

 

6.     설정을 마치고 나면 마치 리눅스 민트 같은 바탕화면을 볼 수 있는데요, OS는 설치됐으나 인터넷을 사용해야 하기 때문에 인터넷 연결 설정을 마칩니다.
라즈베리 파이의 경우, WiFi 모듈을 기본 탑재하고 있으므로 무선공유기에 연결해도 되고, 이더넷 포트도 가지고 있으므로 유선으로 연결해도 됩니다. 유선랜을 연결한 게 아니라면 우측 상단쯤에 부채꼴 모양(속이 빈 와이파이 심볼) 버튼이 있는게 그거 누르시면 핸폰 와이파이 연결하듯이 연결하실 수 있습니다.
3
번에서 말한 것처럼 유선랜+DHCP를 쓰는 경우 별도 설정 없이 설치만 마치면 인터넷이 이미 연결돼 있을 겁니다(직접 해본 결과).
 

 

7.     모든 패키지를 최신으로 업로드 및 autoclean/autoremove 작업
라즈베리 파이에서 돌릴 지갑에 코인을 넣어둘 생각이라면 소프트웨어를 최신으로 유지하는 작업은 매우 중요합니다. 그렇지 않은 경우에도 웬만하면 업데이트는 주기적으로 꼭 해주세요.
$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoclean && sudo apt-get autoremove

 

 

8.     Openssh-server 설치 후 서비스 활성화 및 포트 변경.
포트는 22번으로 설정되나, 웬만하면 바꾸는 걸 추천합니다 아래의 포트 변경 방법을 참조해주세요.
OpenSSH Server
설치
$ sudo apt-get install openssh-server
포트 변경: 텍스트 에디터로 /etc/ssh/sshd_config 파일을 연다(Sudo 권한 필요).
$ sudo nano /etc/ssh/sshd_config

주석 빼고 맨 위에 보면 Port라고 돼 있는데 그 뒤의 숫자를 원하는 포트로 바꿉니다.
마지막으로 SSH를 활성화합니다. 우분투 마테는 이부분이 보통 우분투랑 다른 것 같은데요, 보통 우분투에서는 “$ sudo systemctl restart sshd.service” 이런 명령어를 쓰는데 마테에서는 해당 명령어를 인식 못했구요, 아래와 같이 쳐줘야 됐습니다.
$ sudo systemctl enable ssh

 

 

 

9.     공유기 설정
공유기를 사용하는 경우 공유기 관리 페이지에서 라즈베리 파이에 고정된 사설 IP를 부여하도록 하고, 만약 해당 라즈베리 파이에 외부 네트워크에서 접속할 계획이 있는 경우, 라즈베리 파이의 SSH용 포트에 대하여 포트포워딩을 설정합니다. 설정한 IP의 부여는 재부팅 시 적용되므로 라즈베리 파이를 재부팅 해 주세요. à 이 부분은 상세설명 없이 넘어 갈게요~

 

 

10.  재부팅 후 라즈베리 파이의 네트워크 정보, 혹은 공유기 관리 페이지에서 설정해 놓은 사설IP가 라즈베리 파이에 부여됐는지를 확인.
라즈베리 파이에서 확인할 경우. 아래와 같이 입력하고 내용을 대충 보면 알 수 있습니다.
$ ifconfig –a

 

 

 

11.  모니터, 마우스, 키보드를 분리하고 라즈베리 파이로 SSH 접속 확인.
잘 됐다면 이 이후로는 모니터, 마우스, 키보드는 SSH가 연결되지 않는 등의 상황(주로 인터넷 연결 관련 문제)이 아니면 필요 없음. 리눅스를 통해 접속하시려는 경우 간단합니다. 터미널을 여시고 아래와 같이 입력하면 됩니다. $ ssh –p [아까 설정한 포트번호] [라즈베리파이 사용자 ID]@[라즈베리파이 IP]
) $ ssh –p 9876 [email protected]
윈도우의 경우 mobaXterm이나 Putty 같은 프로그램이 필요하겠네요. à 이 부분은 상세설명 없이 넘어 갈게요~
10
번에서 포트포워딩 설정을 하지 않았다면 라즈베리파이가 연결된 공유기와 같은 공유기에 붙어서 내부 IP로 접근해야 됩니다.

 

 

 

12.  비트코인 코어 깃허브에서 소스코드를 다운로드 받기 위해서 먼저 git 설치
$ sudo apt-get install git

 

 

 

13.  비트코인 코어 깃허브에서 clone을 위한 주소 확인하고 git clone
비트코인 코어 깃허브: https://github.com/bitcoin/bitcoin
$ cd ~
à 만약 다른 데 소스코드 다운로드 받고 싶으시면 원하시는 경로로 이동하면 됩니다.
$ git clone https://github.com/bitcoin/bitcoin.git
$ cd bitcoin

 

 

 

14.  최신 릴리즈 커밋으로 checkout. 현재 기준 최신 릴리즈는 v0.15.1(7b57bc9)입니다.
$ git checkout v0.15.1

 

 

 

15.  비트코인 코어 깃허브 페이지에서 빌드 절차를 확인 가능합니다. 빌드를 위해서 설치해줘야 하는 dependency들이 많은데 아래와 같이 설치해줍니다.
UNIX
빌드 절차 페이지: https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md
설치1(빌드를 위한 일반 라이브러리)
$ sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3

설치2(Boost 라이브러리)
$ sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3

설치3(BetkelyDB 4.8). 빌드 절차 페이지에 보면 우분투만 하면 된다고 돼 있는데 우분투 마테도 우분투니 이걸 따라야 합니다.
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:bitcoin/bitcoin
$ sudo apt-get update
$ sudo apt-get install libdb4.8-dev libdb4.8++-dev

뭔가를 엄청나게 깔았으므로 이 시점에서 update && upgrade && autoclean && autoremove 때려줍니다.
$ sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoclean && sudo apt-get autoremove

 

 

 

16.  Autogen.sh 실행(아까 bitcoin 디렉토리에서)
$ ./autogen.sh

 

 

 

17.  Configure 실행.
여기서 중요!!! 라즈베리 파이3 같이 메모리가 엄청 적은 장비에서 컴파일하려면 gccGarbage Collector에 다음과 같은 제한을 걸어야 합니다(빌드 안내 페이지에 나와있음). 처음에 이거 무시하고 그냥 PC에서 하듯이 했다가 하룻밤 내내 돌리고 make할 때 에러나고 안됐습니다 ㅠ 꼭 해 주세요;;
$ ./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"

지갑 기능을 쓰지 않고 full node로써만 동작하게 하려는 경우, configure시 아래와 같은 옵션을 추가로 주면 됨(전 지갑 기능 있는 상태로 했습니다).
$ ./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" --disable-wallet

 

 

 

18.  Make 하기.
라즈베리 파이의 컴퓨팅 성능 한계로 어마어마하게 시간이 오래 걸리므로(1시간 이상) 실행하고 다른 일 하시거나 자기 전에 돌리는 것 추천합니다.
$ make –j
-j
옵션은 CPU의 프로세서(라즈베리 파이3는 쿼드코어입니다)만큼의 쓰레드를 생성해서 make 작업을 진행해 줍니다. 저는 이걸 까먹고 안 줬는데 이것 때문에 오래 걸렸던 것일 수도 있습니다.

 

 

 

19.  Install 하기.
아무데서나 비트코인 명령어들을 쓸 수 있게 해줍니다. 윈도우랑 다르게 리눅스는 굳이 여기까지는 안해줘도 되고 그냥 ~/bitcoin/src 안에 bitcoin-clibitcoind와 같은 실행파일들을 실행하는 것으로도 충분합니다.
$ sudo make install

 

 

 

20.  블록체인을 저장할 디렉토리를 하나 만듭니다. 이 디렉토리에 외장하드를 연결할 겁니다.
$ cd ~
à 역시 만약 다른 데 소스코드 다운로드 받고 싶으시면 원하시는 경로로 이동하면 됩니다.
$ mkdir .bitcoin
à 폴더 명은 아무거나 원하시는 걸로 하셔도 됩니다. 단 이하의 모든 부분에서 일관성 있게 경로를 지정해 주셔야 합니다.

 

 

 

21.  외장하드 준비하기
완전히 비어있는 외장하드이면 가장 좋고, 기존 외장하드에 파티션을 나누어서 새로운 파티션을 만드셔도 됩니다. 파일시스템도 꼭 ext4같이 리눅스 파일시스템일 필요 없고 NTFS도 됩니다. 저는 그냥 윈도우의 하드디스크 파티션 만들기 및 포맷을 이용했는데 리눅스의 gparted 쓰셔도 됩니다. 커맨드 라인 덕후분들은 fdisk 쓰시구요ㅋㅋ

 

 

 

22.  외장하드 연결
USB 포트들 중 하나에 외장하드를 연결합니다. 여러 개의 저장장치를 연결한 게 아닐 경우 백이면 백 /dev/sda가 해당 외장하드일 겁니다. (sd카드는 sdX로 안 잡히더라구요)
아래 명령어로 확실하게 확인할 수 있습니다.
$ sudo fdisk –l

 

 

 

23.  외장하드가 시스템 시작 시 자동으로 마운트되도록 조치하기
/etc/fstab 파일을 편집합니다.
$ sudo nano /etc/fstab

파일의 맨 밑줄에 아래와 같이 추가합니다.
/dev/sda[
파티션번호] /home/[사용자ID]/.bitcoin [파티션형식] defaults,uid=1000,gid=1000,dmask=027,fmask=137 0 0
) /dev/sda2 /home/fuguo/.bitcoin ntfs defaults,uid=1000,gid=1000,dmask=027,fmask=137 0 0
의미를 간략하게 설명하면 /dev/sda2의 파티션을 /home/fuguo/.bitcoin 폴더에 ntfs 형식으로 마운트하돼 소유자(uid)1000(사실상 설치할 때 설정한 사용자의 uid입니다), 소유그룹을 1000(사실상 설치할 때 설정한 사용자의 gid입니다)으로 설정하고 해당 위치의 모든 디렉토리에 대한 권한을 drwxrr-x--- 모든 파일에 대한 권한을 rw-r-----으로 설정하라는 의미입니다.
파일을 저장하고 이를 적용해야겠죠. 재부팅합니다.
$ sudo reboot

재부팅 후 잠시 기다렸다 다시 SSH로 붙어서 내용을 이어 나갑니다. 재부팅하지 않고 하려면 아래와 같이 입력합니다.
$ sudo mount –a
/etc/fstab
에 적혀있지만 마운트되지 않은 모든 파티션들이 마운트됩니다. 만약 외장하드를 연결했을 때 어딘가에 자동으로 마운트됐다면 이 방법으로 원하는 위치에 마운트를 못 시킬 수도 있습니다. 그럴 때는 그냥 재부팅해주세요.

 

 

 

24.  제대로 마운트됐나 확인합니다.
$ df

목록 중에 /dev/sda[파티션번호]를 찾아서 Mounted on 항목을 확인하면 됩니다.

 

 

 

25.  거의 다 됐습니다. 이제 시스템 시작 시 자동으로 bitcoind (비트코인 full node 데몬)을 실행하도록 해봅시다.
아래와 같이 입력합니다.
$ crontab –e

원하는 에디터를 선택하라고 나오는데 원하시는 걸 선택합니다(nano 추천. 젤 쉬움).
어떤 파일이 열리고 뭐라고뭐라고 나옵니다. 맨 밑줄에 아래와 같이 추가하고 저장합니다.
@reboot /usr/local/bin/bitcoind –daemon –datadir=/home/[
사용자이름]/.bitcoin
만약 아까 make install을 하지 않으셨다면 /usr/local/binbitcoind가 없을 겁니다. 그 경우는 아래와 같이 입력하세요.
@reboot /home/[
사용자이름]/bitcoin/src/bitcoind –daemon –datadir=/home/[사용자이름]/.bitcoin

 

 

 

26.  재부팅합니다.
제대로 됐다면 bitcoind가 시스템 재시작시 가동을 시작해야 합니다. 확인하려면 아래와 같이 입력합니다.
$ ps aux | grep bitcoind

실행이 제대로 됐든 안됐든 무조건 한 줄 이상이 나올 겁니다(최소한 grep bitcoind는 나오기 때문). 나오는 내용 중에
fuguo    878 75.9 32.7 465748 310780 ?       Ssl  20:41 122:55 /usr/local/bin/bitcoind -daemon -datadir=/home/fuguo/.bitcoin
이런 게 있음 된 겁니다. 확인사살을 위해서 아래와 같이 입력합니다.
$ bitcoin-cli getnetworkinfo

만약 제대로 bitcoind가 돌아가고 있으면 아직 블록체인 다운로드가 안됐으니까 워밍업 에러인 error code: -28이 나와야 합니다. 이게 아니고
error: Could not locate RPC credentials. No authentication cookie could be found, and no rpcpassword is set in the configuration file (/home/fuguo/.bitcoin/bitcoin.conf)
이런 게 나오면 bitcoind가 안 돌고 있는겁니다.

 

 

 

27.  이제 기다리는 일만 남았습니다.
인터넷에 보면(https://buildaminingrig.com/build-a-bitcoin-full-node-on-a-raspberry-pi/) 이미 다운로드 된 블록체인을 사용해서 거기에서 이어나가는 게 아니라 라즈베리 파이를 이용해서 아예 처음부터 블록체인을 다운로드하는 경우 SWAP 파일 없이는 제대로 다운로드가 안된다고 얘기를 하는 부분이 있습니다. 블록체인을 계속 이어나가는 데 SWAP파일이 필요 없다면 처음부터 다운로드하는 데에도 SWAP 파일이 없어도 될 것 같아서 제 생각에는 아마 별 상관 없을 듯 합니다만, 뒤에도 설명하겠지만, 저는 160GB를 다운로드하는 게 너무 오래 걸릴 것 같아서 이미 돌아가고 있는 full node에서 블록체인 데이터를 다운로드 받아서 넣어줬습니다. 그래서 이 부분 확인을 못했습니다. 누군가 해보신 분이 댓글로 달아 주심 좋을 것 같네요 ㅠ. 외부에서 블록체인을 다운로드 받는 방법은 아래에서 설명합니다.

 

 

 

28.  일단 여기까지 하셨음 ~/.bitcoin으로 들어가 보심 blocks, wallet.dat 같은 예전에 없던 파일들이 만들어져 있을 겁니다(없으면 좀만 기다려주세요. 근데 사실 이 과정이 필요한 건지는 모르겠습니다…)

 

 

 

29.  라즈베리 파이를 끄고 외장하드를 분리해서 full node가 이미 설치돼 메인넷과 싱크까지 완료된 컴퓨터에 연결합니다.

 

 

 

30.  리눅스의 경우 디폴트 datadir 위치는 ~/.bitcoin입니다. 여기에서 wallet.dat을 제외한(만약 지갑을 그냥 복제하고 싶으시다면 wallet.dat 파일도) 모든 파일을 외장하드의 블록체인용 파티션에 복붙합니다.

 

 

31.  다시 외장하드를 라즈베리 파이에 연결하고 라즈베리 파이의 전원을 켭니다.
일이 제대로 됐다면 한 2~30분정도 기다리면 블록 싱크가 완료됐을겁니다. 블록 싱크의 완료 여부를 아는 방법은 아래와 같은데요
$ bitcoin-cli getblockcount
를 입력해서 나오는 숫자가 blockchain.info 같은데서 나오는 최신 블록과 일치하면 된 겁니다.

 

 

 

긴 글 읽으시느라 고생 많았습니다. 제가 실력이 없어서 쓸데없는 순서를 적거나 잘못된 내용을 적었을 수도 있습니다. 그럴때는 댓글로 지적해주시거나 알려주시면 이 글을 보고 설치해보려는 분들께 큰 도움이 될 것 같습니다. 저도 답변 가능한 부분은 시간이 허용하는 한 답변해 드리겠습니다. 모쪼록 이 글이 건강한 네트워크를 만드는 데 조그만 도움이라도 되길 바랍니다.

 

--------------------------------UPDATE-----------------------------------

제가 원래 스왑을 추가하는 방법을 적어놓지는 않았는데요, 라즈베리 파이가 램이 1GiB(파이3 기준이고 옛날 파이는 더 적습니다) 밖에 안되기도 하고 아래에서 @신피질 님께서 그래도 스왑이 있어야 안정적으로 돌아가지 않겠냐고 말씀을 해주시기도 해서 관련 내용 추가합니다.

 

밑에 댓글에서도 확인하실 수 있지만, 라즈베리 파이 full node에서 “$ bitcoin-cli gettxoutsetinfo”를 입력하면 한참 돌다가 에러를 뱉는데요, 이게 full node가 제대로 돌고 있는 게 아니라거나 하는 건 아닌 것 같구요, 아무래도 RPC 타임아웃 에러인 것 같습니다. 그리고 SWAP파일을 추가한다고 해도 이 문제가 해결되는 건 아니기 때문에(사실 타임아웃이면 SWAP이랑 상관있는 게 아니겠죠;;) 스왑을 설정하는 건 어디까지나 옵션으로 보시면 될 것 같습니다. 아무래도 라즈베리 파이의 메모리가 작다 보니 설정하시는 게 안하는 것보다 성능 측면에는 도움이 될 겁니다.

 

사실 라즈베리용 우분투 마테가 스왑을 사용하지 않는 것은 이유가 있습니다. 스왑은 램이 모자라거나 할 때 램을 보조하는 보조기억장치 위의 용량인데요 스왑으로 쓰이는 공간은 아무래도 file IO가 빈번하게 일어날 수 밖에 없습니다. 보통 SSDHDD는 별 지장이 없는데 라즈베리 파이의 경우 보조기억장치가 micro SD카드인데 이게 micro SD카드의 노후화를 가속시킬 수 있다고 합니다.

 

본론으로 들어가서, 사실 우분투 마테에서 스왑파일을 추가하는 방법은 우분투와 완전히 같습니다. 인터넷에 내용이 너무 많아서 노하우랍시고 적어놓는 게 부끄러울 정도네요 ㅠ. 아래의 내용은 이 페이지(https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04)를 참고했음을 밝힙니다(DigitalOcean은 리눅스 노하우를 정말 잘 정리해 놓는 것 같아요 ㅎㅎ 참 좋은 업체입니다 ㅎㅎ)

 

 

 

 

1.     스왑의 공간을 할당합니다.
$ sudo fallocate –l 3G /swapfile

위 명령은 루트 디렉토리의 swapfile3GiB를 할당하라는 의미입니다.
라즈베리파이에서 / microSD카드가 마운트되는 위치인데요, 만약 외장하드를 스왑으로 쓰시고 싶으시다거나 하면 다른 경로를 지정하시면 됩니다.
제대로 공간이 할당됐음을 확인하시려면 아래와 같이 입력합니다.
$ ls –lh /swapfile

제대로 됐다면 아래와 같이 나올겁니다.
-rw-r--r-- 1 root root 3.0G 12
27 12:58 /swapfile

 

 

 

2.     다음으로는 스왑파일을 활성화하는 작업입니다. 먼저 스왑파일의 권한을 변경합니다.
$ sudo chmod 600 /swapfile

이는 root만 스왑파일을 읽고 쓸 수 있게 만들어줍니다. 적용을 확인하기 위해 아래와 같이 입력합니다.
$ ls –lh /swapfile

제대로 됐다면 아래와 같이 나올겁니다.
-rw------- 1 root root 3.0G 12
27 12:58 /swapfile

 

 

 

3.     이제 해당 파일을 스왑으로 선언합니다.
$ sudo mkswap /swapfile

제대로 됐다면 대충 아래와 같이 출력됩니다(참고페이지에서 긁어온거라 용량이나 UUID는 다를 수 있습니다).
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089

 

 

 

4.     스왑파일을 활성화합니다.
$ sudo swapon /swapfile

스왑이 제대로 활성화됐는지 확인하기 위해서는 아래와 같이 입력합니다.
$ free –h

제대로 됐다면 아래와 같이 나올겁니다.
             total      used        free      shared  buff/cache   available
Mem:       925M     418M        21M       3.0M       485M     442M
Swap:        3.0G     128M        2.9G

 

 

5.     이제 스왑 설정은 끝났습니다만, 이대로는 재부팅 시 스왑이 풀리게 됩니다. 이를 위해서 /etc/fstab을 아래와 같이 수정합니다.
$ sudo nano /etc/fstab

맨 밑에 아래의 한 줄을 추가합니다.
/swapfile none swap sw 0 0

 

 

 

6.     이제 다 됐습니다. 그런데 앞에서도 말씀드렸지만 스왑은 램을 대신하는거라 micro SD카드에 상당한 무리를 줍니다. 따라서 스왑 성향(swappiness)을 좀 낮출 필요가 있습니다.
기본적인 스왑 성향은 60으로 돼 있습니다.
$ cat /proc/sys/vm/swappiness
60

이를 10 정도로 낮추기 위해서 아래와 같이 입력합니다.
$ sudo sysctl vm.swappiness=10

제대로 수정되면 아래와 같이 출력됩니다.
vm.swappiness = 10

 

 

 

7.     Swappiness 설정도 재부팅 시 초기화가 되는데요, 이를 막기 위해서는 /etc/sysctl.conf을 수정해야 합니다.
$ sudo nano /etc/sysctl.conf

맨 밑에
vm.swappiness=10
의 한 줄을 추가하면 됩니다.

 

 

  • ?
    나이스코인 2017.12.27 11:28
    대단하십니다. 저도 놀고 있는 파이3에 설치해봐야겠네요.^^
  • profile
    신피질 2017.12.27 11:47
    라즈베리파이3 SWAP활성화 해야 할듯.
    라즈베리파이3 메모리가 1G인데, 현재 비트코인 UTXO Memory Pool이 1.8G정도로 알고 있습니다.
    좀 돌다 문제 발생할듯 한데요?

    Bitcoin Core provides the gettxoutsetinfo RPC that has exactly the information you want. Note, it takes that call up to a minute or two to run (and maybe longer as the UTXO set keeps growing).

    Here's what my node says right now:

    {
    "height": 442313,
    "transactions": 15237948,
    "txouts": 43194647,
    "bytes_serialized": 1635888675,
    "total_amount": 16028761.10201779
    }
    Current and historical data may be found on Statoshi.info's UTXO page.

    shareimprove this answer
    edited Dec 7 '16 at 19:06


    Pieter Wuille
    34.7k259118
    answered Feb 10 '15 at 21:06

    David A. Harding
    6,84711748

    It seems to me that having more than one sample output does not benefit the answer, as it will eventually be outdated inevitably. I'd probably roll back to your initial answer, or replace the old output with the current. Although, it is somewhat interesting to see that within half a year the number of txouts has almost doubled. – Murch♦ Aug 10 '15 at 14:46

    @Murch The number of outputs has just about doubled now, to 33409889. – eponymous Aug 29 '15 at 13:21
  • ?
    후구오 2017.12.27 12:21
    to 신피질 :
    조언 감사합니다.
    이 글은 제가 어제 직접 해보면서 적은 건데요, SWAP 없이 어젯밤부터 라즈베리파이로 full node를 돌리고 있는데 아직까지 별 문제는 없습니다. 그리고 인터넷에 영문자료를 찾아보면 라즈베리 파이로 full node 돌리는 내용에 대한 글들이 많이 있는데, 어떤 글은 SWAP이 필요하다고 하고 어떤 글은 있으면 속도가 빨라지지만 꼭 필요치는 않다고 얘기합니다.
    SWAP이 필요하다고 하는 글(https://buildaminingrig.com/build-a-bitcoin-full-node-on-a-raspberry-pi/)을 보면 라즈베리파이로 처음부터 체인을 다운로드하는 경우에만 SWAP이 필요하다고 하는데요, 사실 그렇다면 mempool의 크기와 과 관련된 문제는 아닙니다. 왜냐면 mempool과 관련돼 있을 경우 처음부터 체인을 다운로드하든 아니든 간에 무조건 SWAP이 있어야 하는거니까요.

    계속 돌려보다가 문제생기거나 멈추는지 확인해 보고, 문제가 생기면 해당내용 추가하겠습니다.
  • profile
    신피질 2017.12.27 12:33
    to 후구오 :
    아,그렇군요. stackexchange에 관련글이 있군요.
    In Bitcoin Core, there are two settings, -dbcache and -maxmempool, defaulting to 450 and 300, respectively.

    The mempool can only occupy as much as is configured through -maxmempool.

    The UTXO set cache can occupy as much as is configured through -dbcache plus the amount of configured mempool space that is currently unused. The memory usage is however much higher than the equivalent representation on disk - loading the entire UTXO set would require 6-7 GiB at the time of speaking.

    The in-memory representations are always larger. On disk they're just packed sequences of bytes. In memory, there are indexes and pointers, and memory allocation overhead - all to speed up access. The blowup factor for UTXO data is larger than for memory.

    Since 0.14, the mempool is also saved to disk at shutdown (but not continuously).

    So far, there is no prioritization done on the UTXO cache. We just keep all accessed entries around, and when it grows too large, all the modified entries are written to disk. One (very) significant optimization is that when a UTXO is created and then spent, without being written to disk in between, we just remove it from memory.

    shareimprove this answer
    edited Oct 12 at 18:07
    answered Oct 12 at 17:21


    Pieter Wuille
    34.7k259118

    Is the memory usage of the mempool same as the representation on disk? If not, is it logged somewhere? Could you please tell me why does the UTXO set take much more than the representation on disk? And is there a priority to which outputs are kept in RAM? – amanusk Oct 12 at 17:34

    I've updated the answer to address these questions. – Pieter Wuille Oct 12 at 23:29

    Thanks. So last question. If I use -dbcache=16384 will 16GB of my RAM be used regardless of the actual size the UTXO set will take up in RAM? – amanusk Oct 14 at 17:19

    No, only as much as can be used. – Pieter Wuille Oct 14 at 17:38
  • ?
    후구오 2017.12.27 13:46
    to 신피질 :
    그런데 PC랑 다르게 라즈베리파이에서 bitcoin-cli gettxoutsetinfo를 실행해보니까 엄청 오래 돌아가다가 결국 아래같이 에러를 뱉네요 ㅠ
    error: couldn't connect to server: unknown (code -1)
    (make sure server is running and you are connecting to the correct RPC port)

    3GiB의 SWAP을 추가하고 나서도 문제는 똑같은 걸 보니 SWAP 문제는 아닌 것 같긴 합니다. 이런 부분 빼고 getnetworkinfo getblockinfo는 다 잘 돌아가는 걸 보니 full node가 사실 안돌아가고 있고 그런 건
    아닌 것 같구요, 뭔가 타임아웃이 일어나서 안되는 것 같아요.

    우분투에 스왑파일 잡는 건 사실 인터넷에 너무 내용이 많아서 여기에 적는 게 좀 부끄럽긴 한데 일단 다른 분들 참고하시라고 SWAP을 추가하는 방법을 게시글에 추가해 놓겠습니다. ㅎㅎ 도움 감사합니다.
  • ?
    SSang 2017.12.27 12:09
    라즈베리파이를 5대 정도 운용중인데
    용도가 있는지라 참여를 못하는게 아쉽네요
    해당 용도로의 사용이 끝나면 한번 해봐야겠습니다.
  • ?
    하늘문 2017.12.27 12:40
    땡글 다운 좋은 글이군요
  • profile
    둔산 2017.12.27 13:19
    좋은 내용 감사합니다.
  • profile
    rhdwjd 2017.12.27 14:38
    좋은정보 감사합니다
  • ?
    중앙지검 2017.12.27 14:54
    이런것도있군요. 배울것들이 참 많네요. 올려주셔서 감사합니다
  • ?
    tstech 2017.12.27 15:28
    흠 사무실에 남는 나스서버에 구동해 봐야 겠군요...
  • ?
    마스터훈 2017.12.27 18:43
    풀 노드를 유지하면 이득을 보는 부분은 없죠??
  • ?
    후구오 2017.12.27 22:47
    to 마스터훈 :
    직접적으로는 그렇습니다.
    마스터노드를 갖고 있는 대시와 다르게 비트코인의 경우 노드 운영자에게 별도로 보상하는 것은 없습니다. 하지만, 비트코인 네트워크의 분산화가 잘 되면 그렇지 않은 경우보다 비트코인은 건강한 암호화폐가 될 것이고 그렇게 된다면 비트코인의 가치 또한 증가하지 않을까 싶습니다 ㅎㅎ
  • ?
    마스터훈 2017.12.27 22:49
    to 후구오 :
    답변 감사합니다.
    노드유지하면 보상도 주면 참 좋겠는데요,, 아쉽네요
  • profile
    엑스 2017.12.27 22:21
    윈도우의 경우는 bitcoin core 깔고 실행시켜 놓으면 동일한 효과인가요?
  • ?
    후구오 2017.12.27 22:44
    to 엑스 :
    네 맞습니다^^
  • ?
    마스터훈 2017.12.27 23:04
    저도 4TB 하드에 비트코어 설치하고 블럭 받고 있네요^^
    조금이라도 도움이 된다면 저도 동참하려 합니다^^

채굴

코인 채굴에 관한 게시판입니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 채굴 새로 들어오시는분들! - 땡글 이용시 지켜지면 좋은 것 42 239 53255
김광부
2017.06.25
공지 [Air Drop 이벤트] 게시판을 신설합니다 11 updatefile 1655
땡글운영위원회
2019.05.17
공지 [땡글] (주)이에스엔운영 채용공고 15 file 2 2937
ESN운영
2019.05.14
[AD] [AD] ESN으로만 신청 가능한 광고자리입니다. 14 11792
관리자
2019.01.02
26911 채굴 채굴기 부탁좀 드릴게용 지캐시, 골드 작업할려고하는데용 6웨이로 1한대분 맞출려고합니당ㅜㅜ 제가 컴문맹이라서 추천받을수있을까요? 9 766
jimin2325
2017.12.27
26910 채굴 1080ti 운용을 어떻게 하면 효율을 높일수 있을까요?        1080ti 3way  돌리고 있는데, 하나 추가해서 4way 구동예정입니다      일단 z캐쉬 세팅으로 돌리고 있습니다. 하루 24000원정도 나오네요    좀 더 효율적으로 돌려야 수익이 늘어날것 같은데, 어떤방법으로 ... 2 1417
iiiooopp
2017.12.27
26909 채굴 마이너를 직접 만드는 경우도 있을까요 ㅎㅎ 뭐 당연히 마이너 만들어서 배포하는 사람들이 있으니, 직접 만들기도 하겠지만... 대부분은 그냥 배포되는 마이너를 쓰시겠죠.   수수료가 1%에서 2%로 오르니 갑자기 막 아까워지네요 ㅋㅋㅋ 풀 수수료야 서버비용... 12 959
soulspirit
2017.12.27
26908 채굴 일렉 채굴량 떡락 가격도 안올랐는데 왜그럴까요.. 2 1162
방사능
2017.12.27
26907 채굴 고수님 파워는 어떤것들 쓰시나요? 제가 글픽 아수스 ROG1070ti 6웨이로 쓸려고합니다 파워는 AONE BIT 850W 80PLUS 할려고하는데 올품절이라서 언제 입고될지 몰라서 고수님들은 어떤제품 사용하는게 좋을까요? 17 818
jimin2325
2017.12.27
26906 채굴 1060 5gb루머 루머이긴합니다만 1060 5gb가 나온다는 이야기가있네요   pc방용이아니라 채굴용으로 딱일거같은데 가격이 나와봐야 알겠죠?   왠지 자꾸 이런 루머까지도는거보니 2000대 (다음세대) 모델은 나올려면 멀었나보네요  ... 5 1058
김기계
2017.12.27
26905 채굴 앤트풀 잘 돠나요? L3+ 오늘 아침 갑자기 하드웨어에서 소켓 연결실패 메시지가 뜨면서 풀 연결이 안되네요. 이럴때는 어떻게 해야 하나요? 선배님들 알려주세요 1 file 479
kjhrobin1004
2017.12.27
26904 채굴 비트코인골드 채굴문의드립니다.     코인원이라는 거래소의 비트코인 골드 가격대가 높던데.. 현재 빗썸만 이용중이어서 코인원에 대해 잘 몰라 문의합니다.   채굴한 비트코인골드를 코인원의 거래지갑으로 입금시켜 판매한 뒤 원화로 출금이 가능... 8 1154
엔터캐시
2017.12.27
26903 채굴 전기공사 문의드립니다.     지금 10킬로 6대 돌리고 있습니다. 다른 기기들 사용하기때문에 더는 힘들거 같습니다. 그래서 20킬로로 증설하고 창고가 6-7평 되는데 거기에 기존에 있던거랑 합해서 16대 정도를 놓으려고 합니다. 현재 창고는... 578
true
2017.12.27
26902 채굴 rx560 3g 오버에 관한 질문요...     rx560 3g 5way를 어제 조립 완료 했습니다.   이벤트 1을 보고 하지 그래픽카드 인식까지는 3일 걸린 것 같은데요....   현재 순정으로 모네로 300헤쉬 정도 나옵니다.   땡글인을 보고 이제  오버를 하려고 합니... 3 682
멋진울프
2017.12.27
26901 채굴 안녕하세요 P106 BTG 채굴문의요   안녕하세요~   P106으로 BTG 채굴한번해보려고하는데요   한대로 우선 돌려보는데   애프터버너 오버  파워 80에 코어 210 메모리 300   주고 채굴하는데 대략 315sol 정도나오는데 이세팅이 맞는지 해서요   고수... 5 820
세은아빠
2017.12.27
26900 채굴 GTX 1070 무한부팅 현상...도와주세요~ 안녕하세요? 최근 채굴을 시작한 초짜입니다.   GTX 1070 6Way 용산에서 구입해서 2주 정도 집에서 돌리다 전기세 폭탄이 무서워서 채굴장에 위탁을 했습니다. 위탁 후 큰 문제 없다가 3주쯤 지날무렵 연락이 왔는데,... 6 848
sdmmining
2017.12.27
» 리눅스 비트코인 네트워크에 조금이라도 기여하고 싶은 분들을 위한 라즈베리 파이에서 비트코인 full node 구동하기 건강한 P2P 네트워크를 위해서는 건강한 node들이 골고루 많이 퍼져 있어야 합니다. 이는 비트코인도 마찬가지인데요, "full node를 돌리는 게 중요하다" 이런 얘기 들어보신 분들이 많으실 겁니다. 혹시 모르시는 분... 17 file 26 5780
후구오
2017.12.27
26898 채굴 구형 메인보드 2way 가능할까요? 지금 한개로 채굴중인데요   보드는 asus b85m-g 인데요   라이저카드 한개 사서 2way 가능할까요?   sli는 지원 안하는 보드입니다.                      ------------------------------------- 꼬리말 * 게시글 ... 3 730
허니듀크
2017.12.27
26897 채굴 모네로 네트워크 해시는 느는데.. 모네로 네트워크 해시는 느는데, 왜 마풀허 풀해시는 안늘까요. 이제 전체 해시의 5%정도 밖에 못차지해서 그런지 채굴량이 변동이 많은것 같습니다. 자동스위칭도 되고 해시 떨어지면 메일도 오고, 매일 매일 채굴량... 2 937
버들피리
2017.12.27
26896 채굴 하이먼 민스키 모델에 따른 비트코인의 '순간 폭락'        빅마우스 찰리 리.   평소에도 트위터 때문에 찰리 리가 싫다는 분들이 많이 계셨죠.   만약 크립토 고래들의 모임에서 일정부분 '이익실현'을 하자는 컨센서스가 형성이 되었고 다들 입다물고 있는데   찰리 ... 8 file 1 4713
딜레탕뜨
2017.12.27
26895 채굴 이거 채굴기 때문에 그런걸까요? 요즘 잠을 자도 잔거같지가않구 아침에 일어나면 목,코 다 막히구 가래랑코에 피가 섞여있네요(ㅈㅅ) ㅡ.ㅡㅋㅋ 6way 2대정도있는데 침대랑 조금 가깝게있습니다.   몸에 많이 안좋을까요?                 ---------... 17 1503
브라운스틱
2017.12.27
26894 채굴 혹시 채굴 속도 제한 같은거 있나요?             ccminer로 모네로 채굴중인데 회사에서 문서 작업을 하루에 10시간하기 때문에 작업하면서 채굴할 수 있는 방법이 있을까요? 예를들면 옵션에서 속도 제한 같은걸 걸어 두면서 채굴하고 싶어서요        ... 4 1 856
dsacxzdqwecxz
2017.12.27
26893 채굴 초보문의]1070Ti 애프터버너 설정후 작업시 GPU가 죽어버려요..   안녕하세요.. 1070Ti 6way로 마플에서 기본 450~460정도 나오는데.. 여기서 애프터버너를 사용하면 500~510정도로 올라갑니다. 그런데 얼마 못가 GPU가 죽어버리고 솔값이 0이되어버립니다. 마이너프로그램을 재실... 12 1908
cups
2017.12.27
26892 채굴 SSD 하드 이미지 카피 하는데 타겟을 인식못하네요   EASEUS TODO라는 프로그림으로 클론 하드카피 하려는데 타겟드라이브를 인식 못하네요 120gb SSD 추가로 연결하고 리붓  한후에 TODO 프로그램 실행하였는데 타겟 드라이브가 없다고 나오네 먼저번에 2개 클론할때... 2 598
디지마니아
2017.12.27
목록
Board Pagination Prev 1 ... 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 ... 2577 Next
/ 2577