목차
1. Storage 종류
- DAS
- NAS
- SAN
2. Storage 저장방식
- Block Storage
- Object Storage
3. VM 하드 추가
4. 사용하는 디스크 출력방법(3가지)
5. Partition
- fdisk
6. File System
- mkfs
7. Mount
- mount, umount
- Linux에서 디스크를 사용하려면 5, 6, 7 번 필수!
8. LVM
- PV
- VG
- LV
- LV까지 생성 후
- 새로운 디스크 추가
- 삭제 방법
Storage 종류
DAS(Direct Attach Storage)
- IDE, SCSI, SATA
- 원격지 설치 불가능, 물리적인 머신에 내장 혹은 최대 1m 정도를 넘지 않는 곳에 설치
- 물리적인 연결매체의 최대 유효거리를 넘지 못한다
- 안정적이며 속도가 빠르다(읽기, 쓰기 속도)
- 비용이 저렴하다
- 파일 시스템 공유는 불가능
-> 안정적이며, 빠르고 저렴한 것 때문에 많이 사용
NAS(Network Area Storage)
- 통상적으로 Network 환경내에 구성
- 속도는 100Mbps ~ 1Gbps
- 원격지 설치 가능
- NFS
- 저렴하며 구성이 쉽다
- 네트워크에 병목이 생기면 속도 저하 발생
- 사용자가 늘어나도 속도 저하 발생
- 파일 시스템 공유도 가능
공유폴더 vs 파일시스템
- 공유폴더는 대상 컴퓨터의 폴더에 들어가서 잠시 사용하는 것이지만,
파일 시스템은 운영체제가 파일을 시스템의 디스크상에 구성하는 방식(디스크 용량 차지)
SAN(Storage Area Network)
- Storage 환경내에 구성한 네트워크
- Fiber Channel(광 케이블)로 구성됨
- Storage용 전용 Switch, HBA(Server) 카드(매우 값비쌈)
- 속도는 통상 16Gbps
- 원격지 설치 가능
- 파일 시스템 공유도 가능
- 너어무 비싸다
Storage 저장 방식
Block Storage
- AWS EBS : Elastic Block Storage
- 실제 물리적으로 Block의 형태(Harddisk 생각)
- 실제 Machine에서 다른 Machine으로 물리적 이동 가능
- Cloud & Virtualization에서도 VM간 이동 가능
- Block 단위로 저장됨
- VMware Workstation에서의 Block storage
- 실제 Linux Machine과 동일하게 동작
sda1 분석
- sd : SCSI or SATA 디스크를 의미함
- (참고)HD : IDE 방식의 디스크 의미, 이제는 거의 찾아볼 수 없음
- a : 물리적으로 첫번째 디스크를 의미함
- 1 : 첫번째 파티션을 의미
- 물리적 디스크가 3개 있는 경우는, 파티션 작업 이전
- sda, sdb, sdc
- 첫번째 디스크를 3개로 파티션을 나눈 경우
- sda1, sda2, sda3
Object Storage
- AWS S3 : Simple Storage Service
- 개별 파일 형태로 저장
- 개별 파일마다 URL이 부여됨. 이를 Rest API라 부른다
- URL을 이용하여 파일을 이용(파일명이 아닌 URL을 이용함에 주의)
VM 하드디스크 추가
사용하는 디스크 출력방법
- lsblk를 주로 많이들 사용한다
Partition
- 물리적인 디스크를 논리적으로 분할
- 디스크를 사용하기 위해서는 반드시 1개 이상의 partition을 생성해야만 한다
fdisk
- 디스크 현황 및 파티션 현황 확인, 디스크의 파티션 관리
ex) fdisk 장치명
- n : 파티션 새로 만들기
- MBR(전통 방식)에서는 주파티션 4개가 최대(주파티션 중 하나를 확장 파티션)
- 즉, 주파티션 3개 확장파티션 1개(확장파티션 1개를 12개의 논리파티션으로 사용)
- GPT(최신 방식, win10이후 방식)에서는 주파티션 128개
- Partition number : default 값부터 주는 것을 추천
- First sector : default 값으로 넘어가자
- Last sector : 용량 지정
- p : 만든 것 확인
- w : 저장하고 나가기
- d : 파티션 삭제
File System
- 파일 및 디렉터리를 효율적으로 관리하기 위한 시스템
- Linux : xfs, ext4, ext3, ext2 (반대 방향으로 발전 / xfs가 최신)
- ext3, ext4 : journaling file system
- 저널링 : 파일을 삭제할 경우 log 기록을 생성 후 삭제, 해당 log로 파일 복원 가능
- ext3의 느린속도를 개선한 것이 ext4
- 하기전에 log를 남기다 보니 속도가 느림(체감은 x)
- Window : NTFS, FAT32, FAT13(NTFS가 최신)
mkfs(make file system)
ex) mkfs -t xfs 장치명 == mkfs.xfs 장치명(선호 방식)
mount
- Linux에서는 물리적인 장치를 사용하기 위해서는 반드시 디렉터리와 연결해야한다
- 디렉터리가 무조건 존재해 있는 디렉터리여야 한다
mount, umount
ex) mount 장치명 마운트포인터(디렉터리명)
umount 마운트포인터 or 장치명
- df -Th로 확인 가능하다
- T : type 확인 / h : 용량 확인
- test1 디렉터리를 마운트를 통해 /dev/sdb1을 바라보게 했기 때문에
마운트 전에 있던 test.txt와 a.txt가 보이지 않게 되는 것이다
- 반대로 언마운트를 통해 풀어주었기때문에, 마운트 상태에서 생성한 test1.txt가 보이지 않음
LVM
- Linux는 Mount라는 특수한 개념때문에 디스크 확장 작업의 난이도가 높다
이러한 약점을 극복하고자 디스크 상위에서 디스크를 관리하는 LVM이라는 논리적인 개념도입
여러 물리적인 디스크를 하나의 논리적인 디스크로 통합해서 사용이 가능
-> 즉, 예로 들면 PV가 5G씩 3개가 있으면 VG에 PV 2개를 넣으면 10G가로 만들어서
LV로 3G씩 3개로 사용 가능(얼마든지 다르게 LV로 찢을 수 있다)
- VG에 용량 추가도 가능(PV로)
- 명령어 일관성이 있어서 매우편하다
PV(Phsical Volume)
- pvcreate 장치명 : 생성
- pvscan(pvs) : 간단히 보기
- pvdisplay : 자세히 보기
- command t를 통해서 system ID 변경 가능
- 파티션 생성시 system ID를 꼭 Linux LVM (8e) 로 변경해야만 한다
- VG에 합류 전이므로 빈칸으로 되어있다
VG(Volume Group)
- 베이스 캠프(VG만 있으면 LV 얼마든지 만들 수 있음)
- vgcreate vg이름 pv이름 : vg에 pv 참여
- 다중으로 가능
- vgscan(vgs) : 간단히 보기
- vgdisplay : 자세히 보기
- Alloc PE, Free PE를 보기 위해 scan 보다 많이 사용
- vgextend vg이름 추가pv이름 : vg에 pv 추가
- 다중으로 가능
- vgremove vg이름 : vg 삭제
LV(Logical Volume)
- lvcreate -L 목표용량 -n lv이름 vg이름 : lv 생성(n은 맨처음 새로 만들 때 무조건 넣기)
- lvscan(lvs) : 간단히 보기
- lvdisplay : 자세히 보기
- lvremove /dev/vg이름/lv이름 : 삭제
- lvextend -L 용량(4G) /dev/vg이름/lv이름 : 최종 목표 용량 지정
- lvextend -L +용량(1G) /dev/vg이름/lv이름 : 기존 용량에 추가
LV까지 생성 후
- 여기까지 진행을 완료하게 되면, VG의 Free PE가 1G정도 남게 되는데
knlee1, 2, 3에 각각 1G씩 더 필요하다고 가정해보자
원래라면 언마운트 후 디스크 파티션 제거 후 다시 디스크를 추가하고
파티션 잡고 마운트하는 반복 작업이 필요하다
하지만, LVM은 VG에 새로운 PV(디스크)를 추가만 해주면 된다
새로운 디스크 추가
- ext4 적용 : resize2fs /dev/vg이름/lv이름
- xfs 적용 : xfs_growfs /dev/vg이름/lv이름
삭제 방법
- LVM 만들기 반대방향으로만 진행하면 문제 없다!
- 만드는 순서는 PV -> VG -> LV 순이지만, 지울 때는 반대!
- 만약, 이대로 진행이 안되거나 오류가 생기면 언마운트만 진행 후 디스크 파티션 삭제