테슬라메이트를 돌리고 있는 라즈베리파이4에는 저장장치로 32기가 짜리 microSD카드가 꽂혀있다. 구입 당시에 집에 굴러다니는 메모리를 꽂은것이다. 1년여간 써오면서 겪은 문제가 두가지가 있었다. 하나는 사이트 자체가 매우 느려져서 접속과 초기화면, 메뉴 이동에 수십초~수분씩 걸리는 경우가 있었다. 기기를 리부팅하니 속도는 원상복구가 됐으나 1년도 안되서 이러면 앞으로는 어떻게 사용하지? 하는 걱정. 그러다가 10월중에 서버가 다운되서 거의 한달치 데이타가 날아가는 일이 있었다. 테슬라 차랑에서 수집한 데이터가 쌓이지 않은 것이다. 테슬라메이트를 돌리기에 컴퓨팅 파워가 부족한 것은 아니나 저장장치로 사용하고 있는 microSD가 불안불안했다. PC와 다르게 부품을 업그레이드할 수 있는게 없고 그나마 할 수 있는 것이 저장장치로 사용하는 microSD를 외장SSD로 교체하는 것이다. SSD가 읽기쓰기 속도가 10배 이상 빠르니 성능향상을 기대해봄직 했다.
언제부터 그랬다고, 이젠 당연하게 chatGPT를 믿고 작업을 시작했다.
- MicroSD의 데이타를 SSD로 클론 복사. 맥에서 raspberry pi imager 를 사용해서 복사하라고 했는데 구버젼의 앱을 기준으로 설명했는지, 해당하는 메뉴가 없었다.
- 라즈베리파이에 외장SSD를 연결하고 sudo rpi-clone -f sda
- 클론복사가 됐으니 이제 이 SSD로 부팅을 해야한다. 일단 microSD는 제거하고 외장SSD만 USB 3.0포트에 연결해둔다. 리부팅.
- 다시 켜진 전원 LED를 확인하고 공유기 설정메뉴에서 내부 네트워크 목록을 살펴본다. 라즈베리파이가 붙지 않았다. ssh 연결도 되지 않는다. 부팅 실패다.
- 오류메세지를 chatGPT에 넣으니 boot 파티션 이름(레이블)이 달라서 부팅이 안된다하여 sudo fatlabel /dev/sda1 bootfs 실행
- 여전히 부팅 실패. 다른 USB3포트에 꽂아봐도 마찬가지.
- USB2 포트에 꽂아보라고 함. 여전히 부팅 실패.
- mnt/cmdline.txt 에서 PARTUUID 를 SSD의 값으로 바꾸라고 함. 바꿔줌, 부팅 성공. 테슬라메이트도 제대로 접속. 속도 매우 빠름;;
- USB2.0 포트보다 전송속도가 10배 이상 빠른 USB3.0 포트쪽으로 붙일 방법 요청
- /boot/firmware/cmdline.txt 에 quirks 넣기부터 추천. 다행이 부팅 성공했고 테슬라메이트도 제대로 접속 가능.
- 테슬라메이트 화면 하단에 보니 업그레이드가 있다고 함. 기존 버젼은 1.2? 버젼인데 새 버젼은 2.2.0이다.
- docker-compose pull, docker-compose down, docker-compose up -d 을 했더니 테슬라메이트 접속 불가.
- 로그와 접속 결과를 보여달래서 보여줌.
- 테슬라메이트 2.2.0은 Postgres 16이상만 지원하는데 현재 내 Postgres는 버젼 14라고 함.
- DB날리고 새로 시작할 것인지, 보존할 것인지 물어봄. 당연히 1년여간의 테슬라메이트 기록을 날릴 수 없으니 보존 선택.
- 바꾸라는대로 docker-compose.yml 에서 몇몇 줄의 내용을 바꿔줌.
- 기존 DB를 dump 백업 (자야해서 백그라운드 작업 돌려놓고 취침, 다음 줄부터는 다음날 아침 작업)
- 복원하는데 스키마가 이미 존재한다는 오류 계속 발생.
- 혹시나 하고 접속해보니 접속은 되나, 모든 데이타가 날아간 상태.
- DB 초기화하라는대로 하고 복원 명령 넣는데 계속 같은 오류 발생. 명령어가 미묘하게 다름.
- chatGPT 무료버젼 사용량 만료됐다고 10여시간 뒤에 다시 해보라고 나옴.
- 다행이, 오류나기 전 최초에 알려준 복원 명령으로 넣으니 제대로 복원됨.
교훈.
- 99% chatGPT 도움으로 작업을 완료할 수 있었다. 1%는 검색.
- chatGPT가 가끔 뜬금없는 답변을 할 때가 있다. 클론 백업을 하라는 맥용 앱 설명을 하는데, 해당하는 메뉴가 없길래 얘기했더니 예전 버젼엔 있었는데 지금은 없을 수 있다고. 맥 말고 라즈베리파이에서 바로 작업하란다. 그럴거면 진작에…
- docker 명령어도 구버젼과 신버젼 명령어가 달라져서 정정 답변을 받았는데 진행하다보면 여전히 다른 버젼의 명령을 알려준다. 아까 답변의 예가 있으니 알아서 변환해서 사용했다. 기존 대화로부터 취득한 현재 사용자의 환경을 잘 기억하지 못하는 면이 있나보다.
- 한창 오류가 해결되려고 하는 찰라, 무료버젼 사용량이 다 됐다고 10시간뒤에 다시 시도하거나 유료버젼 업그레이드를 하라고 한다. 옛날 유머중에 방위병은 전쟁나도 저녁6시에 칼퇴근 한다더니만 이게 그 짝이다. 방위가 퇴근하는 6시는 미리 시간을 가늠이라도 할 수 있지, 언제 오늘의 할당량이 소진되는지 사용량을 가늠할 수 없는 점 때문에 오도가도 못하는 난처한 상황에 처할 수 있겠다.
- 테슬라메이트를 돌리면 차량의 모니터나 앱에서 알 수 없는 어마어마한 데이터를 취득할 수 있는데 곰곰히 생각해보면 이게 나한테 무슨 가치를 주고 있나 싶을 때가 있다. 사실 10월에 한달치 데이타 수집이 안되고 있던 것도 그 시기에 앱을 한번도 열어보지 않았기에 알아차리지 못했던 것. 말하자면 웹호스팅 이용고객이 자기 사이트가 문제없이 잘 열리고 잘 돌아가면 웹서버의 log 파일을 들여다볼 이유가 없는 것처럼.
- microSD→SSD 교체, 테슬라메이트와 DB 업데이트와 마이그레이션에 얼추 3시간 정도 소요됐다. 써보니, 바꿔보니… 처음 셋팅할 때 SSD로 할걸..
- 안정성은 써 봐야알겠지만 microSD보다 떨어지진 않을테고, 속도는 전 비교할 수 없이 쾌적해졌다.
- 대충 유지보수하면서 쓰고는 있으나, 테슬라메이트를 라즈베리파이에 셋팅하고 돌리는건 내 기준에서는 문턱이 꽤 높은 작업.
- 1년 여간, 3만여 km 주행하면서 쌓인 DB용량은 약 800MB이다.