티스토리 뷰

Linux

[Rhel/CentOS] 7. 스토리지(Storage)

5_Clock 2021. 12. 13. 16:54
반응형

/dev: 물리적 장치에 연결하기 위한 인터페이스

/proc + /sys: 현재는 proc sys 분리

    - proc:  프로세스 상태정보를 가지고 있음(RO)

    - sys: 커널 모듈과 관련되어있는 디렉터리()

        * lsmod, modprobe, insmod

 

FS H/P: CFS(x), RHEL 7(8 최적)(미만은 비권장)

 

(/proc/mounts == mount) 명령어 같음

 

/sys/block/vd*/queue

- 예상했던 속도나 퍼포먼스가 안나올때 여기를 본다.

- BFQ(BFS: Brain Fuck Scheduler 영향을 받음)

- mq-deadline: 최대한 결과를 빠르게 도출하는게 목적

 

만약 서버가 4cores(0~3) 있다면,

  • Linux Kernel 2.6, 3.2 미만으로는, I/O 0,1번만 사용함
  • 리눅스는 멀티프로세싱이 주목적
  • 유닉스는 싱글프로세싱이 주목적

 

/dev/vd*: 스토리지 디바이스

    - virtio-scsi: vda-> sda으로 변환 하지만, 반가상화 기능 지원

      * vmware

 

/dev/sd*: SAS, SSD, M.2

 

M.2: /dev/nvme

/dev/dm, dm-mpath: SAN스토리지 연결시 많이 보이는 장치.

                    멀티패스가 구성되면 mpath라는 이름으로 많이 보임

 

블록장치 식별, 마운팅, 해제

 

 

# lsblk
# mount /dev/vdb1 /mnt/data 
  		<FROM>  <TO>

 

해당 명령어를 통해 지정된 블록 장치 또는 모든 장치의 세부 정보를 나열할  있다.

또한 mount명령어를 통해 해당 디렉토리에 마운트   있다. 기본적으로 <TO> 해당하는 경로는 생성이 되어있어야한다.

 

 

VFS: 알아서 F/S타입 확인  연결, 하지만 커널 영역에서 동작하기 때문에 느림.

Fuse: 유저 영역에서 다시 드라이버 재구성하여  높은 속도  메모리 기능 제공.

    - ntfs, hpfs, ufs, xfs, btrfs

    - CPU하고 메모리를 많이 사용함.

 

UUID: Superblock 저장이 되어 있음. 모든 파일 시스템은 S/B 엄청 중요함

 

# lsblk -fp // 해당 파티션에  UUID확인
# mount UUID=UUID /mnt/data

 

다음과 같이 UUID 이용해서도 mount 가능하다.

 

해제는 

 

# unmount /mnt/data

 

 같이 간단하게   있다. 하지만 unmount 정상적으로 작동하려면 모든 프로세스에서 마운트 지점의 데이터에 대한 엑세스를 중단해야 한다.

 

따라서

 

# lsof /mnt/data

 

 같이 마운트 해제가 불가능한지 알아봐야 한다.

 

파티션, 파일 시스템, 영속 마운트 추가

 

Disk Partitioning

  1. 애플리케이션 또는 사용자가 사용할  있는 공간 제한
  2. 사용자 파일에서 운영체제와 프로그램 파일을 구분
  3. 메모리 스왑을 위해 별도 영역 생성
  4. 디스크 공간 사용을 제한해 진단 도구  백업 이미징의 성능 향상

 

**MBR(Master Boot Record) 파티션 스키마

: 파티션 테이블 스키마에 따라 파티션 작업을 한 기억 장치에는 MBR의 파티션 테이블 안에 프라이머리 파티션 엔트리들이 있다.

 

**GPT(GUID Partition Table) 파티션 테이블

: 물리적인 하드 디스크에 대한 파티션 테이블 레이아웃 표준

 

2020년 이후 나온 메인보드를 쓰는 경우에는 GPT를 써야한다.

 

# parted /dev/vda print // 하위 명령어 print: 디스크의 파티션 테이블 표시
# parted /dev/vda // 대화형 세션

# parted /dev/vdb mklabel msdos  // MBR 디스크 레이블

# parted /dev/vdb mklabel gpt // GPT 디스크 레이블

# parted /dev/vdb mkpart
…
Partition type? primary/extended? primary  // 주파티션
File system type?  [ext2]? xfs // 파일시스템 유형
Start? 2048s
End? 1000MB
…

# udevadm settle  // 시스템이 새 파티션을 감지하고 /dev관련 장치 파일을 생성할 때까지 기다린다.

 

다음과 같이 parted 대화형 명령어로 처리할 수도 있고

 

# parted /dev/vdb mkpart primary xfs 2048s 1000MB

 

 같이 한번에 해결도 가능하다.

 

삭제는 

 

# parted /dev/vdb print  // 파티션의 Number를 확인한다.
…
Number …
  1   …
(parted) rm 1
(parted) quit

 

 

파일 시스템 

**xfs

: 강력하고 확장성 높은 단일 호스트 64bit 저널링 파일 시스템입니다.

완전한 익스텐드 기반으로 매우 큰 파일 및 파일 시스템을 지원한다. 

저장할 수 있는 파일 수는 파일 시스템에서 사용 가능한 공간에 의해서만 제한된다.

 

**ext4

: Rhel6 이후 기본 파일 시스템이고 단일 파일 및 시스템 모두에서 최대 16TB까지 크기 지원합니다.

 

# mkfs.xfs /dev/vdb1
// 블록 장치에 XFS파일 시스템을 적용한다.
# mkfs.ext4 /dev/vdb1
// ext4

 

 

스왑 영역 관리

 

커널은 스왑 공간을 사용해서 메모리의 비활성 페이지를 보관하여 시스템 RAM 확보한다. 

시스템 메모리 사용량이 정의된 한도를 초과할 경우 커널은 RAM에서 프로세스에 할당된 유휴 메모리 페이지 검색한다. 커널은 유휴 페이지를 스왑 영역에 쓰고, RAM 페이지를 다른 프로세스에 다시 할당한다. 

프로그램에서 디스크 페이지에 엑세스해야 하는 경우 커널은 메모리의 다른 유휴 페이지를 찾아 디스크에  다음 스왑영역에 필요한 페이지를  불러온다.

 

1. 파티션 생성

 

# parted /dev/vdb
…
(parted) mkpart
Partition name? []? swap1
File system type? [ext2]? linux-swap
…

# udevadm settle

# mkswap /dev/vdb2  // 장치포맷 (vdb1: primary partition)

 

 

2. 스왑 공간 활성화

 

 

# free
# swapon /dev/vdb2
# free

 

다음 과정까지만 하면 부팅할 때마다 스왑 공간이 초기화 된다. 따라서 부팅할 때마다 스왑 공간을 활성화 하려면/etc/fstab 파일에 항목을 배치해야 한다.

 

# /etc/fstab
…
UUID=<UUID> swap swap defaults 0 0 # 우선순위 가장 낮음
   pri=4 # 숫자가 클수록 우선순위 높음
   pri=10
…

 

# systemctl daemon-reload
728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함
250x250