‘디지털 파일 뮤직’ 사실 USB 오디오가 나오기 시작할 때만 하더라도 음질적인 문제로 이렇게 까지 대중화가 될지는 몰랐습니다. 초창기 USB 오디오는 음질이 떨어졌고 무엇보다 Windows7 자체적으론 24/96의 PCM 밖엔 데이터 전송이 안되지만 ASIO를 통해 그 이상을 지원하고 있지요. USB Audio Class 2를 지원하는 OS X도 PCM 전송 밖에 지원하지 않지만 어쨌든 DoP를 통해서 DSD까지도 가능한 환경이 되었습니다.
이렇게 시장이 빨리 정착화 된 것은 바로 디지털 파일을 다룬다는 것이고 디지털 파일은 언제나 100% 똑 같은 데이터를 손쉽게 복제 할 수 있다는 부분이 있지요. 확실히 음원을 손쉽게 대량으로 가질 수 있다는 것 자체가 매력입니다만.. 각설하고…
하지만 정작 중요한 것을 잊고 있습니다. USB Audio를 구현할 수 있는 기술도 중요하지만 이것은 컴퓨터를 기본으로 한다는 것입니다. 그리고 대부분의 오디오파일들은 하드 디스크를 통해 파일을 저장하고 읽는다는 것입니다.
여기서 중요한 것은 디지털 파일 뮤직에서 고음질을 얻기 위해선 컴퓨터 오디오로 봐야 하는 것이 아니라 임베디드로 봐야 한다는 것입니다.
그렇다면 왜 SSD가 하드 디스크 보다 음질이 좋다는 이야기가 나오는 것일까요? 여기서 분명히 짚고 넘어가야 할 것이 있습니다. 일반적으로 우리가 쓰는 Windows나 리눅스에는 파일 시스템이라는 것이 있습니다. MS에서는 FAT와 NTFS라는 것을 밀고 있고 리눅스 진영에서는 EXT를 사용하고 있고 최근엔 EXT4라는 것을 사용하고 있습니다.
문제는 프라그멘트(조각) 즉, 프라그멘테이션 입니다. 무슨 얘기냐? 어려운 이야기지만 최대한 쉽게 적어 보도록 하겠습니다.
일반적으로 우리가 요즘은 보통 2TB 크기의 하드 디스크를 많이 구매합니다. 여기서 보통은 NTFS로 파일을 포맷합니다. 여기서 클러스터가 등장합니다. 할당 단위 크기라고 표기되어 있는데 파일을 기록하는 물리적인 크기의 단위입니다. 보통 4,096바이트로 되어 있고 64KB까지 설정이 가능합니다.
<일반적인 하드 디스크의 헤드는 이렇게 움직입니다. 데이터의 조각화 때문에 이렇게 바쁘게 움직이는 것입니다. 데이터 블럭이 연속적으로 기록되게 되면 이렇게 움직일 필요가 없어지며 결과적으로 노이즈가 줄어 듭니다>
이 차이는 큰 파일을 많이 쓰고 읽을 땐 64KB가 유리하고 작은 파일 들을 많이 쓰고 읽을 땐 작을 수록 유리합니다. 그래서 NTFS는 기본적으로 4,096바이트를 권장합니다. 하지만 여기서 문제가 생깁니다.
일반 PC는 파일 크기가 일정하지 않습니다. 보통 큰 파일은 음악과 동영상 즉, 멀티미디어를 위해 쓰이지만 일반 PC 프로그램은 작은 파일들이 많이 쓰이기 때문입니다. 앞서 언급한 대로 디지털 파일 뮤직 재생에서 PC의 개념으로 접근 하는 것이 아닌 임베디드로 접근해야 한다고 말씀드린 게 바로 이 부분입니다.
더 쉽게 이야기를 해 보죠. 예를 들어 클러스터를 4,096으로 포맷된 하드에 4,097바이트짜리 파일 수천 개를 만들어 이 파일들은 부분적으로 삭제하고 쓰는 작업을 몇 번 반복하게 됩니다. 이렇게 되면 1개의 섹터(클러스터)에 이 파일들이 다 담기지 못하고 다른 섹터에 저장되게 됩니다. 즉, 이러한 작업을 반복하게 되면 프라그멘테이션 즉, 조각화가 일어납니다.
더 쉽게 이야기 하면 컴퓨터 하드 디스크는 파일을 연속적으로 저장하는 것이 아니라 빈 공간을 찾아다가 데이터를 기록하며 그 단위를 클러스터라고 이야기 하는데 이 데이터가 덩어리로 존재하는 것이 아니라 조각화가 일어나면 그 데이터를 찾아가기 위해 헤드가 미친 듯이 움직이게 됩니다.
여기서 불필요한 리플이 일어납니다. 전원이 불안정해진다는 이야기입니다.
결과적으로 디지털 신호를 판독하는 데는 문제가 되지 않지만 이러한 노이즈가 케이블에 유입되어 아날로그 증폭을 통해 아날로그 신호를 출력하는 하이파이 시스템에서는 문제가 된다는 것입니다.
실제 앞에서 언급한 내용의 작업을 여러 차례 반복하게 되면 쓰다 만 빈 공간을 연속적으로 찾아 저장하게 되며 연속성이 없는 랜덤 한 작업이 일어나기 때문에 이러한 하드 디스크에 16/44.1이나 24/192의 대용량 음원 파일을 저장하게 되면 파일 하나를 재생하기 위해 하드 디스크의 헤드는 미친 듯이 움직이게 되는 것입니다.
이러한 작업이 되는 것은 클러스터 단위가 작기 때문입니다. 클러스터 단위가 커지면 대용량 파일을 재생하는데 헤드의 움직임이 적지만 디스크의 효율성은 떨어집니다. 하지만 그 반대가 되면 데이터를 읽는데 부하가 많이 생기는 것입니다.
특히 클러스터의 단위가 적을수록 파일 하나를 사용하는데 모든 블록의 데이터를 담고 있는 inode(인덱스 노드)의 연속성이 떨어지기 때문에 음질은 떨어질 수 밖에 없습니다.
과거에 컴퓨터 성능이 떨어질 땐 이러한 프라그멘테이션 때문에 데이터 전송에 지연이 발생하기도 했지만 지금은 그런 일은 없습니다. 전송 능력을 떨어트리긴 하지만 컴퓨터 성능이 워낙 좋아서(버퍼 용량) 재생에 스킵이 일어나거나 하진 않는다는 것이지요.
하지만 하이엔드 오디오에서는 다릅니다.
결과적으로 이러한 문제를 피해가기 위한 솔루션을 제시 합니다. 돈 들어가지 않고 음질을 향상 시킬 수 있는 방법이니 많은 분들이 신경 쓰시면 좋을 것 같습니다.
우선 디지털 파일 음원을 저장하는 디스크를 따로 사용하는 것이 좋습니다. Windows를 사용하는 경우 프라이머리 디스크에 음원을 함께 저장해 둘 경우 프라그멘테이션이 심해집니다. 프로그램 설치/삭제 인터넷 캐쉬 파일등 때문입니다. 특히 하드 디스크의 데이터 삭제 및 저장 기능은 메모리 방식과 다릅니다. 일반적으로 우리가 하드 디스크에 저장된 데이터를 삭제 해도 실제 삭제가 되진 않습니다. 데이터를 쓸 수 있는 주소가 비어 있을 뿐 실제 데이터를 다시 쓰는 방식입니다.
그렇기 때문에 프라그멘테이션이 심해집니다. 파일을 자주 쓰고 지우는 프라이머리 디스크에 음원을 읽어서 불러오는 것은 고음질을 위해 바람직 하진 않습니다.
그리고 Windows를 사용하는 것 보다는 Linux를 사용하는 것이 좋습니다. 리눅스는 EXT4라는 파일 포맷이 있습니다. 볼륨 크기를 1엑사바이트까지 지원하고 파일 하나의 크기가 16테라바이트까지(FAT32는 파일 하나의 최대 크기가 4기가였습니다. 1080p 영상 시대가 오면서 4기가가 넘는 단일 파일이 나왔지요. 세상이 어떻게 변할진 아무도 모릅니다) 지원을 합니다.
하지만 중요한 것은 EXT4 파일 시스템은 미디어 스트리밍에 매우 적합한 파일 시스템을 갖추고 있다는 것입니다.
예를 들자면 파일 쓰기 기능입니다. 리눅스의 EXT4는 4,096바이트의 클러스터를 가집니다. 하지만 EXT4는 쓰기 기능에 차별화를 가져옵니다. 딜레이드 얼로케이션이나 다중 블록 할당을 통해 프라그멘테이션을 줄입니다.
일반적인 파일 시스템에서는 데이터를 디스크에 기록하기 전에 필요한 블록을 미리 할당합니다. 하지만 딜레이드 얼로케이션은 데이터가 디스크에 쓰여질 때 까지 블록을 할당을 지연시킵니다. 실제 파일 크기를 인식하여 블록을 할당하여 기록하기 때문에 프라그멘테이션 즉, 디스크의 조각화를 방지합니다.
<벤치마크 결과, NTFS와 EXT 사이언 굉장한 퍼포먼스 차이를 낸다. 이미지를 클릭하면 더 큰 화면으로 볼 수 있음>
즉, 딜레이드 얼로케이션 기능이 활성화 됨으로써 다중 블록으로 데이터를 쓴다는 것입니다. 아까 앞에 아이노드라고 설명을 해 드렸는데 4,096바이트라는 클러스터 단위로 데이터를 써 넣을 때 아이노드에 이 클러스터 다음에 연결될 데이터가 어디에 있는지가 저장 되어 있습니다. 그리고 그 클러스터 앞엔 이 앞의 데이터가 어디에 있다는 정보가 들어 있지요. 이런 식으로 데이터를 찾아가는 것입니다. 하지만 다중 블록 할당 기술은 아이노드의 연속성을 부여하여 데이터가 연속적으로 이어져 나갈 수 있게 됩니다.
즉, 16/44.1이 아니라 24/192나 나아가 32/384와 같은 음원 재생에 있어 디스크 단편화를 최소로 줄일 수 있고 헤드의 움직임을 최소화 할 수 있기 때문에 여기에 따른 노이즈도 최소화 할 수 있습니다. 실제 하드 디스크의 소음도 그만큼 조용(스핀들 모터 말고 읽고 쓰는 소리)합니다.
그렇다면 과연 얼마나 연속성이 지속될 수 있는 걸까요? EXT4의 Extents는 4,096바이트의 클러스터 연속성으로 최대 128메가바이트까지 기록할 수 있다는 것입니다. 그러니까 이론적으로 128메가의 파일까지 조각화 0 상태에서 조각모음 없이 데이터를 기록할 수 있다는 것입니다.
하지만 단점은 디스크의 효율성이 떨어진다는 것입니다. 작은 파일을 쓰고 읽기 위해서는 클러스터 단위가 작을수록 효율적이고 대신 큰 파일을 쓰고 읽기 위해서는 클러스터 단위가 클수록 좋습니다. 하지만 이것을 얼마나 효율적으로 가져가냐는 파일 시스템이 얼마나 지능적이냐는 것입니다.
그래서 제가 내린 결론은 이겁니다. 디지털 파일 음원 저장하고 읽는 하드 디스크의 전용화, 그리고 디스크를 아무리 많이 채워도 2/3 이상은 채우지 않는 것, 그리고 Windows의 경우 디스크 조각 모음을 자주 하는 것(Windows7의 경우 어플을 통해 자동으로 실행됨), 하지만 가장 좋은 것은 리눅스와 EXT4를 사용하는 것입니다. 실제 리눅스에는 디스크 조각 모음이라는 개념이 없습니다. 그 이유는 이미 시스템 자체가 디스크 조각화가 일어나지 않게 데이터를 저장하기 때문입니다. 그래서 프라그멘테이션 0에 가깝다는 표현을 쓰지요.
문젠 EXT4는 Windows상에서 인식되지 않습니다. 그래서 NAS를 통해서 네트워크로 쓰고 읽습니다. 일단 적합도 면에서 단일 파일 용량이 큰 스트리밍에선 확실히 EXT4가 우수합니다. 그래서 NAS가 좀 더 음질이 좋다는 이야기가 나오는 것 같습니다만 확실히 여러 이점 중 하나일 겁니다.
PC가 되었던 네트워크 플레이어가 되었던 리눅스 기반의 NAS를 연결하는 것이 음질적으로 가장 이득이 된다고 할 수 있겠습니다. 사실 HDD보다 SSD가 음질적 이득이 더 많다라는 이야기도 이런 이유가 하나 일 것입니다. 하지만 사실 이 두 가지 미디어는 장/단점이 존재합니다. 이점은 SSD가 좀 더 많습니다만 하드 디스크도 사용시 몇 가지 주의만 기울인다면 상당히 좋은 미디어입니다. 특히 가격면에서 SSD보다 하드 디스크가 더 매력적입니다. 현 시점에선 하드 디스크의 단점을 최소화 하는 것이 음질적으로나 경제적으로 가장 큰 이득으로 판단 됩니다.
다음 편에도 하이파이에서 디지털 파일 뮤직을 구현할 때 우리가 미처 몰랐던 음질 향상에 대한 팁을 업로드 하겠습니다. 기대해 주세요~