[Linux] Linux 디스크 관리(1) Storage 종류 & 저장 방식 | Block Storage | LVM
(1)Storage 종류
(2)Storage 저장 방식
(3) VMware Workstaion에서의 Block Storage
(4) 디스크 사용방법 및 설치
(5) LVM(Logical Volume Manager)
1. Storage 종류
1. DAS(Direct Attach Storage)
- IDE, SCSI, SATA
- 원격지 설치 불가능, 물리적인 Machine 내장 혹은 최대 1M정도를 넘지 않는 곳에 설치
- 물리적인 연결매체의 최대 유효거리를 넘지 못한다(단점)
- 파일 시스템 공유가 불가능(단점)
- 안정적이며 속도가 빠르다(장점)
- 비용이 저렴하다(장점)
2. NAS(Network Area Storage)
- 통상적으로 Network 환경내에 구성
- 속도는 10Mbps~Gbps
- 원격지 설치 가능
- NFS
- 저럼하며 구성이 쉽다(장점)
- 네트워크에 병목이 생기면 속도 저하 발생(단점)
- 사용자가 늘어나도 속도 저하 발생(단점)
- 파일시스템 공유 가능(장점)
3. SAN(Storage Area Network)
- Storage 환경내에 구성한 네트워크
- Fiver Channel 구성됨
- Storage용 전용 Switch와 HBA(Server) 카드
- 속도는 통상 16Gbps
- 원격지 설치 가능, 파일시스템 공유 가능(장점)
- 너무 비싸다(단점)
2. Storage 저장 방식
1. Block Storage (AWS EBS : Elactic Block Storage)
- 실제 물리적으로 Block 형태(Harddisk 생각하세요)
- 실제 Machine에서 다른 Machine으로 물리적 이동 가능
- Cloud & Virtualization에서도 VM간 이동 가능
- Block 단위로 저장됨
2. Object Storage (AWS S3 : Simple Storage Service)
- 개별 파일 형태로 저장
- 개별 파일마다 URL이 부여됨. 이를 Rest API라 부른다
- URL을 이용하여 파일을 이용(파일명이 아닌 URL을 이용함에 주의)
3. VMware Workstaion에서의 Block Storage
1. 실제 Linux Machine과 동일하게 동작
2. SDA 분석
- SD : scsi or sata 디스크를 의미함
*참고: HD : IDE 방식의 디스크 의미, 이제는 거의 찾아볼 수 없음
- A : 물리적으로 첫번째디스크를 의미함
- 1 : 첫번째 파티션을 의미
3. 물리적으로 디스크가 3개 있는 경우는. 파티션 작업 이전
- SDA, SDB, SDC
4. 첫번째 디스크를 3개로 파티션을 나눈 경우
- SDA1, SDA2, SDA3
4. Linux에서 디스크를 사용하기
0. Partition -> File System -> 드라이브명 할당 (윈도우)
1. Partition -> File System -> Mount
- Partition : 물리적인 디스크를 논리적으로 분할
* 디스크를 사용하기 위해서는 반드시 1개 이상의 Partition을 생성해야만 한ㄴ다
- File System : 파일 및 디렉토리를 효율적으로 관리하기 위한 시스템
* 리눅스 : xfs, ext4, ext3, ext2 (최신순으로)
* ext3-4 : journaling (저널링 : 파일을 삭제할 경우 log 기록을 생성 후 삭제
해당 log로 파일 복원 가능)
* ext3의 느린 속도를 개선한 것이 ext4
* 윈도우 : NTFS, FAT32, FAT13
- mount : Linux에서는 물리적인 장치를 사용하기 위해서는 반드시 디렉토리와 연결해야 한다
이를 마운트라고 한다.
* umount : mount를 해제하는 명령어
2. 파티션 분할 실습 하기
1. Work Station 환경에서 Hard disk 추가하기
2-1. [lsblk] 명령어로 디스크 설치 확인
2-2. [fdisk -l] 명령어로 디스크 설치 확인
2-3. [cat /proc/partitionas] 명령어로 파티션 확인 가능
* 윈도우에서 파티션 확인
3. [fdisk /dev/sdb] 명령어로 디스크 파티션을 할당
4. 옵션 m을 사용해 명령어 확인 가능
5. n옵션을 사용해 새로운 파티션 생성
6. p옵션으로 성공적인 파티션 생성 확인
7. w옵션으로 파티션 생성 저장 후 나가기
8. /dev/sdc 디스크도 sdb 디스크와 동일하게 파티션 진행
9. 생성한 파티션 확인
10. 디스크 사용을 위해 파일 시스템으로 변환
- [mkfs -t /dev/디스크명]
- [mkfs.etx4 /dev/디스크명]
11. [blkid] 명령어로 파일시스템 확인
12. 장치 사용을 위해 디렉토리랑 연결(mount)
* 기존 폴더 안에 파일이 있더라도 디스크로 마운트 한 후에는 디스크 내용물 출력
13. 하나의 디스크를 2개로 파티셔닝
14. 위의 10.번과 동일하게 파일시스템을 생성과 마운트를 진행 후 확인
15. 파티션 제거를 위해서는 umount 후 fdisk의 d 옵션으로 제거
* 반드시 파티션 내부에서 나와서 루트 홈디렉토리에서 진행해야함
16. [lsblk] 명령어로 파티션 제거 확인
5. LVM(Logical Volume Manager)
- Linux는 Mount라는 특수한 개념때문에 디스크 확장 작업
이런 약점을 극복하고자 디스크 상위에서 디스크를 관리하는 LVM이라는 논리적인 개념을 도입
여러 물리적인 디스크를 하나의 논리적인 디스크로 통합해서 사용이 가능하다.
- 파티션 생성 시 반드시 Linux LVM (8e) System ID 변경할 것 (t 옵션을 사용하여 8e로 변경)
<pv명령어>
[pvcreate 장치명]
[pvscan]
[pvdisplay]
[pvremove 장치명]
<vg명령여>
[vgcreate vg이름 pv명1 pv명2 ...]
[vgextend 기존vg이름 추가할pv명1 추가할pv명2 ... ]
[vgscan]
[vgdisplay]
[vgremove vg이름]
<lv명령어>
[lvcreate -L 목표용량 -n lv명 vg명]
[lvremove lv명 /dev/vg명/lv명]
[lvextend -L +추가할용량 lv명]
[ -L 목표용량 lv명]
<용량 확장 후 적용>
[resize2fs /dev/vg명/lv명] : ext 타입의 파일시스템에 사용
[xfs_growfs /dev/vg명/lv명] : xfs 타입의 파일시스템에 사용
<LVM 생성 실습 해보기>
1. sdb를 파티셔닝
2. t옵션을 사용해 /dev/sdb1을 LVM 시스템아이디로 변경 (확인 후 w로 저장)
3. [lsblk] 명령어로 파티션 생성 확인
4. [pvcreate] 명령어로 pv(Physical volume) 생성
5. pv가 제대로 생성 되었는지 확인
6. [vgcreate] 명령어로 vg(Volume group) 생성 후 확인
7. [lvcreate] 명령어로 개별 파티션 생성 후 확인
8. 파티션 사용을 위해 파일시스템 생성. (2개는 ext4타입, 1개는 xfs 타입)
9. [blkid] 명령어로 생성한 파일시스템 확인
10. 파티션 사용을 위해 mount 후 확인
<LVM 용량 확장 실습>
- 디스크의 용량이 가득 찼을 때 1GB 씩 추가하고자 하지만 현재 vg에 남은 용량이 없으면 다른 disk를 vg에 넣어 용량을 추가해줍니다.
1. [vgdisplay] 명령어를 이용해서 vg에 남아있는 용량 확인
2. [lsblk] 명령어를 사용해서 여유있는 disk 확인
3. sdc 디스크를 LVM으로 생성
4. [pvcreate] 명령어로 pv 생성 후 [pvscan] 명령어로 확인
5. [pvextend] 명령어를 사용해 jwoh vg에 sdc1을 추가
6. [vgdisplay] 명령어를 사용해 추가된 VG 용량 확인
7. [lvextend] 명령어를 사용해 기존 파티션에 용량 추가 후 확인
8. df -Th 명령어로 확인
9. [resize2fs] 명령어와 [xfs_growfs] 명령어를 통해 파일 확장을 적용시키기
10. [df -Th] 명령어를 사용해 적용 확인하기
<LVM 제거 실습>
- LVM 생성 과정을 거꾸로 진행
1. 마운트 해제
2. [lvremove] 명령어를 사용해 lv 제거 후 확인
3. vg로 넘어간 lv의 용량 확인
4. [vgremove] 명령어를 사용해 lv 삭제 후 확인
5. [pvscan] 명령어로 pv 확인
6. [pvremove] 명령어를 사용해 /dev/sdb1, /dev/sdc1 삭제 후 확인
7. [fdisk] 명령어를 사용해 파티션 제거
8. [lsblk] 명령어로 파티션 제거 확인