10. 일상 운영 1: 볼륨 할당과 변경 관리
스토리지 운영의 70%를 차지하는 일상 업무. 볼륨 할당 워크플로우, 벤더별 프로비저닝 CLI, 볼륨 확장/삭제의 주의사항, 변경 관리 위험도 분류, 서비스 카탈로그까지. 실수 한 번이 데이터를 날리는 영역의 안전한 운영법.
- 11. 스토리지, 왜 어렵고 왜 중요한가
- 22. 스토리지 아키텍처 기초 — DAS / NAS / SAN / Object Storage
- 33. 병렬 파일 시스템과 분산 스토리지 — Lustre, GPFS, HDFS
- 44. 프로토콜 깊이 파기 — FC / iSCSI / NFS / SMB / S3
- 55. RAID와 데이터 보호 — 전통 RAID부터 이레이저 코딩까지
- 66. 도입 검토 — 요구사항 분석과 벤더 선정
- 77-1. 설계 — 인프라 편 (이중화, 플랫폼, Tier)
- 87-2. 설계 — 데이터 편 (LUN 배치, 스냅샷, DR)
- 98. 구축 — 초기 설정과 호스트 연결
- 109. 인수시험(SAT) — 장비를 내 것으로 만드는 과정
- 1110. 일상 운영 1: 볼륨 할당과 변경 관리
"스토리지팀이요? 볼륨 하나만 만들어 주세요. 500GB요. 급해요."
스토리지 운영의 70%는 이거다. 서버팀, DBA팀, 개발팀에서 볼륨을 달라고 한다. 확장해 달라고 한다. 삭제해 달라고 한다. 호스트 바꿨으니 재연결해 달라고 한다. 매일 들어오는 이 요청들을 빠르게, 정확하게, 안전하게 처리하는 게 스토리지 담당자의 일상이다.
단순해 보이지만 실수 한 번이면 데이터가 날아갈 수 있다. 잘못된 호스트에 LUN을 매핑하면 기존 데이터가 덮어쓰여진다. 볼륨을 삭제했는데 아직 쓰고 있던 거였으면 복구가 안 된다. 그래서 절차와 체크리스트가 중요하다.
볼륨 할당 요청 — 전체 워크플로우
요청이 들어오면 어떤 순서로 처리하는지 흐름을 보자.
볼륨 할당 워크플로우:
요청자 (서버팀/DBA) 스토리지팀
────────────────── ──────────
① 요청 접수
ITSM 티켓 생성 ─────────► 티켓 확인
(ServiceNow, Jira 등) │
▼
② 요청 검토 용도/용량/프로토콜 확인
용량 여유 확인
네이밍 규칙에 따라 이름 결정
│
▼
③ 승인 변경 위험도에 따라
· Low → 팀 내 승인
· Medium → 팀장 승인
│
▼
④ 프로비저닝 스토리지에서 볼륨 생성
LUN Masking / Export 설정
│
▼
⑤ 호스트 연결 Zoning 추가 (FC)
또는 이니시에이터 등록 (iSCSI)
또는 Export Policy 설정 (NFS)
│
▼
⑥ 검증 요청자 측 마운트 확인
마운트 확인 ◄──────────── IO 테스트 확인
"잘 되네요" ──────────────► │
▼
⑦ 완료 볼륨 할당 대장 업데이트
ITSM 티켓 종료이 프로세스를 건너뛰고 "그냥 빨리 만들어 줘"라는 요청에 응하면, 나중에 "이 볼륨 누가 쓰는 거지?" "왜 만들었지?"를 추적할 수 없게 된다. 급하더라도 최소한 티켓은 남겨야 한다.
프로세스를 안 지키면 벌어지는 일:
┌──────────────────────────────────────────────────────┐
│ "티켓 없이 구두로 요청받고 만들어줌" │
│ → 6개월 뒤 이 볼륨의 용도를 아무도 모름 │
│ → 삭제해도 되는지 판단 불가 → 고아 볼륨으로 용량 낭비 │
│ │
│ "요청서에 호스트 WWPN을 안 받고 대충 매핑" │
│ → 다른 서버의 WWPN에 매핑 → 그 서버가 mkfs 실행 │
│ → 기존 데이터 날아감. 복구 불가. │
│ │
│ "용량 여유 확인 안 하고 프로비저닝" │
│ → 씬 프로비저닝 환경에서 물리 용량 초과 상태에서 할당 │
│ → 실제 쓰기 시 다른 볼륨까지 오프라인. 서비스 장애. │
│ │
│ "검증 단계 건너뛰고 '만들었습니다' 회신" │
│ → 서버에서 마운트 안 됨 (Zoning 누락, OS Type 오류) │
│ → 서버팀 "안 되는데요?" → 다시 처음부터. 시간 낭비. │
└──────────────────────────────────────────────────────┘요청서에 반드시 있어야 할 정보
"500GB 만들어 주세요"만으로는 부족하다. 이 정보가 빠지면 나중에 다시 물어봐야 하고, 잘못 만들면 다시 해야 한다.
┌──────────────────────────────────────────────────────────┐
│ 볼륨 할당 요청서 필수 항목 │
├────────────────┬─────────────────────────────────────────┤
│ 용도 │ 어떤 서비스/애플리케이션에 사용하는지 │
│ │ (예: ERP DB 데이터, 웹서버 로그) │
├────────────────┼─────────────────────────────────────────┤
│ 용량 │ 초기 할당 용량 + 예상 월간 증가율 │
├────────────────┼─────────────────────────────────────────┤
│ 성능 등급 │ Gold/Silver/Bronze (서비스 카탈로그 기준) │
│ (Tier) │ 또는 필요 IOPS/Latency 수치 │
├────────────────┼─────────────────────────────────────────┤
│ 프로토콜 │ FC / iSCSI / NFS / SMB │
├────────────────┼─────────────────────────────────────────┤
│ 호스트 정보 │ 호스트명, OS 종류/버전 │
│ │ FC: WWPN / iSCSI: IQN / NFS: IP │
├────────────────┼─────────────────────────────────────────┤
│ 마운트 포인트 │ /data/erp, /backup/weekly 등 │
├────────────────┼─────────────────────────────────────────┤
│ 스냅샷 정책 │ 필요 여부, 주기, 보관 기간 │
├────────────────┼─────────────────────────────────────────┤
│ 백업 정책 │ 백업 대상 여부, 백업 윈도우 │
├────────────────┼─────────────────────────────────────────┤
│ 서비스 중요도 │ 미션 크리티컬 / 일반 / 개발·테스트 │
├────────────────┼─────────────────────────────────────────┤
│ 요청자/승인자 │ 누가 요청했고 누가 승인했는지 │
└────────────────┴─────────────────────────────────────────┘볼륨 프로비저닝 — 벤더별 차이
같은 "볼륨 만들기"라도 벤더마다 구조와 CLI가 다르다. 이 차이를 모르면 벤더가 바뀔 때 당황한다.
벤더별 볼륨 생성 구조 비교:
[NetApp ONTAP]
┌───────────────────────────────────────────┐
│ Cluster │
│ └─ SVM (Storage Virtual Machine) │
│ └─ Volume │
│ └─ LUN (블록) 또는 │
│ NFS Export (파일) │
│ │
│ 계층이 깊다. SVM이라는 가상 서버 개념이 │
│ 있어서 멀티테넌시에 강하지만, 초기 학습 │
│ 곡선이 높다. Volume과 LUN이 분리되어 │
│ 있어서 LUN 크기를 Volume보다 크게 만드는 │
│ 실수를 할 수 있다. │
└───────────────────────────────────────────┘
[Dell PowerStore]
┌───────────────────────────────────────────┐
│ Appliance │
│ └─ Volume (블록) 또는 │
│ NAS Server → File System (파일) │
│ │
│ ONTAP보다 단순하다. 볼륨을 바로 만들고 │
│ 호스트에 매핑하면 된다. 단, NAS 기능은 │
│ 별도 NAS Server를 먼저 생성해야 해서 │
│ NAS 위주 환경에서는 한 단계 더 있다. │
└───────────────────────────────────────────┘
[Pure Storage FlashArray]
┌───────────────────────────────────────────┐
│ Array │
│ └─ Volume ──── Host/Host Group에 연결 │
│ │
│ 가장 단순하다. 볼륨 만들고 호스트에 연결 │
│ 하면 끝. RAID 레벨, 애그리게이트 같은 │
│ 하위 개념을 숨긴다. 단순함이 장점이지만, │
│ 세밀한 배치 제어(특정 디스크 그룹에 볼륨을 │
│ 고정하는 등)는 불가능하다. │
└───────────────────────────────────────────┘프로비저닝에서 자주 하는 실수:
┌──────────────────────────────────────────────────────────┐
│ NetApp 실수: LUN 크기 > Volume 크기 │
│ Volume이 1TB인데 LUN을 1TB로 만들면? │
│ → Volume 안에 메타데이터 공간이 필요해서 LUN이 꽉 차면 │
│ Volume이 먼저 가득 찬다. 쓰기 실패. │
│ → LUN은 Volume의 90% 이하로 만드는 게 안전. │
│ │
│ NetApp 실수: SVM을 잘못 선택 │
│ 운영용 SVM에 개발 볼륨을 만들어버리면? │
│ → 나중에 QoS 정책이 다 섞이고, Export Policy도 꼬인다.│
│ → 볼륨 이동(vol move)으로 수정 가능하지만 번거롭다. │
│ │
│ 공통 실수: OS Type 잘못 설정 │
│ Linux 호스트인데 Windows로 설정하면? │
│ → LUN이 보이긴 하지만 사이즈가 다르게 보이거나, │
│ ALUA가 오동작해서 성능이 떨어진다. │
│ → 만든 뒤에 OS Type을 바꾸려면 LUN을 지우고 │
│ 다시 만들어야 하는 벤더도 있다. │
│ │
│ 공통 실수: 씬 프로비저닝 물리 용량 미확인 │
│ 논리 용량만 보고 "아직 여유 있네" 하고 계속 만들면 │
│ 물리 공간이 바닥나서 기존 볼륨까지 오프라인된다. │
│ → 프로비저닝 전에 물리 사용률을 반드시 확인. │
└──────────────────────────────────────────────────────────┘볼륨 확장 — 스토리지 측 + 호스트 측 둘 다 해야 한다
"볼륨 늘려 주세요"는 가장 흔한 요청이다. 스토리지에서 볼륨 크기만 늘리면 끝이 아니다. 호스트에서도 인식시켜야 한다.
볼륨 확장 절차 (블록/LUN 기준):
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1. 스토리지 │───►│ 2. 호스트 │───►│ 3. 파일 │
│ LUN 확장 │ │ 디스크 │ │ 시스템 │
│ │ │ 리스캔 │ │ 확장 │
└──────────────┘ └──────────────┘ └──────────────┘
Step 1: 스토리지 측 LUN 확장
(벤더 CLI/GUI에서 크기 변경)
Step 2: 호스트에서 디스크 크기 인식
$ echo 1 > /sys/block/sda/device/rescan # 단일 디스크
$ multipathd resize map <mpath_name> # 멀티패스
Step 3: 파일시스템 확장
$ xfs_growfs /data/erp # XFS (마운트 상태에서)
$ resize2fs /dev/mapper/mpath0 # ext4
LVM을 쓰고 있다면:
$ pvresize /dev/mapper/mpath0 # PV 확장
$ lvextend -l +100%FREE /dev/vg01/lv_data # LV 확장
$ xfs_growfs /data/erp # FS 확장
주의사항:
┌─────────────────────────────────────────────────────┐
│ · Step 2를 빼먹으면 호스트가 옛날 크기로 인식한다. │
│ "확장했는데 안 늘었어요"의 원인 90%가 이거다. │
│ │
│ · XFS는 축소가 불가능하다. 한번 늘리면 줄일 수 없다.│
│ "500GB인데 200GB로 줄여주세요" → XFS면 불가. │
│ 새 볼륨 만들고 데이터 이전해야 한다. │
│ │
│ · 씬 프로비저닝 환경에서 논리 크기만 늘리면 물리 │
│ 용량은 안 늘어난다. 실제 쓰기 시점에 물리 공간이 │
│ 할당되므로, 전체 물리 용량 여유를 반드시 확인. │
└─────────────────────────────────────────────────────┘볼륨 삭제 — 가장 위험한 작업
볼륨을 만드는 건 쉽다. 삭제는 어렵다. 삭제는 되돌릴 수 없기 때문이다.
볼륨 삭제 안전 절차:
"삭제해 주세요" 요청 접수
│
▼
① 요청자 재확인
"정말 삭제해도 되는 볼륨이 맞나요?"
→ 볼륨명, 마운트 포인트, 서비스명 교차 확인
│
▼
② 현재 사용 여부 확인
· 호스트에서 마운트 해제되었는지
· IO가 발생하고 있지 않은지 (스토리지 모니터링)
· 최근 7일간 IO 히스토리 확인
│
▼
③ 스냅샷/백업 확인
· 삭제 전 최종 스냅샷 생성
· 또는 삭제 대기 기간 설정 (7~30일 후 최종 삭제)
│
▼
④ 삭제 실행
· 즉시 삭제 대신 "오프라인" 처리 후 대기
· 대기 기간 경과 후 최종 삭제
│
▼
⑤ 문서 업데이트
· 볼륨 할당 대장에서 삭제 기록
· Zoning/LUN Masking 정리
리스크:
┌─────────────────────────────────────────────────────┐
│ · 잘못된 볼륨을 삭제하면 데이터 복구가 불가능하다. │
│ 스냅샷이 있어도 볼륨 자체를 삭제하면 스냅샷도 │
│ 같이 사라지는 벤더가 있다. │
│ │
│ · "오프라인 후 대기" 방식을 권장하는 이유: │
│ 삭제 후 "사실 아직 쓰고 있었어요"가 올 수 있다. │
│ 대기 기간이 보험이다. │
│ │
│ · 실수 방지 팁: 삭제 CLI 실행 전에 "읽기 전용"으로 │
│ 변경해서 IO 에러가 발생하는지 확인. 에러가 나면 │
│ 아직 쓰고 있다는 뜻이다. │
└─────────────────────────────────────────────────────┘변경 관리 — 위험도에 따라 프로세스가 다르다
스토리지 변경 작업은 위험도에 따라 다르게 관리해야 한다. 볼륨 하나 만드는 것과 펌웨어 업그레이드를 같은 프로세스로 관리하면 안 된다.
스토리지 변경 작업 위험도 분류:
┌─────────┬─────────────────────────┬──────────────────┐
│ 위험도 │ 작업 예시 │ 승인/절차 │
├─────────┼─────────────────────────┼──────────────────┤
│ Low │ · 볼륨 신규 생성 │ 팀 내 승인 │
│ │ · 모니터링 임계치 변경 │ 작업 기록만 │
│ │ · 스냅샷 정책 추가 │ │
├─────────┼─────────────────────────┼──────────────────┤
│ Medium │ · 볼륨 확장 │ 팀장 승인 │
│ │ · QoS 정책 변경 │ 작업 전후 │
│ │ · Zoning 추가/변경 │ 체크리스트 필수 │
│ │ · 스냅샷 정책 변경 │ │
├─────────┼─────────────────────────┼──────────────────┤
│ High │ · 펌웨어 업그레이드 │ CAB 승인 필요 │
│ │ · 컨트롤러 페일오버 작업 │ 야간/주말 작업 │
│ │ · DR 복제 방향 전환 │ 롤백 계획 필수 │
│ │ · 볼륨 삭제 (프로덕션) │ 서비스팀 공지 │
├─────────┼─────────────────────────┼──────────────────┤
│Emergency│ · 장애 복구 │ 사후 승인 가능 │
│ │ · 긴급 용량 확보 │ 즉시 실행 후 │
│ │ · 장애 볼륨 오프라인 │ 사후 보고 │
└─────────┴─────────────────────────┴──────────────────┘
변경 요청서(RFC)에 반드시 포함할 것:
┌──────────────────────────────────────────────┐
│ · 작업 내용 (무엇을, 어디에) │
│ · 영향 범위 (어떤 서비스/서버에 영향) │
│ · 작업 윈도우 (언제, 얼마나 걸리는지) │
│ · 롤백 계획 (실패 시 어떻게 원복하는지) │
│ · 작업 전 체크리스트 │
│ · 작업 후 확인 항목 │
└──────────────────────────────────────────────┘롤백 계획이 없는 변경은 하면 안 된다. "잘 되겠지"는 계획이 아니다. 특히 High 위험도 작업에서는 "이 작업이 실패하면 어떻게 원래 상태로 돌리는가"를 문서로 남겨야 한다. 롤백 방법이 없는 작업(예: 펌웨어 다운그레이드 불가)이라면, 그 사실 자체가 리스크이므로 승인권자에게 반드시 고지해야 한다.
Zoning / LUN Masking 변경 — 실수의 대가가 크다
새 서버를 스토리지에 연결하거나, 기존 서버의 HBA를 교체할 때 Zoning과 LUN Masking을 변경한다. 이 작업의 실수는 데이터 유실로 직결될 수 있다.
실수로 잘못된 호스트에 LUN을 매핑하면:
[정상 상태]
서버A (ERP DB) ←── LUN 001 (ERP 데이터)
서버B (새 서버) 매핑 없음
[실수: 서버B에도 LUN 001을 매핑]
서버A (ERP DB) ←── LUN 001 ──► 서버B (새 서버)
서버B가 이 LUN을 인식하고,
"초기화 안 된 디스크네" 하고 mkfs를 실행하면?
→ ERP 데이터 전체가 날아간다.
방지책:
┌─────────────────────────────────────────────────────┐
│ · LUN Masking을 Host Group 단위로 관리. 개별 호스트 │
│ 단위로 매핑하면 실수 확률이 높아진다. │
│ │
│ · Zoning 변경 시 반드시 "변경 전 상태"를 백업. │
│ FC Switch의 zoneshow 결과를 저장해둔다. │
│ │
│ · LUN을 매핑한 후, 서버 측에서 "이 디스크에 이미 │
│ 데이터가 있는지" 확인 후 포맷한다. 절대 무조건 │
│ mkfs부터 하지 않는다. │
│ │
│ · 가능하면 LUN에 Read-Only 속성을 먼저 매핑하고, │
│ 확인 후 Read-Write로 변경하는 습관. │
└─────────────────────────────────────────────────────┘스토리지 서비스 카탈로그
요청이 올 때마다 "이 서비스에는 어떤 등급을 줘야 하지?"를 고민하면 시간이 걸린다. 서비스 카탈로그를 미리 정의해두면 요청자도 스토리지팀도 편해진다.
┌──────────────────────────────────────────────────────────┐
│ 스토리지 서비스 카탈로그 예시 │
├────────┬──────────┬──────────┬───────────┬───────────────┤
│ 등급 │ 성능목표 │ 스냅샷 │ DR 복제 │ 대상 워크로드 │
├────────┼──────────┼──────────┼───────────┼───────────────┤
│ Gold │ <1ms │ 매시간 │ 동기 복제 │ 미션 크리티컬 │
│ │ 올플래시 │ + 일일 │ │ DB │
├────────┼──────────┼──────────┼───────────┼───────────────┤
│ Silver │ <5ms │ 4시간 │ 비동기 │ 일반 앱서버 │
│ │ 올플래시 │ + 일일 │ (15분 RPO)│ 가상화 │
├────────┼──────────┼──────────┼───────────┼───────────────┤
│ Bronze │ <10ms │ 일일 │ 없음 │ 개발/테스트 │
│ │ QLC/하이 │ │ (백업만) │ 파일 서버 │
│ │ 브리드 │ │ │ │
└────────┴──────────┴──────────┴───────────┴───────────────┘
장점: 요청자가 "Gold 등급 500GB" 하나만 말하면 됨.
스토리지팀도 기준이 명확해서 판단이 빠름.
단점: 서비스 카탈로그를 만들고 유지하는 데 초기 공수가 든다.
워크로드가 등급에 딱 안 맞는 경우가 있어서 예외 처리가
필요하다. 등급이 너무 많으면 복잡해지고, 너무 적으면
세밀한 제어가 안 된다. 3~4개가 적당하다.셀프서비스 포털을 도입하면 더 나아진다. 요청자가 웹 화면에서 "등급 선택 → 용량 입력 → 승인 → 자동 프로비저닝"까지 되는 구조다. vRealize Automation이나 ServiceNow + 스토리지 API 연동으로 구현할 수 있다.
다만 셀프서비스의 리스크도 있다. 편하면 남용하게 된다.
셀프서비스 도입 시 반드시 같이 만들어야 할 것:
┌──────────────────────────────────────────────────────┐
│ 1. 팀/프로젝트별 Quota (용량 상한) │
│ 없으면 "공짜니까" 무한정 만든다. │
│ "100TB 할당 가능" → 3개월 뒤 100TB 풀 소진. │
│ → 팀당 월 5TB 상한 같은 제한이 필요하다. │
│ │
│ 2. 미사용 볼륨 자동 감지 │
│ 30일 이상 IO가 0인 볼륨을 주기적으로 리스트업. │
│ 요청자에게 "아직 쓰시나요?" 확인 후 정리. │
│ 이걸 안 하면 고아 볼륨이 전체 용량의 10~20%를 │
│ 먹고 있는 경우가 실제로 있다. │
│ │
│ 3. 승인 프로세스 (최소한의) │
│ Bronze 등급은 자동 승인이어도 되지만, │
│ Gold 등급(동기 복제 포함)은 스토리지팀 승인 필수. │
│ Gold를 무제한 셀프서비스로 풀면 DR 대역폭이 │
│ 감당 안 될 수 있다. │
│ │
│ 4. 비용 차지백 (Chargeback) │
│ 사용량에 비례한 비용을 부서에 배분하면 │
│ "공짜니까 많이 만들어두자"가 줄어든다. │
│ 단점: 차지백 시스템 구축/운영에 공수가 든다. │
└──────────────────────────────────────────────────────┘다음 편에서는 운영의 나머지 절반 — 모니터링, 성능 튜닝, 용량 관리를 다룬다. 스토리지가 "지금 괜찮은지"를 어떻게 판단하고, 문제가 생기기 전에 어떻게 감지하는지.
이 글이 어떠셨나요?
관련 포스트
8. 구축 — 초기 설정과 호스트 연결
물리 설치 체크리스트, 초기 설정 8단계의 이유와 주의사항, FC/iSCSI/NFS 각각의 호스트 연결 절차와 트러블슈팅, 벤더별 multipath 차이, fio 결과 해석법, As-Built 문서화까지. 설계를 현실로 바꾸는 구축 실무.
2026. 05. 25. PM 10:00Infrastructure9. 인수시험(SAT) — 장비를 내 것으로 만드는 과정
스토리지 인수시험(SAT)의 전체 절차. 하드웨어/라이선스 검증, 스냅샷 복원 테스트, 컨트롤러 페일오버 IO 중단 시간 판정 기준(30초 근거), 경로/전원/디스크 장애 시뮬레이션, fio 레이턴시 프로파일 해석법, 벤더 스펙 대비 실측 비교 방법, 성능 저하 시 5단계 원인 추적, 인수 결과 문서와 조건부 합격의 실무적 의미, 초기 안정화 기간 활용법까지.
2026. 06. 01. PM 10:00Infrastructure7-2. 설계 — 데이터 편 (LUN 배치, 스냅샷, DR)
스토리지 설계의 데이터 편. LUN 분리 장단점, 네이밍 컨벤션, 스냅샷 동작 원리와 리스크, DR 동기/비동기 복제 트레이드오프, Active-Active 메트로 클러스터의 Split-Brain 리스크까지. 인프라 위에 데이터를 배치하고 보호하는 설계의 후반부.
2026. 05. 18. PM 10:00뉴스레터 구독
새 글이 올라오면 이메일로 알려드려요.