일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- FSX
- 테라폼
- storage gateway
- lambda
- EC2
- Jenkins
- S3
- Athena
- ncp
- terraform
- 네이버 클라우드 플랫폼
- 윈도우
- Python
- Windows
- Linux
- Dedup
- NaCl
- ALB
- AWS
- CloudFront
- route table
- security group
- dns
- CLI
- AD
- 도메인
- Subnet
- Storage
- RDS
- VPC
- Today
- Total
끄적이는 보송
[AWS] Amazon FSx for Windows File Server에서 Data Deduplication(데이터 중복 제거) 해보기 본문
[AWS] Amazon FSx for Windows File Server에서 Data Deduplication(데이터 중복 제거) 해보기
끄적이는 보송 2022. 8. 4. 09:10데이터 중복 제거란 (Data Deduplication)
Amazon FSx for Windows File Server(이하 FSx)에 데이터 중복제거(Data Deduplication)이라는 기능이 제공된다. 데이터 중복제거란 혹은 줄여서 Dedup은(이하 중복제거) 데이터의 중복되는 복사본을 제거하고(고유하게 만들어) 스토리지 용량을 크게 줄일 수 있는 기능이라고 한다. FSx에서 제공되는 기능이지만 AWS의 기능이 아닌 Microsoft 사의 기능이라고 한다.
데이터 중복 제거 작동 방식
우선 데이터 중복 제거는 아래와 같은 순서로 동작한다.
1. Data Deduplication chunking algorithm이 중복 제거 대상이 되는 파일 시스템 파악
2. 파일을 청크(Chunk) 단위로 쪼개며 모든 청크는 고유한 해시값으로 식별됨.
3. 해시값을 참고하여 쪼갠 청크를 파악하고 중복되는 청크를 식별 (데이터를 파일이 아닌 "덩어리(Chunk)"로 본다)
4. 중복되는 청크를 고유하게 만들어, 청크들을 청크 저장소에 배치 및 압축
5. 최적화된 파일을 reparse point라는 것으로 청크 저장소에 데이터를 포인팅 하도록 배치
6. 최적화된 파일이 읽힐 때, 파일 시스템은 Data Deduplication file syster filter로 읽기 작업을 Redirect 하여 해당 파일을 스트리밍 한다.
7. 중복된 파일이 제거되었으니 삭제된 파일에서 더 이상 참조하지 않는 불필요한 청크가 남음.
8. Garbage Collection 프로세스에 의해 불필요한 청크는 제거하여 디스크 공간이 회수됨.
9. Scrubbing 프로세스가 중간중간 데이터가 손상된 부분은 없는지, 있다면 복구한다.
...라곤 최대한 설명했지만 다음 링크에 중복 제거의 작동 방식이 잘 나와 있으니 참고 바란다.
[+] https://learn.microsoft.com/en-us/windows-server/storage/data-deduplication/understand
데이터 중복 제거 Jobs
중복 제거에는 아래와 같은 Job의 조합으로 볼륨 공간을 효율적으로 최적화 및 유지한다고 한다.
- Optimization:
최적화 작업은 데이터의 중복된 값을 고유하게 만들어 스토리지를 절약하는 작업이다. 이 작업은 위에도 설명한 내용이다.
- Garbage Collection:
한국말로 하면 쓰레기 수거라고 해야 하나? 이름에 걸맞게 더 이상 참조하지 않아도 되는 불필요한 청크(수정되거나 삭제된 것들)를 제거하여 디스크 공간을 회수하는 작업이다.
- Scrubbing:
디스크 오류나 배드 섹터로 인하여 청크 저장소가 손상된 부분은 없는지 식별하고 복구하는 작업이다.
데이터 중복 제거의 효과
데이터 중복 제거로 과연 어느 정도로 Disk Space가 절약될지 궁금했다. 일단 AWS는 말하길 "평균 적으로 소프트웨어 개발 데이터 세트의 경우 70~80%, 일반적인 범용 파일은 50~60%, 문서는 30~50%"를 절약할 수 있다고는 광고했다.
필자의 경우, 한 회사의 NAS Volume을 데이터 중복 제거한 경험이 있으며, AWS가 광고하는 대로 약 60% 정도의 데이터가 절약이 되었다. 온갖 잡 데이터는 다 때려 박은 NAS이니 "일반적인 범용 파일"에 해당되겠다.
하지만 중복제거라고 능사는 아닌 듯하다. 중복 제거도 엄연히 작업이며, 작업이면 이것을 수행하는 리소스가 필요하다는 소리다. FSx에 그만큼 부담이 될 수 있다는 소리로 해석된다. 관련해서는 아래 링크를 참고해보면 좋을듯하다. [+] https://docs.aws.amazon.com/ko_kr/fsx/latest/WindowsGuide/data-dedup-ts.html
데이터 중복 제거의 호환성
중복 제거는 서버 OS 기능이다. 그러다 보니 일반 우리 같은 Client Windows OS가 이를 인식할 수 있을까 걱정했었다. 하지만 Client 컴퓨터도 데스크톰 OS으로 무리 없이 데이터를 읽어올 수 있다. 그러나 클라이언트는 액세스 하는 데이터에 중복 제거가 활성화되어 있는지 알 수는 없다.
중복 제거를 돌려보면 어느 정도의 파일 수와 사이즈와 어느 정도의 %로 중복제거가 수행되었는지 보여준다. 하지만 정확히 어떤 파일이 중복 제거된 파일인지는 알 수 없다. (적어도 내가 아는 한에서는 그렇다.)
실습
각설하고 바로 실습해보자. 중복 제거는 CLI를 통해서만 수행할 수 있다. 기본적으로 "Invoke-Command"를 이용해 원격 명령어를 실행하지만 나는 매번 긴 명령어로 FSx Powershell Enpoint 치고 하는 거 귀찮아서 아래와 같이 Powershell Remoting에 접속했다. "Enter-PSSession"을 사용하여 원격 콘솔에 로그인해 명령어를 실행하면 더 손쉽게 작업할 수 있다.
1. 아래 명령어로 데이터 중복 제거 활성화한다.
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {Enable-FsxDedup }
그냥 이 상태로라면 디폴트 구성대로 중복 제거 작업 스케줄이 잡혀버린다. 각 작업의 디폴트 스케줄은 다음과 같다. 마이크로소프트 가이드에는 35분으로 묘사되어 있는데 FSx는 약간 다른 듯 보인다. 실제로 M사의 중복 제거 명령어와 FSx Dedup 명령어에는 약간의 차이가 있긴 하다.
- Optimization: 1시간마다
- Garbage Collection: 매주 토요일 오전 2시 45분 (UTC기준)
- Scrubbing: 매주 토요일 오전 3시 45분 (UTC)
2. 디폴트 중복 제거 스케줄을 변경하고자 한다면...
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {
Set-FSxDedupSchedule -Name "CustomOptimization" -Type Optimization -Days Mon,Tues,Wed,Sat -Start 09:00 -DurationHours 9
}
3. 새로운 작업 스케줄을 생성하고자 한다면...
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {
New-FSxDedupSchedule -Name "CustomOptimization" -Type Optimization -Days Mon,Wed,Sat -Start 08:00 -DurationHours 7
}
4. 현재 정의된 데이터 중복 제거 일정을 검색하고자 한다면...
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {Get-FSxDedupSchedule }
6. 절약된 공간 크기를 보고자 한다면...
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FsxRemoteAdmin -ScriptBlock {
Get-FSxDedupStatus } | select OptimizedFilesCount,OptimizedFilesSize,SavedSpace,OptimizedFilesSavingsRate
- OptimizedFilesCount: 최적화 대상의 파일 수
- OptimizedFileSize: 최적화 대상의 파일 사이즈
- OptimizedFilesSavingRate: 압축률
7. 중복 제거를 비활성화하고자 한다면...
Invoke-Command -ComputerName amznfsxzzzzzzzz.corp.example.com -ConfigurationName FSxRemoteAdmin -ScriptBlock {Disable-FSxDedup }
약간의 착오가 있어 같은 내용의 포스팅이 하나 더 있다. 내용은 같지만 다른 부분도 있다.
[+] https://bosungtea9416.tistory.com/entry/AWS
'STUDY > AWS' 카테고리의 다른 글
[AWS] S3의 정확한 Total size 계산하기 (0) | 2022.08.23 |
---|---|
[AWS] FSx attach 오류 "The specified network password is not correct." 및 해결 (0) | 2022.08.18 |
[AWS] 모든 파일을 S3로 Copy하기 (--recursive, --exclude, --include 옵션 사용하기) (1) | 2022.08.01 |
[AWS] Athena로 CloudTrail 로그 분석 (0) | 2022.07.20 |
[AWS] EC2 Metadata 관련하여 (0) | 2022.06.28 |