H2 + NVMe 500GB + 우분투 20.04 LTS
오랫동안 사용하던 제 H2 NAS를 업그레이드 할 때가 된 것 같습니다 ㅎㅎ
H2에 꼽기 위한 NVMe 도 준비해놓고 우분투 20.04 LTS가 출시되기만을 기다리고 있었어요.
주문했던 NVMe는 WD Blue SN550 500GB (http://prod.danawa.com/info/?pcode=10120452&cate=11335288) 제품 입니다.
제가 주문한 제품은 최대 속도가 읽기 2400MB/s, 쓰기 1750MB/s인데, 보통 초고속 NVMe의 속도인 읽기/쓰기 3000MB/s보단 느립니다. 하지만 어차피 H2의 M.2는 PCIe 2.0 x 4만 지원하기 때문에 최대 속도가 2GB/s로 제한되어 있으므로 굳이 3GB/s NVMe를 달 필요는 없습니다. 오히려 가격, 전력, 발열을 신경쓴다면 저런 보급형 제품이 적당해요. 요샌 500GB 보급형 NVMe는 10만원 아래입니다. :)
그리고, 기존의 18.04 LTS로도 몇 년은 더 업데이트 받을 수 있겠지만, 기왕 NVMe 설치할 거 최신 우분투에 5.4 커널이 기분이 좋기 때문에 20.04 LTS를 새로 설치하려 합니다 ㅎㅎ
백업
일단 전 도커로 모든 서비스를 굴리고 있습니다. 도커를 중지시킨 다음 시스템을 백업했습니다.
docker-compose down
awesometic@awesometic-nas:~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
awesometic@awesometic-nas:~ $
전 cp나 mv보단 rsync
로 백업하는 걸 추천드립니다.
sudo rsync -avh /opt/docker/ /media/nas/main/data/backup/200419/docker/
NVMe 설치
오랜만에 H2 케이스를 집어 뜯어서 구매한 NVMe를 장착합니다.
다시 조립 후 BIOS에서 잘 인식되나 확인해봤습니다.
잘 잡히네요 :)
우분투 20.04 설치
일단 우분투 20.04 LTS 베타를 다운받아 USB로 구웠습니다.
우분투 20.04 다운로드 링크: https://releases.ubuntu.com/20.04/
그리고 H2에 USB를 꼽아 진행했습니다. USB로 부팅하기 위해 바이오스에서 바꿔줘도 되고, 부팅 중 F7 키를 눌러 부트 디바이스를 정해줘도 됩니다.
일단 전 랜 포트별로 관리하고 있진 않기 때문에 그냥 두 개의 랜포트를 본딩시켜 줬습니다. 하나의 2개의 1GBits 랜을 하나의 랜처럼 사용하는 건데, 구현 방법이 여러 가지가 있지만 소프트웨어 구현 방식인 Balance-rr 로 진행했어요. 소프트웨어 구현이다 보니 다른 방식에 비해선 조금 느리지만, 그래도 1.5 GBits 이상은 나와줄 겁니다.
사실 또, 이 본딩 셋업 자체가 나중에 하기엔 조금 귀찮습니다. 최신 우분투에 맞는 가이드를 찾는 것부터가 좀 고생했던 기억이 나네요. 그래서 그냥 설치할 때 제공되는 인터페이스로 하는 게 가장 편합니다.
제일 중요한 부분이네요. :) 새로 설치한 NVMe로 설치 디바이스를 잡아줍니다.
리눅스 서버 설치도 보통의 리눅스 설치와 크게 다르진 않습니다. 중간에 OpenSSH 기본 설치와 live patch 만 체크시켜 준 후 쭉 진행했습니다.
알아서 소프트웨어 업데이트 확인/설치합니다. 그리고 재부팅 후, NVMe의 우분투로 쭉 부팅하면 됩니다.
시스템 설정
패키지 설치
일단 가장 기본적인 패키지들을 설치했습니다.
sudo apt install zsh neovim tmux htop iotop iftop iperf3 iozone3 inxi neofetch shellcheck
그리고 제 개인 설정파일들도 적용했어요.
다음으로 도커를 설치했습니다.
도커 설치 가이드: https://docs.docker.com/engine/install/ubuntu/
근데 아마 apt update
할 때 이런 에러가 나타날 거예요.
awesometic@awesometic-nas:~ $ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Ign:1 https://download.docker.com/linux/ubuntu focal InRelease
Get:2 http://kr.archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Err:3 https://download.docker.com/linux/ubuntu focal Release
404 Not Found [IP: 13.225.105.42 443]
Hit:4 http://kr.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:5 http://kr.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:6 http://kr.archive.ubuntu.com/ubuntu focal-security InRelease
Get:7 http://kr.archive.ubuntu.com/ubuntu focal/main amd64 Packages [974 kB]
Reading package lists... Done
E: The repository 'https://download.docker.com/linux/ubuntu focal Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
도커 저장소가 20.04 focal 배포판을 지원하지 않기 때문인데, 일단 정식 지원하기 전까진 바로 바로 이전 버전인 19.10 disco 저장소에서 받아오도록 합니다.
전 /etc/apt/sources.list
파일을 직접 수정했습니다.
sudo vi /etc/apt/sources.list
파일 맨 아래 두 줄을 다음과 같이 바꿔주면 됩니다.
deb [arch=amd64] https://download.docker.com/linux/ubuntu disco stable
# deb-src [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
그리고 다시 sudo apt update
하면 정상적으로 패키지 정보를 읽어옵니다. 쭉 가이드 따라서 docker를 설치했습니다.
하드디스크 자동 마운트
이제 설치된 하드디스크들을 인식해 부팅 시 자동 마운트 시킬 차례입니다.
일단 각 파티션들이 마운트될 디렉토리들을 만들어줬습니다.
전 SATA 하드디스크 하나 (/dev/sda), USB 하드디스크 하나 (/dev/sdb), 그리고 직전 시스템이 설치되어 있던 eMMC 하나 (/dev/mmcblk0) 까지 NVMe 외에 3개의 드라이브가 더 존재합니다.
sudo mkdir -p /media/nas/{hdd8tb,hdd1.5tb,emmc128gb}
awesometic@awesometic-nas:~ $ ll /media/nas
total 12K
drwxr-xr-x 2 root root 4.0K Apr 19 11:19 emmc128gb
drwxr-xr-x 2 root root 4.0K Apr 19 11:19 hdd1.5tb
drwxr-xr-x 2 root root 4.0K Apr 19 11:19 hdd8tb
그리고 이전 OS가 깔려있던 eMMC를 btrfs로 포맷했습니다. btrfs가 SSD나 eMMC같은 낸드 플래시 드라이브에 최적화되어 있고, 스냅샷 기능이 있기 때문에 한번 사용해보고 싶었어요. 무엇보다 5.4 커널쯤 되니까 기본 지원이네요. :)
sudo gdisk /dev/mmcblk0
gdisk
로 파티션 테이블을 새로 작성해준 후,
sudo mkfs.btrfs -f /dev/mmcblk0p1
awesometic@awesometic-nas:~ $ sudo mkfs.btrfs -f /dev/mmcblk0p1
btrfs-progs v5.4.1
See http://btrfs.wiki.kernel.org for more information.
Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication.
Label: (null)
UUID: 92caea1b-a072-4938-8e53-9e97b4c786ee
Node size: 16384
Sector size: 4096
Filesystem size: 116.48GiB
Block group profiles:
Data: single 8.00MiB
Metadata: single 8.00MiB
System: single 4.00MiB
SSD detected: yes
Incompat features: extref, skinny-metadata
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 116.48GiB /dev/mmcblk0p1
btrfs로 포맷했습니다.
이제 각 드라이브의 파티션들의 UUID를 확인해줍니다.
ls -al /dev/disk/by-uuid
awesometic@awesometic-nas:~ $ ls -al /dev/disk/by-uuid
total 0
drwxr-xr-x 2 root root 140 Apr 19 11:28 .
drwxr-xr-x 7 root root 140 Apr 19 10:40 ..
lrwxrwxrwx 1 root root 10 Apr 19 10:41 2079d733-174f-46e0-ac97-8cd042f78d64 -> ../../sda1
lrwxrwxrwx 1 root root 15 Apr 19 10:41 2938-7287 -> ../../nvme0n1p1
lrwxrwxrwx 1 root root 15 Apr 19 11:28 92caea1b-a072-4938-8e53-9e97b4c786ee -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 Apr 19 10:41 a0a7f72e-390f-4da1-bf14-7e01c4a86e56 -> ../../sdb1
lrwxrwxrwx 1 root root 15 Apr 19 10:41 cf2dd680-647a-46df-a13b-eb11c28a5a91 -> ../../nvme0n1p2
UUID를 확인했으면 /etc/fstab
에서 이 디스크들을 자동으로 읽도록 합니다.
sudo vi /etc/fstab
전 아래처럼 추가했습니다.
/dev/disk/by-uuid/2079d733-174f-46e0-ac97-8cd042f78d64 /media/nas/hdd8tb ext4 defaults,nofail,noatime 0 0
/dev/disk/by-uuid/a0a7f72e-390f-4da1-bf14-7e01c4a86e56 /media/nas/hdd1.5tb ext4 defaults,nofail,noatime 0 0
/dev/disk/by-uuid/92caea1b-a072-4938-8e53-9e97b4c786ee /media/nas/emmc128gb btrfs defaults,nofail,noatime,compress=lzo 0 0
재부팅하고 df -Th
명령어로 자동 마운트가 되었나 확인해봅니다.
awesometic@awesometic-nas:~ $ df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 779M 1.4M 777M 1% /run
/dev/nvme0n1p2 ext4 457G 7.0G 427G 2% /
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 vfat 511M 7.8M 504M 2% /boot/efi
/dev/sdb1 ext4 1.4T 584G 722G 45% /media/nas/hdd1.5tb
/dev/mmcblk0p1 btrfs 117G 3.4M 117G 1% /media/nas/emmc128gb
/dev/sda1 ext4 7.3T 5.7T 1.2T 84% /media/nas/hdd8tb
/dev/loop1 squashfs 68M 68M 0 100% /snap/lxd/14133
/dev/loop2 squashfs 94M 94M 0 100% /snap/core/8935
/dev/loop0 squashfs 9.2M 9.2M 0 100% /snap/canonical-livepatch/95
tmpfs tmpfs 779M 0 779M 0% /run/user/1000
순조롭네요. :)
도커 서비스 복구
이제 도커 서비스를 복구합시다.
하드디스크에 백업해놨던 도커 설정 파일들과 서비스를 한 번에 실행시킬 docker-compose.yml
파일을 다시 rsync로 가져옵니다.
awesometic@awesometic-nas:~ $ sudo mkdir /opt/docker
awesometic@awesometic-nas:~ $ sudo rsync -avh /media/nas/hdd8tb/data/backup/200419/docker/ /opt/docker/
NAS 드라이브들에 대한 심볼릭 링크를 만들어줍니다. 각 프로그램에서 심볼릭 링크로만 접근하게끔 하여 훗날 관리를 좀 용이하게 하기 위해서입니다.
전 main, ext1, ext2 3개로 이름을 지었습니다.
sudo ln -s /media/nas/hdd8tb /media/nas/main
sudo ln -s /media/nas/hdd1.5tb /media/nas/ext1
sudo ln -s /media/nas/emmc128gb /media/nas/ext2
awesometic@awesometic-nas:/opt/docker $ ll /media/nas
total 24K
drwxr-xr-x 1 root root 0 Apr 19 11:28 emmc128gb
lrwxrwxrwx 1 root root 19 Apr 19 11:50 ext1 -> /media/nas/hdd1.5tb
lrwxrwxrwx 1 root root 20 Apr 19 11:50 ext2 -> /media/nas/emmc128gb
drwxr-xr-x 4 root root 4.0K Nov 4 2018 hdd1.5tb
drwxrwxr-x 13 awesometic awesometic 4.0K Apr 9 11:31 hdd8tb
lrwxrwxrwx 1 root root 17 Apr 19 11:50 main -> /media/nas/hdd8tb
이제 docker-compose up -d
로 도커 서비스들을 실행시켜 줍니다.
sudo apt install docker-compose
cd /opt/docker
docker-compose up -d
물론, 바로 제 모든 서비스들이 정상적으로 작동했습니다. :)
삼바 설정
데스크탑이나 노트북에선 역시 삼바가 가장 파일 관리하기 편합니다.
삼바 설치 후 사용자를 추가합니다.
sudo apt install samba
sudo smbpassword -a awesometic
그리고 설정 파일을 수정해서 삼바를 통해 각 드라이브에 접근할 수 있게 합니다.
sudo vi /etc/samba/smb.conf
맨 아래에 이 내용을 추가해줬습니다.
[NAS - MAIN]
comment = Awesometic's NAS
path = /media/nas/main
valid users = awesometic
writable = yes
create mask = 0755
directory mask = 0755
[NAS - EXT1]
comment = Awesometic's NAS
path = /media/nas/ext1
valid users = awesometic
writable = yes
create mask = 0755
directory mask = 0755
[NAS - EXT2]
comment = Awesometic' NAS
path = /media/nas/ext2
valid users = awesometic
writable = yes
create mask = 0755
directory mask = 0755
마지막으로 삼바 서버를 재시작해줍니다.
sudo service smbd restart
제 데스크탑에서 접근이 제대로 되나 확인해봤습니다.
읽기/쓰기 모두 잘 되네요.
끝으로
다른 몇 가지 설정이 남긴 했지만 일단 이 정도로 하고 마무리 지어야 겠습니다 ㅎㅎ
필요할 때마다 하나씩 하면 될 듯 하네요.
제 오드로이드 H2에 NVMe, 우분투 20.04로 업그레이드하는 과정이었습니다. 필요한 분들께 참고가 되었으면 좋겠습니다 :)
'Daily' 카테고리의 다른 글
아이폰 12 프로와 트루톤, 화면 색상이 조금 이상하다 (2) | 2020.11.02 |
---|---|
미디어패드 M3 커스텀롬 개발 소식 (11) | 2020.04.22 |
Docker, OMV5 NAS 구축 가이드를 예정 중입니다. (10) | 2019.04.22 |
티스토리 에디터에 마크다운 모드가 생겼네요. (3) | 2019.04.22 |