mining custom_top_html:no
default debug random = 28 / 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
댓글 18
  • ?
    대단하십니다. 저도 놀고 있는 파이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 하드에 비트코어 설치하고 블럭 받고 있네요^^
    조금이라도 도움이 된다면 저도 동참하려 합니다^^
  • 아 뭔지 알겠네요 ㅋㅋㅋㅋ
    빈컴퓨터에 Bitcoin core 받아놓고 서버처럼 써야겠군요 ㅋㅋㅋㅋ
default debug random = 0 / type = READ / detected = READ

채굴

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

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 채굴 새로 들어오시는분들! - 땡글 이용시 지켜지면 좋은 것 75 update 285 65902
김광부
2017.06.25
공지 [공동구매] 에너지옵티머스 1800W 파워서플라이 (1/18~1/24 한정수량 100개) 25 updatefile 1017
공구관리자
2022.01.18
공지 KF94 마스크 설날 선물세트 구매후기 이벤트 (~1/25) 1 file 6 899
이벤트관리자
2022.01.15
리눅스 비트코인 네트워크에 조금이라도 기여하고 싶은 분들을 위한 라즈베리 파이에서 비트코인 full node 구동하기 건강한 P2P 네트워크를 위해서는 건강한 node들이 골고루 많이 퍼져 있어야 합니다. 이는 비트코인도 마찬가지인데요, "full node를 돌리는 게 중요하다" 이런 얘기 들어보신 분들이 많으실 겁니다. 혹시 모르시는 분... 18 file 26 6923
후구오
2017.12.27
26828 채굴 구형 메인보드 2way 가능할까요? 지금 한개로 채굴중인데요   보드는 asus b85m-g 인데요   라이저카드 한개 사서 2way 가능할까요?   sli는 지원 안하는 보드입니다.                      ------------------------------------- 꼬리말 * 게시글 ... 3 0 881
허니듀크
2017.12.27
26827 채굴 모네로 네트워크 해시는 느는데.. 모네로 네트워크 해시는 느는데, 왜 마풀허 풀해시는 안늘까요. 이제 전체 해시의 5%정도 밖에 못차지해서 그런지 채굴량이 변동이 많은것 같습니다. 자동스위칭도 되고 해시 떨어지면 메일도 오고, 매일 매일 채굴량... 2 0 964
버들피리
2017.12.27
26826 채굴 하이먼 민스키 모델에 따른 비트코인의 '순간 폭락'        빅마우스 찰리 리.   평소에도 트위터 때문에 찰리 리가 싫다는 분들이 많이 계셨죠.   만약 크립토 고래들의 모임에서 일정부분 '이익실현'을 하자는 컨센서스가 형성이 되었고 다들 입다물고 있는데   찰리 ... 8 file 1 5143
딜레탕뜨
2017.12.27
26825 채굴 이거 채굴기 때문에 그런걸까요? 요즘 잠을 자도 잔거같지가않구 아침에 일어나면 목,코 다 막히구 가래랑코에 피가 섞여있네요(ㅈㅅ) ㅡ.ㅡㅋㅋ 6way 2대정도있는데 침대랑 조금 가깝게있습니다.   몸에 많이 안좋을까요?                 ---------... 17 0 1592
브라운스틱
2017.12.27
26824 채굴 혹시 채굴 속도 제한 같은거 있나요?             ccminer로 모네로 채굴중인데 회사에서 문서 작업을 하루에 10시간하기 때문에 작업하면서 채굴할 수 있는 방법이 있을까요? 예를들면 옵션에서 속도 제한 같은걸 걸어 두면서 채굴하고 싶어서요        ... 4 1 994
dsacxzdqwecxz
2017.12.27
26823 채굴 초보문의]1070Ti 애프터버너 설정후 작업시 GPU가 죽어버려요..   안녕하세요.. 1070Ti 6way로 마플에서 기본 450~460정도 나오는데.. 여기서 애프터버너를 사용하면 500~510정도로 올라갑니다. 그런데 얼마 못가 GPU가 죽어버리고 솔값이 0이되어버립니다. 마이너프로그램을 재실... 12 0 2204
cups
2017.12.27
26822 채굴 SSD 하드 이미지 카피 하는데 타겟을 인식못하네요   EASEUS TODO라는 프로그림으로 클론 하드카피 하려는데 타겟드라이브를 인식 못하네요 120gb SSD 추가로 연결하고 리붓  한후에 TODO 프로그램 실행하였는데 타겟 드라이브가 없다고 나오네 먼저번에 2개 클론할때... 2 0 656
디지마니아
2017.12.27
26821 채굴 배치파일 (관리비를 채굴로 받아보자) 안녕하세요. 제꺼 채굴기만 소소하게 운영하다가 매형 채굴기도 몇대 운영하게 되어 간단한 관리비 계산용 배치파일을 만들어봤습니다.^^ 동작은 23시30분부터는 무족건 30분동안 관리비 계산을 위한 채굴을 합니다. ... 26 18 5745
능력자
2017.12.27
26820 채굴 gtx 1050 2장 또는 gtx 1060 1장 어떤게 나을까요?   전기세나 보드 가격등은 제외하고...   채굴 능력만 비교했을때 gtx 1050 2장 / gtx 1060 1장 어떤게 나을까요?   메인보드 6장 + 그래픽카드 6장으로 채굴하는것과 메인보드 1장 + 그래픽카드 6장으로 채굴할때 어... 2 0 1493
광2
2017.12.27
26819 채굴 하..파워가 문제였었네요.     TB250 plus  에 1070ti 6way    일주일 정도 돌리다 오늘 뻗어서 문제점을 찾고 있었는데   카드 조합을 이리저리 해도 오류 나는게 제각각..  따로 오버하면 무난함.   라이저는 아니라 보고 파워를 확인..    ... 0 1114
vkillmor
2017.12.27
26818 채굴 TB250-BTC+ 슬롯 정말초보라그런데요 막채굴시작했습니다 근데 메인보드에 슬롯이 총7개밖에못꼽는거 같은데 나머지 한개는 어떡하죠       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 ... 7 0 1084
xrp이또
2017.12.27
26817 채굴 마풀허에서 마이너별로 코인채굴량을 볼수있나요?     찾아봤는데 계정통으로는 있어도 마이너나 워커 별로는 없는거 같아서요. 대당 채굴이 얼마나 되나 보고싶은데 ..... 아시는분 없나요?                   ------------------------------------- 꼬리말 * 게시... 3 0 810
하늘코인
2017.12.27
26816 채굴 그래픽카드 온도는 어디까지가 안전한건가요?   70전으로면 괜찮다는 사람이있고 50이상넘어가면 빨리죽는다는 사람도있고 대충 어느정도까지 괜찮다고 봐야하나요? 60도~70도 정도는 상관없나요?                     ------------------------------------- 꼬... 6 0 3115
더블코어
2017.12.27
26815 채굴 다들 라데온 플래싱이나 드라이버잡을때 기존 잘되던 드라이버를 쓰시나요 아님 새로 나온것들 믹스하여쓰시...   라데온 그래픽 드라이버 버젼이나 닥패치나 바이오스에디터 atiflash등이요~ 잘쓰시는거 첨부 해주셔도 감사합니다~                     ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨... 3 0 636
피곤하네
2017.12.27
26814 채굴 그래픽카드 메모리 회사 어떻게 확인하나요? 채굴 입문자 입니다.   1060 6G  만리 그래픽카드를 사용하고 있는데    삼성이 더 많이 나온다고해서   메모리 회사 확인하고 싶은데 메모리 회사 어떻게 확인하나요?                       ----------------------... 4 0 2216
디아골드
2017.12.27
26813 채굴 ㅇ ㅏ. 채굴기 채굴기,. 힘들다 1070TI . 8웨이로 잘 돌리고있는데,, 글픽카드 남는거 발견,, 혹시나? 해서 10웨이 도전..   와!! 드라이버10개 간단하게 다 성공.. 채굴시작...0SOL...0SOL....0SOL...   CPU 점유율99%   또 , 슬슬 하나씩 시작하고... 2 0 1312
낚시하는고양이
2017.12.27
26812 채굴 도대체 채굴 어떻게들 하시나요...저좀 도와주실분 계신가요?     제가 진짜 머리가 나쁜건가요... 다들 아이큐가 200이신가요? 혹시 조금 도와주실분 없나요? 요즘 몸도 조금 안좋은데 머리까지 굳어버린거 같아서 정말 한심합니다. 아무리 찾아봐도 도저히 모르겠습니다... 추... 4 0 1550
채굴까꿍
2017.12.27
26811 채굴 기가 h110 d3a 보드에 rx 570 을쓰는데 에러가 자꾸뜨네요       thread stuck in device driver   드라이버 최신 으로해도안되고 4개 이상이면 바로 블르스크린으로 가네요    보드 버전 f21 인데 설정 다해줘도 이러네요    고수님들 도와주십시요 ㅠ,ㅠ                 --... 1 0 775
요기욥
2017.12.27
26810 채굴 이더리움 클래식 하루 채굴량좀 가르쳐 주세요     1060 3G or 6G    6way 로 이클 채굴량좀 알려 주세요                   ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.   비트코인 암호화화폐 ... 3 0 1701
다타뿌라
2017.12.27
목록
Board Pagination Prev 1 ... 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 ... 3474 Next
/ 3474
default debug random = 0 / type = READ / detected = READ