mining custom_top_html:no
default debug random = 0 / type = READ / detected = READ

건강한 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 fuguo@192.168.1.100
윈도우의 경우 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
의 한 줄을 추가하면 됩니다.

 

 

14
댓글 17
  • ?
    대단하십니다. 저도 놀고 있는 파이3에 설치해봐야겠네요.^^
  • 라즈베리파이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
  • ?
    @신피질
    조언 감사합니다.
    이 글은 제가 어제 직접 해보면서 적은 건데요, SWAP 없이 어젯밤부터 라즈베리파이로 full node를 돌리고 있는데 아직까지 별 문제는 없습니다. 그리고 인터넷에 영문자료를 찾아보면 라즈베리 파이로 full node 돌리는 내용에 대한 글들이 많이 있는데, 어떤 글은 SWAP이 필요하다고 하고 어떤 글은 있으면 속도가 빨라지지만 꼭 필요치는 않다고 얘기합니다.
    SWAP이 필요하다고 하는 글(https://buildaminingrig.com/build-a-bitcoin-full-node-on-a-raspberry-pi/)을 보면 라즈베리파이로 처음부터 체인을 다운로드하는 경우에만 SWAP이 필요하다고 하는데요, 사실 그렇다면 mempool의 크기와 과 관련된 문제는 아닙니다. 왜냐면 mempool과 관련돼 있을 경우 처음부터 체인을 다운로드하든 아니든 간에 무조건 SWAP이 있어야 하는거니까요.

    계속 돌려보다가 문제생기거나 멈추는지 확인해 보고, 문제가 생기면 해당내용 추가하겠습니다.
  • @후구오
    아,그렇군요. 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
  • ?
    @신피질
    그런데 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을 추가하는 방법을 게시글에 추가해 놓겠습니다. ㅎㅎ 도움 감사합니다.
  • ?
    라즈베리파이를 5대 정도 운용중인데
    용도가 있는지라 참여를 못하는게 아쉽네요
    해당 용도로의 사용이 끝나면 한번 해봐야겠습니다.
  • ?
    땡글 다운 좋은 글이군요
  • 좋은 내용 감사합니다.
  • 좋은정보 감사합니다
  • ?
    이런것도있군요. 배울것들이 참 많네요. 올려주셔서 감사합니다
  • ?
    흠 사무실에 남는 나스서버에 구동해 봐야 겠군요...
  • ?
    풀 노드를 유지하면 이득을 보는 부분은 없죠??
  • ?
    @마스터훈
    직접적으로는 그렇습니다.
    마스터노드를 갖고 있는 대시와 다르게 비트코인의 경우 노드 운영자에게 별도로 보상하는 것은 없습니다. 하지만, 비트코인 네트워크의 분산화가 잘 되면 그렇지 않은 경우보다 비트코인은 건강한 암호화폐가 될 것이고 그렇게 된다면 비트코인의 가치 또한 증가하지 않을까 싶습니다 ㅎㅎ
  • ?
    @후구오
    답변 감사합니다.
    노드유지하면 보상도 주면 참 좋겠는데요,, 아쉽네요
  • 윈도우의 경우는 bitcoin core 깔고 실행시켜 놓으면 동일한 효과인가요?
  • ?
    @엑스
    네 맞습니다^^
  • ?
    저도 4TB 하드에 비트코어 설치하고 블럭 받고 있네요^^
    조금이라도 도움이 된다면 저도 동참하려 합니다^^
default debug random = 0 / type = READ / detected = READ

채굴

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

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 채굴 새로 들어오시는분들! - 땡글 이용시 지켜지면 좋은 것 68 272 63887
김광부
2017.06.25
공지 [공구중지] PCI-E 4way 확장카드 1배속/4배속 (9/16~9/23, 한정수량 250개) 20 file 1571
공구관리자
2021.09.16
공지 ORBIS GM70 그래픽카드 지지대 (9/10~9/17, 한정수량 100개) 17 file 2 1019
공구관리자
2021.09.10
공지 TokenWatch 텔레그램 봇 베타 서비스 안내 18 file 7 1771
관리자
2021.07.23
26973 채굴 s9 설정........도움 필요합니다. S9 집에서 돌려보려고 설정중인데요.... ip는 잡았는데 miner configuration에서 먼가 잘못했는지 해시가 안올라가네요. 매뉴얼대로 따라한거 같은데 안되는데요. 도와주실분 있으신가요. 사례하겠습니다. 서울입니다... 16 0 963
bruce
2017.12.27
26972 채굴 minergate 모네로 채굴시 상위 탑 5명 백만해시가 넘던데.. 어떻게 해야 백만은 아니더라도 많이 나올까요? 클라우드 마이닝을 한걸까요? 초보가 여쭈어 봅니다... 4 0 1446
덕계동이더리움만수르
2017.12.27
26971 채굴 채굴기 6way ㅡ> 5way바뀌는증상     저는 tb250 메인보드에 삼성램 gtx1060 을 사용중입니다. 근 3달간 잘 돌리다가 갑자기 에프터버너가 멈추어서  다시 에프터버너를 4.4로 업데이트 한후로 6way ->5way로 바뀌는 증상이 발생하였습니다. 그래서 d... 10 0 1377
디퀘남12
2017.12.27
26970 채굴 초보 채굴 입문해요! 국내에서는 인지도와 평이 전혀 없는 온다 8웨이 온보드로 입문 연습해보려 합니다 ㅎㅎ라이저 카드 주렁주렁 달기 지저분해서.. 온보드형으로 골라보았습니다. 단방에 13웨이로 하려고 했는데 주문 폭주로 재고가 하... 27 file 10 6262
크로닉
2017.12.27
26969 채굴 사파이어 Rx - 570 pulse mini 세팅했는데 놀랍군요     미니로 원크릭 램타에 엘피다 램인데  2100 이상 먹어주네요   깜놀했습니다.                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에. ... 23 file 0 2237
디지마니아
2017.12.27
26968 채굴 초보채굴자입니다. ^^   요번에도 최대한 단순 & 쉽게 입니다. 질문은 댓글요!!!   1. 준비물   - RX 470/480/570/580 - 폴라 롬 에디터 (PBE) V 1.62 => ↓https://github.com/jaschaknack/PolarisBiosEditor C# ◉ 176 ɥ 25 PolarisBio... 1 3 1390
코스모스35
2017.12.27
26967 채굴 1080ti 4way 방금 조립 완성했는데요. 오류? 질문있습니다     땡글 글 정독후 1080ti 4way    조립을 방금 마쳤습니다   이제 usb window10 설치를 위해   전원 버튼을 누르니!!!             이런 화면이 첫 화면으로 뜹니다   그래픽 카드 연결전에는 cmos 셋업 화면이 잘... 6 file 0 1058
미쭈니아빠
2017.12.27
26966 채굴 초보] 1070ti 메모리클럭 관련 안녕하세요.. 1070Ti 6Way 셋팅으로 돌리는데.. 기본은 450정도나오고...오버를 좀 넘어주면 480~510나옵니다. 그런데..500언저리만 가면 얼마 못가 다운이 되어버리구요.. 그래서 하는수 없이 460~470정도 맞추어 돌... 3 0 1444
cups
2017.12.27
26965 채굴 가정집에서 채굴한번 해보려고 하는데... 아직 하나도 모르고 이제 책 사서 알아보려고 하는데..   배송이 1월 5일이더라고요   정말 초보적이지만 당장 궁금한거 하나만 여쭙겠습니다 ㅠㅠ   KWH와 가정용으로 검색해도 제가 전기세 개념도 제대로 없어서...... 16 0 2133
사망천
2017.12.27
26964 채굴 고수님들 s9 or 570 8웨이 어떤게 좋은까요 채굴할려고 몇달동안 알아보기만 하다가 큰맘먹고 위탁으로 돌릴까 합니다. 우선 s9는 가격이 마니올라서 3대 가능하구 570 8웨이는 6대 가능할것같은데 현상태에서는 s9가 효율이 좋아보이긴 한데 570이 안정적인것... 5 0 816
사시미킹
2017.12.27
26963 채굴 채굴 진입위해 시스탬 구성 중에 문의 드려 봅니다.       컴퓨터 게임을 좋아하다 보니  셋팅후 사용빈도가 적은 그래픽 카드가 몇장 있습니다. (1080 3장 1070 2장 1080ti 2장 )   가상화폐 열풍으로 위의 남는 부품으로 채굴을 해보자는 마음에 사이트에 가입하고 공... 5 0 790
태영파파
2017.12.27
26962 채굴 D3 속도문제 문의드립니다.   D3 11월 배치건 11월말에 받아서 펌웨어 업하고 돌려보고있는데 어제 저녁부터 속도가 이상하게 1G안되게 나오네요. Antpool 문제인가해서 Mining pool hub 에서도 돌려봐도 같은 현상 이어서.. 리셋도 해봤는데 같... 11 file 0 735
재수리
2017.12.27
26961 채굴 채굴 초보 문의 입니다 이번에 채굴을 한번 해보려고 합니다. 1세트 6way 우선 만들어서 시범운행 하려고 합니다. 예산은 350~400만정도 생각중입니다. 채굴 코인은 이더리움 ,Z캐쉬 생각중입니다. 코인변경은 코인 시장에 따라 변경 가능한... 3 0 643
별수마리
2017.12.27
26960 채굴 고수님들 그래픽카드 코드12 해결방안 부탁드려요 기가바이트 h110.d3a gtx1060 6개중 1개가 코드12 리소스가 부족하다고 뜹니다... 어떻게 해야하나요... 초보에겐 넘 어려운 부분이네요... 도와주세요... 4 0 1807
khepera
2017.12.27
26959 채굴 나노풀 해시가 0으로 나옵니다. 오늘 낮부터 몇 시간째    계속 0해시로 표시됩니다.   도스창에서는 해시가 나오고 있구요.   이메일에는 오프라인이라고 나오는데,   이거 어떤 상황인가요? 껐다 켜도 홈페이지와 그래프에는 0으로 나옵니다.   그... file 0 377
페이퍼스
2017.12.27
26958 채굴 지하실에서 채굴장을 해도 될까요? 안녕하세요 초보입니다 40평 정도 되는 일반용 전기를 쓰는 지하창고가 있습니다 출입문이 하나밖에 없고 작은 손바닥만한 환풍기 8개가 있습니다 업소용 에어컨이 하나 있고요 채굴기를 들여와도 될까요? 오픈형이 ... 13 0 1888
곰길라
2017.12.27
26957 채굴 T.T 채굴기 셋팅관련 고수님들 도움 부탁드립니다. 고수님들 도움 부탁드립니다. 3개월전 주위 만류를 무릎쓰고 1070 6way 2대 고생 고생 셋팅해서 3개월동안 채굴 트레이딩 한 수익 600 탈탈털어 1080ti 6way 1set 셋팅 중인데요.. 도무지 이해가 안가는 상황이 생겨 ... 6 0 610
나미
2017.12.27
26956 채굴 VEGA 64 설정관련.. 도와주세요 plz... 안녕하세요, 땡글보면서 좋은 자료들을 토대로 할수 있다는 용기를 얻어 미친척하고 조립을 완료했습니다.   내용을 요약드리면...   ㅇ ASRock H100 Pro BTC+ 메인보드 ㅇ GIGABYTE 라데온 RX Vega 64 Gaming HBM2 8... 11 0 1538
lovertt
2017.12.27
26955 채굴 RX580 엘디다 램은 롬플레싱이 잘안되는 건가요? 요쯤엔 RX580 을 구하기 심들어서 몇장 구하다보니 여러 종류의 그래픽 카드를 사용해보네요..   SAPPHIRE 라데온 RX 580 PULSE OC D5 4GB Dual-X  ASUS DUAL 라데온 RX 580 O4G D5 4GB    이두 여석이 모두 엘피다램... 6 0 1111
subinny
2017.12.27
26954 채굴 고수님들 전력 및 솔값 질문드려요 그래픽카드 전력은 대충 알겠는데 기타전력을 잘모르겠네요   샐러론 g3930   ddr4 4g ram   128g ssd   라이저카드 6개   채굴용 기본 메인보드   딱 여기까지만 하면 대충 150w 잡아도 충분할까요   추가로 sol 값... 5 0 633
플하
2017.12.27
목록
Board Pagination Prev 1 ... 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 ... 3310 Next
/ 3310
default debug random = 0 / type = READ / detected = READ