리눅스, 네트워크

네트워크 - 서버 업그레이드

베노 2025. 7. 31. 21:18

서버 5대중 4대는 라즈배리파이, 1대는 인텔계열이다. 인텔계열은 이미 사용하던 서버라서 별로 만질게 없었고 라즈배리파이를 꽤나 손봐줘야 한다.
라즈베리파이의 기본 저장공간은 SD카드로 통해 운영체제나 기타 파일들을 저장하고 사용한다 하지만 SD카드라서 다양한 단점이 존재한다. 기본적으로 SD카드는 읽기/쓰기 속도가 꽤나 느리다. 또한 저전력으로 사용되는 저장장치이지만 그래도 꽤나 단점들이 존재한다.  존나비쌈 ;;

 

그래서 라즈베리파이에 SSD를 달아서 기상청 슈퍼컴퓨터급 성능을 뽑아먹으려고 한다

그러기 위해 여러가지 작업을 해줘야한다.

 

우선 필요한 준비물은 사용할 SSD와 sata to usb, 라즈베리파이, 고도화된 두뇌 이렇게 필요한다.

 

1. SSD

SSD는 2.5인치 SSD를 구매했다. 2.5인치 말고 nvme 규격의 SSD를 사용해도 되지만 추가적인 모듈을 구매해야 한다.

물론 해외직구로.

나는 클러스터용 케이스를 구매했고 나중에 PoE 모듈을 구매해서 전력 또한 따로 공급해줄것이라 nvme 모듈을 사용 안할거다.

케이스에서도 2.5인치 SSD 슬롯이 존재하기에 굳이 nvme를 사용할 이유가 없다.

SSD는 어떤 제조사를 선택해도 무관하지만 그래도 성능이 킹왕짱인 제조사를 선택하는게 좋다.

나는 용산가서 SSD를 구매했는데 TeamGroup꺼를 주셨다

라즈베리파이는 SSD를 사용할 Sata 커넥터 부분이 없기에 USB를 통해서 SSD 접속 후 부팅을 시켜줘야 하기에 sata to usb 변환장치를 구매했다. 

 

2. Sata to USB

다들 Sata to USB를 구매할 때 쿠팡이나 전자제품 판매처로 갈텐데 주의할점이 있다.

sata to USB에는 칩셋이 존재한다. 이 칩셋에 종류에 따라 인식이 되고 안되고 나뉜다. 경험담임 냉@큼 받아적으셈

보통 칩셋은 JMi칩셋과 ASM1153e칩셋이 있다. 저렴한 가격이다? 그럼 JMi 칩셋이고 ㅈㄴ 창렬가격이다? 그럼 ASM1153e칩셋이다. JMi는 인식불가고, ASM1153e칩셋은 엄청나게 인식된다. 돈만 쌈뽕하게 날림..

 

3. BCM2711 SoC 프로세스 ?

라즈베리파이에는 BCM2711 SoC 프로세스가 존재한다. 이 프로세스는 CPU, GPU, RAM 컨트롤, 기타 회로 등 집합체이다. 여기에 부팅 관련 설정을 넣어줘서 부팅에 대한 설정을 해야 한다. 주의할점은 해당 프로세스는 라즈베리파이의 핵심적인 부품이기에 설정을 잘못만지는 순간 고스란히 쓰레기통에 쑤셔박아서 질질짜는 당신들의 모습을 볼 수 있게된다. 난 그저 치매예방을 위해 지식 백업 용도로 이 블로그를 만들었고 여기다가 두뇌 아카이브로 쓰이는거지, "님들 내꺼 따라하셈 ㅈㄴ 잘됨ㅋㅋㅋㅋㅋ" 이런 용도는 아니다. 차라리 다른 블로그 게시글 보고 따라하다가 ㅈ박는 상황에 다다르면 그때 그 블로그 주인장한테 하소연을 해라

서론이 길었으니 바로 작업ㄱㄱ

 

우선 BCM2711 SoC 부품에 부팅관련 순서를 변경시켜줘야 한다. 위에서 말했다시피 라즈베리파이는 기본적으로 SD카드 부팅이 우선적용되며, 이 이외의 다른 인터페이스를 통해 부팅하는건 막혀있을것이다. 당연히 라즈베리파이에는 SD카드 슬롯 인터페이스가 존재한다. 라즈베리파이의 부팅순서는 아래와 같다.

1. BCM2711 SoC에 전원 IN

2. BCM2711 SoC에 부팅롬이 있는데 부팅롬이 부트로더 리커버리파일이 SD 인터페이스를 통해 SD카드가 있는지 확인

3. SD카드가 있다면 SD카드에 리커버리파일을 불러와 EEPROM을 초기화 해주고, 없다면 EEPROM에서 메인부트로더를 읽는다.

4. 메인 부트로더가 부팅하는 순서를 설정 항목을 확인해서 어떤 인터페이스로 부팅할지 선택장애를 거친다.

5. 지정된 인터페이스의 장치에서 start.elf파일로 부팅과정이 넘어가고, 다시 커널을 불러와서 부팅이 시작된다.

 

당연히 SD 카드를 빼버리면 2번이 "어라?" 하고 3번이 "어라라?"하게 되고, 4번이 "쓰읍....?"하게 된다.이때 4번을 수정하게 된다면 "아하!"가 된다

EEPROM 설정 변경시 BCM2711 반응

 

4. BCM2711 SoC 프로세스 수정하기

우선 SD카드를 삽입해서 정상부팅 되게끔 한다. 어쨌든 부팅이 되어야 라즈베리파이의 BCM2711 SoC 프로세스한테 설정값을 먹여줄 수 있다.

SD카드 넣고 부팅하게 되면 정상부팅 될텐데 이때 모든 정보들을 최신상태로 맞춰줘야 한다.

나는 라즈비안OS를 안쓰고 라즈베리파이 전용 우분투OS를 사용한다. 둘다 데비안 기반 운영체제라 큰 차이점이 없겠지만, 설정방법이 다르니 참고

sudo apt-get update
sudo apt-get upgrade

 

우선 해당 명령어로 OS와 각종 펌웨어들을 업데이트 해준다.

sudo -E rpi-eeprom-config --edit

해당 명령어를 통해 eeprom을 수정한다. 다시한번 말하지만 잘못 만져서 ㅈ될거같으면 걍 하지마라. 그리고 나한테 안된다고 울지마셈;; 그럴거면 걍 꺼버려 서버구축은 자신감이다.

 

그럼 아래와 같이 내용들이 나올것이다.

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
BOOT_ORDER=0xf1
[none]
FREEZE_VERSION=0

다른건 만지지말고 BOOT_ORDER부분만 보면 0xf1로 되어있을것이다. 코드는 16진수이다

0x1 : SD카드

0x2 : 네트워크 부팅

0x3 : USB-MSD

0x4 : USB 부팅

0xf : 반복없이 부팅 실패처리

0xe : 부팅 실패시 재부팅

0x0 : 걍 끄셈

현재 상황에서 0xf1이면 이렇다.

SD카드로 해보고 안되면 걍 실패인거지 ~

즉, SD카드만 부팅되게 하고 SD카드가 없다? 라즈베리파이는 "님아 안되는데요???" 이렇게 나오고 반복 시도는 안해준다.

[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
BOOT_ORDER=0xf41
[none]
FREEZE_VERSION=0

이렇게 수정하면 "USB로 해보고 안되면 USB가 없으면 SD로하고... 둘다 없으면 걍 실패" 난 USB와 sata to USB로 통해 SSD를 연결했으니 당연히 SSD로 부팅이 되어야 한다.

그러고 저장하고 나가면 tmp 디렉터리 안에 파일이 생성될거다. 이는 임시파일이지만 우리가 저 파일을 수정할때 옵션값을 넣어줬기 때문에 저장하고 나가는 순간 시스템이 자동으로 적용시켜준다. 그리고 시스템 재부팅 후 재빠르게 SD카드를 뽑고 SSD를 연결해주면 잘 부팅이 될것이다. 안되면 뭐....아쉬운거지... 다시 시도 ㄱㄱ

 

마무리

이렇게 하면 얍삽하고 재빠른 SSD로 부팅이 되었을거다. SD카드는 용량이 커질수록 뼈아프게 돈이 빠져나가고, 쓸데없이 성능또한 좋지가 않다. 하지만 SSD도 용량이 커질수록 뼈아프게 돈이 빠져나가겠지만, 성능 하나는 확실하다ㅋㅋㅋ

나는 이미 라즈베리파이 4대는 동시에 운용중이고 위 내용과 동일하게 SD카드에서 SSD로 OS를 깔았다. 확실히 좋은거같으면서 잘 모르겠다. 실제로 서버 구축하고 좀 해봐야 체감이 될거같다. 원래 smtp서버. imap서버, db서버, security서버 이렇게 4대를 진행 할 예정이였는데 db서버를 시놀로지를 구매해서 DBMS를 깔고, 데이터베이스 서버로 활용할 예정이라 라즈베리파이 1대가 남아돈다.이거를 VPN서버로 활용할지, 방화벽서버로 활용할지 아직 고민중이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

근데 클러스터의 팬이 갑자기 멈춰버리는 바람에 라즈베리파이 4대가 열뻗쳐버렸다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

영국제품도 빡돌게 만드는 대한민국 폭염 ;;