들어가며
https://imoracle.tistory.com/63
[NAS] 고장난 나스서버 하드디스크 복구기 -2-
들어가며지난 포스팅을 이어서 작성하려 합니다https://imoracle.tistory.com/61 [NAS] 고장난 나스서버 하드디스크 복구기 -1-들어가며 현재 글쓴이는 시놀로지 나스를 사용중에 있으나, 가동중이던 오래
imoracle.tistory.com
현재 글쓴이는 시놀로지 나스를 사용중에 있으나, 가동중이던 오래된 LG NAS가 존재하며 기기가 죽었다..
LG는 NAS 사업에서 철수한지 오래이며.. 나스 기기를 AS 받기란 불가능에 가깝다
사설수리가 있는지는 모르겠으나 이렇게 오래된 기기를 고쳐쓴다는 건 그것 또한 아이러니.
이전 iptime 나스 데이터는 우분투에 올려 마운트해 살린적이 있었으나.
LG나스는 블록크기가 64KB로 리눅스에서 읽을 수 없어 꽤나 고생하며 살렸다..
그 과정을 남기려 한다.
작업에 앞서
우선 보통 나스에 장착된 HDD 즉 하드디스크는 윈도우와 같은 파일 포맷을 사용하지 않는다
윈도우 운영체제에서 사용되는 주요 포맷 시스템은 NTFS, FAT32, exFAT등이 있으며
용도, 특징, 최대 용량, 호환성 등에 차이가 있다.
나스의 경우 제조사(Synology, Qnap, ASUSTOR, TerraMaster)들은 자체 운영체제를 사용하지만
리눅스 기반의 OS인 것이다 !
그래서 이게 왜 문제냐고?
리눅스의 기본 파일 시스템은 ext4 타입이다. 그렇기에 자연스럽게 나스에 장착된 하드디스크도 Ext4로 포맷된다.
리눅스는 Ext 계열을 안정적이고 성능 좋게 지원하기 때문에 사용된다.
즉 정리하자면
NTFS : MS전용, 리눅스에서 쓰기 성능 좋지 않음
exFAT : 포터블용, 신뢰성 및 기능성이 NAS에 부적합
Ext4 : 성능, 신뢰성, 확장성 두루 갖춘 리눅스 최적의 파일 시스템 타입
그렇기에 하드에 이상이 없다고 한들, 윈도우 환경의 PC에 아무리 연결을 해도
디스크만 인식이 될 뿐, 열어서 파일을 볼 수 없다는 말이다.
그렇기에 리눅스 환경에서 마운트 해야한다.
RAID 1 로 구성이 되어있었으니 하드 디스크 하나만 피시에 연결하고 시작한다
리눅스 설치
리눅스는 배포판 많다, 데비안계열, 레드햇계열, 아치계열 등등
학교에서 CentOS로 처음 접하게 되었으나 급히 지원종료가 되어버린 그녀석..
데비안 계열의 우분투로 설치하도록 한다.
하드 마운트
터미널에서
sudo fdisk -l 을 입력해 NAS 디스크를 찾는다.
보통 sda, sdb, sdc 이런식
LG NAS는 하드웨어 RAID 가 아닌 소프트웨어 RAID (mdadm) 기반일 가능성이 있다. 그렇기에 수동으로 조립해준다
sudo mdadm --assemble /dev/md0 /dev/sdb3 그 후, sudo mdadm --detail /dev/md0 를 통해 마운트 할 준비를 하자
그 후 혹시나 해서 파일시스템 타입을 확인 해주었는데 Ext4 타입이 맞다.
sudo mkdir /mnt/nas 로 마운트 할 디렉토리를 만들어주고
sudo mount /dev/md0 /mnt/nas 로 마운트를 해주면 이제 자료를 옮기기만 하면 되는데 !
오류를 내뱉으며 마운트가 되지 않는다..
dmesg로 왜 그런지 확인해보니
bad block size 65536 이라 나온다
65536BYTE 는 64KB 이며 블록사이즈 문제인 것 같다.
이유인 즉슨 보통 일반적인 나스는
Ext4 + 4KB 조합으로 사용을 많이 하는데 하드의 물리섹터 크기가 4KB 이며 커널, 드라이버에서 최적화된 기본 블록크기이기 때문이다, 널리 호환되어 복구 및 유연성또한 높아진다.
그런데 LG NAS 이녀석.. 64KB로 블록 크기를 설정해두었다.
우분투에서는 Ext4 64KB 의 경우 읽지 못한다.. 즉, 마운트가 불가능 하단 소리
그래서 조금 찾아보니 레드햇 계열의 페도라가 최신 커널이 탑재 되어있어 지원가능성이 있단 말을 듣고
리눅스의 아버지 토발즈리누스가 사용한다는 페도라를 설치했으나 역시나 같은 오류를 뱉으며 64KB 블록을 읽지 못한다.
아치 리눅스에서 지원이 된다는 말을 또 들은 후, 아치를 설치하게 된다. 이녀석은 GUI 기반이 아니기에 좀.. 그래... 난 싫어..
결론은 아치 리눅스에서도 지원하지 않았다 여전히 같은 오류
리눅스 커널은 Ext4 의 블록 크기를 PAGE_SIZE 이하로 제한한다. 대부분 x86/x86_64 시스템에서 PAGE_SIZE = 4KB 이며
따라서 블록 크기는 최대 4KB로 제한이 되는 것이다. ARM은 모르겠네
아치 커널설정에 들어가 Ext4 의 블록사이즈를 64KB도 지원되도록 변경하는게 있나 싶어 살펴보았는데 존재하지 않았다.
그럼 block size > PAGE_SIZE 인 부분을 block > 65536 으로 바꿔 주면 될 거 같아
커널을 수정 하기로 한다 ext 경로로 찾아 들어가 해당 부분을 찾아보려 노력했으나 찾을 수 없어 fs/ext4/super.c 안에 superblock 직후
if (sb->s_blocksize > 65536) {
pr_err("EXT4-fs: block size large\n");
return -EINVAL;
를 추가 해주었고 cd /usr/src/linux, make -j$(nproc) 커널 리빌드를 진행했다.
빌드가 완료되면 make modules_install, make install 명령을 통해 설치를 진행해주고
reboot 시켜주면 된다.
그래서 어떻게 되었냐고?
결론적으로는 다 뻘짓이었으며, 동일한 오류가 발생했다.
사실 지금도 파일을 하나하나 옮길 수는 있다.
debugfs 로 접근하니 나스 하드 안의 폴더들이 보인다.
마운트는 불가능하지만 파일 추출은 가능하다
한글인코딩된 디렉토리도 확인된다.
그런데 2TB 의 자료, 수십만의 자료를 하나하나 옮겨야 한다고? 불가능에 가깝다
이제 다른 방법을 통해 진행해야 한다.
다음 편에서는 복구를 성공적으로 완료한 이야기의 끝을 다루고자 한다.
https://imoracle.tistory.com/63
[NAS] 고장난 나스서버 하드디스크 복구기 -2-
들어가며지난 포스팅을 이어서 작성하려 합니다https://imoracle.tistory.com/61 [NAS] 고장난 나스서버 하드디스크 복구기 -1-들어가며 현재 글쓴이는 시놀로지 나스를 사용중에 있으나, 가동중이던 오래
imoracle.tistory.com
'Project > 이것저것' 카테고리의 다른 글
[Program] 도면 유출 방지 프로그램 제작기 -1- (1) | 2025.05.10 |
---|