티스토리 뷰
Disclaimer
개인적으로 SSD에 설치되있던 umbrel 을 HDD로 이전하다가 실패한 경험이 있었습니다.
https://twitter.com/btclog29/status/1637764478644420608
트위터에서 즐기는 비트 전하는 키팅⚡
“@bitoka_h @my3rdstory 기존에 잘 설치되었던 ~/umbrel 폴더를 그대로 /mnt/hdd/umbrel 폴더로 복사한 후(584G), /mnt/hdd/umbrel 에서 엄브렐을 시작해 보았다. 시작은 잘 되었고 디스크 용량은 기대했던데로 2TB
twitter.com
결국 hdd 를 ext4로 포맷하고 처음부터 umbrel 을 다시 설치하는 수고를 겪었지만 hdd 의 파일시스템만 ext4 로 되어 있었다면 파일복사만으로도 이전이 가능했을 것 같다는 생각이 들어서 내용을 정리해 보았습니다. 실제로 검증된 방법은 아님에 유의하시고 혹시 아래 방법으로 umbrel 이전에 성공하셨다면 꼭 피드백을 남겨 주시면 감사하겠습니다.
Concept
umbrel 의 모든 설치파일은 기본적으로 ~/umbrel 폴더 아래 모두 설치된다. 그러므로 해당 파일들만 외부 스토리지로 복사해서 넘김으로 간단하게 umbrel 을 옮길 수 있다. 그리고 외부 스토리지가 마운트된 경로에서 umbrel 을 다시 시작할 수 있다. 단, 이때 umbrel 이 해당 경로에 쓰기 권한을 가지고 있어야 정상동작 한다. 리눅스에서 외부 HDD의 파일시스템에 권한관리를 하기 위해서는 ext4 파일시스템으로 포맷이 되어 있어야 한다.
HDD가 연결된 경로와 파일시스템 확인
$ df -TH
Filesystem Type Size Used Avail Use% Mounted on
tmpfs tmpfs 781M 2.0M 779M 1% /run
/dev/nvme0n1p2 ext4 1.1T 6.3G 950G 1% /
tmpfs tmpfs 4.0G 0 4.0G 0% /dev/shm
tmpfs tmpfs 5.3M 4.1k 5.3M 1% /run/lock
/dev/nvme0n1p1 ext4 230M 30M 183M 15% /boot
tmpfs tmpfs 781M 0 781M 0% /run/user/1000
/dev/sda2 ext4 2.0T 249G 1.7T 14% /mnt/hdd
$
(또는 `sudo fdisk -l` )
hdd 를 ext4 형식으로 포맷
(리눅스가 hdd 를 인식하고 있는 경로가 /dev/sda2 일 경우)
$ mkfs.ext4 /dev/sda2
Ref) https://myksb1223.github.io/develop_diary/2018/07/31/Manage-partition-and-format-ext4-in-Linux.html
포맷이 끝나면 hdd 를 /mnt/hdd 경로로 마운트
마운트 할 경로 /mnt/hdd 는 임의로 변경 가능
$ sudo mount /dev/sda2 /mnt/hdd
hdd 에 사용자 계정 권한 부여
$ sudo chown -R user1:user1 /mnt/hdd
파일 복사
파일을 복사하기 전에 기존 umbrel 을 정지시켜야 한다.
$ cd ~
$ ./scripts/stop
umbrel 파일복사
umbrel 용량에 따라 몇시간 걸릴 수 있음(인내심을 가지고 기다려야 함)
$ cp -r ~/umbrel /mnt/hdd/umbrel
이때 터미널을 새로 하나 열어 수시로 hdd 의 용량을 체크해 보면 복사가 잘 진행 중인지 여부를 확인할 수 있다
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 762540 1888 760652 1% /run
/dev/nvme0n1p2 983131556 6128476 926988976 1% /
tmpfs 3812696 0 3812696 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
/dev/nvme0n1p1 224400 29000 177984 15% /boot
tmpfs 762536 0 762536 0% /run/user/1000
/dev/sda2 1921523920 242214300 1581627804 14% /mnt/hdd
파일복사가 끝나면 새로운 umbrel 을 시작해 본다.
$ cd /mnt/hdd/umbrel
$ ./scripts/start
정상적으로 구동되면 기존 umbrel 삭제
$ rm -rf ~/umbrel
리눅스 부팅시 hdd 를 자동으로 마운트되도록 설정(가장 마지막 줄)
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p2 during installation
UUID=c8axxx33-2xxf-4bce-9fc4-5b9dxxxxf518 / ext4 errors=remount-ro 0 1
# /boot was on /dev/nvme0n1p1 during installation
UUID=66xxxxcc-cc17-4xx1-8xxa-1fadcxxxx6b5 /boot ext4 defaults 0 2
/swapfile none swap sw 0 0
/dev/sda2 /mnt/hdd ext4 defaults,auto,exec,rw 0 0
$
마지막으로 리눅스 부팅시 자동시작 설정 경로(ExecStart, ExecStop)를 수정한다.
$ cat /etc/systemd/system/umbrel-startup.service
[Unit]
Wants=network-online.target
After=network-online.target
Wants=docker.service
After=docker.service
# This prevents us hitting restart rate limits and ensures we keep restarting
# indefinitely.
StartLimitInterval=0
[Service]
Type=forking
TimeoutStartSec=infinity
TimeoutStopSec=16min
ExecStart=/mnt/hdd/umbrel/scripts/start
ExecStop=/mnt/hdd/umbrel/scripts/stop
User=root
Group=root
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=umbrel startup
RemainAfterExit=yes
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
$
Trouble shooting
umbrel 시작이 안될 때
아래와 같은 오류가 뜨며 시작이 안될 때,
user@ubuntu:/mnt/hdd/umbrel$ sudo ./scripts/start
sudo: unable to execute ./scripts/start: Permission denied
user@ubuntu:/mnt/hdd/umbrel$
workaround)
hdd 를 언마운트하고 디스크 검사를 한다 그리고 다시 umbrel 을 시작해 본다.
sudo umount /dev/sda2
sudo fsck /dev/sda2
'비트코인 공부' 카테고리의 다른 글
Native Segwit (bech32) 주소 출금 (0) | 2023.05.17 |
---|---|
Making bitcoin node reachable (0) | 2023.04.07 |
외장 hdd 에 umbrel 설치하기 (0) | 2023.03.20 |
니모닉을 클라우드에 안전하게 보관하기 (6) | 2023.03.20 |
비트코인의 총 발행량은 왜 21백만개가 되었을까 (0) | 2023.03.09 |