2024_01-31~02_01_디스크관리

이기태·2024년 1월 31일

리눅스

목록 보기
1/27
post-thumbnail

키 만들기: ssh-keygen
키 배포: ssh-copy-id 192.168.10.10
레이어 보기: tree -L 2 /bin // /bin으로부터 2레벨 구조 보기
**스크립트 만들기

공개키 인증 방식 사용 예 -> 암호없이 원격 로그인
1. 보안 장비 접속하는 경우
2. 클라우드에 존재하는 서버에 접속하는 경우
3. Big Data 시스템 관리시 (->Ansible)
4. Cloud 시스템 관리시 (->Ansible)

ex) 빅데이터 서버에서 많은 서버들을 한번에 동시에 관리하기 위해 공개키 사용.


<리눅스 파일 시스템 구조>

[디렉토리]

/: 최상위 디렉토리, root디렉토리. 모든 파일 시스템의 마운트 포인터가 존재
/usr: 설치된 소프트웨어, 공유 라이브러리가 포함된 파일 및 읽기 전용 프로그램 데이터. ex) /usr/bin, /usr/sbin, /usr/local
/etc: 시스템 고유의 구성파일. ex) OS부팅 설정, 서비스 설정, 보안,기타 설정 파일.
/var: 재부팅 후에도 유지하는 시스템 고유의 가변 데이터. 동적으로 변경되는 파일. ex) DB, 캐시디렉토리, 로그 파일, 웹 사이트 콘텐츠등
/run: 마지막 부팅 후 시작된 프로세스의 런타임 데이터. 프로세스 ID파일과 잠금 파일이 여기에 포함. 디렉토리 내용은 재부팅 시 다시 생성.
/home: 일반 사용자의 홈 디렉토리. 일반 사용자의 개인 데이터, 구성파일을 저장하는 디렉토리
/root: root 사용자 홈 디렉토리
/tmp: 어디서든 쓸 수 있는 임시파일용 공간. 10일동안 엑세스, 변경이 없으면 자동 삭제. 또다른 임시디렉토리는 /var/tmp에 존재한다. 이것은 30일 까지 보관한다.
/boot: 부팅 프로세스를 시작하는 데 필요한 파일들. ex) Boot Loader(GRUB), Kernel, 램파일시스템(initrd)

  • 디스크에 부트파일이 커널이 먼저 메모리에 올라감.

/dev: 시스템에서 하드웨어에 엑세스 하는 데 사용되는 특수 장치 파일을 포함. 윈도우의 장치관리자.
/bin: 바이너리 파일들. 기본 명령어등이 들어있다. 부팅에 필요한 명령어가 위치하고 있고, 부팅 후에 시스템의 사용자들이 사용할 일반적인 명령어도 위치함.ex) ls, cp, mv, rm ....
/sbin: 시스템 바이너리파일. 관리자가 사용하는 명령어. ex) 네트워크설정, 장치관리 설정 명령어.
/lib , /lib64: 라이브러리가 들어있음.

  • 메뉴얼 보기: man 7 hier

[스냅샷 생성]

현 상태를 순간적으로 기록해 복구용으로 사용
스냅샷은 OS 기동중이거나 Power OFF 상태 모두에서 사용 가능.

*절차
VMware > VM > snapshot > Take snapshot > 스냅샷 이름, 설명 작성.
8개 이내로 만들자.

[장치관리]

ex)CPU,키보드,디스크,
디스크 장착
1. 장치 인식 작업(systemd.udevd) > 2. 파티션 작업(fdisk/gdisk/parted CMD) > 3. 파일시스템 작업(mkfs) > 4.마운트 작업(mount(윈도우는 자동))

[1] 장치 인식

1. 선수지식

1) 디스크 종류: IDE(SATA),SCSI(SAS),SSD(NVMe)
HDD: IDE,SCSI

  • IDE: 컨트롤러2개, 컨트롤러당 2개 최대 4개 CD,디스크,테이프를 물릴수 있음. ?
    디스크만 물릴 수 있게 개선-> SATA
  • SATA: 서버에 디스크 연결 부분을 따로 만들어 놓음. 4개의 컨트롤러 컨트롤러당 30개 디스크
  • SCSI: SCSI어댑터에 꽃으면 디스크 망이 생김. 망 하나당 0~15번중 7번은 사용못함. 0,1 컨트롤러, 6 CD, 3,4 테이프 등등... 4개 컨트롤러, 컨트롤러당 (16 - 1)개 (7번)
    안전성이 높지만 비쌈. 개선 -> SAS
  • SAS: SATA와 비슷.

SSD: NVMe(메모리처럼 생김.) SAS보다 읽기10배,쓰기 1.5~2배 빠름.
NVME: 컨트롤러 4개 컨트롤러당 64개.

2) 디스크 구조:
플래터 - 저장하는 공간
스핀들 모터 - 플래터를 돌려주는 모터
헤드 - 데이터를 읽는 역할
헤드 암 - 헤드를 데이터가 있는 곳으로 움직이는 역할.

A: 트랙
B: 섹터
C: 트랙 섹터
D: 클러스터
*섹터 => 트랙 => 실린더 => 파티션 => 디스크

  • 파티션을 나누는 이유? 포맷, 백업하기 편함.

3) 디스크 이름 체계

  • (IDE) /dev/hda, /dev/hdb, /dev/hdc, /dev/hdd // ide
  • (SCSI) /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd ... // sas,ssd
  • (NVMe) /dev/nvme0n1, /dev/nvme0n2, /dev/nvme0n3, ....
  • (vDisk) /dev/vda, /dev/vdb, /dev/vdc, ....

2. 장치 인식 작업

[참고] Hot swap: 서버 ON중에 새로운 디스크 장착해도 인식. 리눅스는 핫스왑에 약함.
1) 서버 전원 OFF
2) 디스크 장착 : VMwatr > VM > setting > add > hard disk > create a new virtual disk > scsi > 1G, store virtual disk as a single file
3) 서버 전원 ON
4) 디스크 확인: ls -l /dev/sd?, fdisk -l, lsblk, lsscsi(scsi disk만 볼때)


[2] 파티션 작업: 디스크 나누는 작업

1. 선수 지식

파티션 종류 및 이름체계
--FW 종류-- ----- DISK 파티션 타입 종류 -----
1. BIOS -> MBR 파티션 스키마 2TB 지원
2. UEFI -> GPT 파티션 테이블 8ZB 지원
- 2TB보다 크면 GPT방식만 가능.

  • MBR(Master Boot Record 파티션 스키마
    -파티션 종류-
    primary partition 주 파티션: (p1~p4)
    Extended partition 확장 파티션(p1~p4) - Logical partition 논리파티션(L5~L15)
    -> 확장 파티션은 주 파티션을 제외한 1~4번에 할당하고 논리 파티션은 5번부터 할당.
    [???] 확장파티션과 논리파티션은 왜 필요한가.
    몇개의 파티션과 용량이 중요. 4개 이상의 파티션을 만들기 위함. 주 파티션을 4개만들면 더이상 파티션을 만들 수 없음.

  • GPT(GUID Partition Tables)
    -파티션 종류-
    Partition(1~128)개 파티션 설정 가능.

[실습] MBR 파티션 형식
구조 확인: df -h (fdisk -l), cat /proc/swaps (swapon -s),lsblk, lsblk -p, lsblk -p --fs

2. 파티션 작업

  • fdisk CMD // 2TB 이하
    명령어 형식: fdisk -l /dev/sdb // 상태 확인

    [실습1] sdb에 파티션 구성하기.
    fdisk /dev/sdb -> scsi의 두번째 디스크 설정하기
    m: 도움말 보기
    p: 상태 프린트 하기.
    n: 생성 - p(주 파티션) or e(확장 파티션) - 파티션 넘버 1~4 정한 후 - first sector는 그냥 enter - Last sector는 200MB면 +200M enter
    w: 쓰기, 저장
    d: 삭제
    t: 파티션 시스템 ID 설정.

  • gdisk CMD // 2TB 초과
    사용방법은 fdisk와 비슷하다. 그러나 자동 GPT로 설정되어 1~128번으로 그냥 설정하면 된다.
    gdisk -l /dev/sdb
    gdisk /dev/sdb

    partition id (fdisk) gdisk
    82: Linux swap 8200
    83: Linux (default) 8300
    8e: Linux LVM 8e00
    fd: Linux RAID fd00

  • parted CMD // 2TB 초과
    parted /dev/sdb

    mklabel gpt | msdos // 파티션 타입 설정 GPT | MBR
    mkpart // 파티션 생성.
    partition name? primary // 이름
    File system type? [ext2]? ext4 // 파일시스템
    Start? 2048s | 1M // 시작점
    End? 200MB //끝점
    quit //나가기
    --
    삭제하기: rm 1 // 1번 파티션 삭제
    print: 확인.

[3] 파일 시스템 작업

1. 선수 지식

파일시스템이란? 컴퓨터에서 파일을 저장 및 관리하는 구조체계

  • 종류
    ext2: 리눅스 이전 버전에서 사용하는 파일 시스템
    ext3: CentOS 5.X 에서 사용하는 파일 시스템
    ext4: 현재 CentOS 6.X 이상에서 사용하는 파일 시스템
    xfs: 현재 고성능 저널링 파일 시스템 (eXtended File System)
    <저널이란?> 파일 시스템의 지정된 영역 안의 원형 로그.
    저널링 파일 시스템: 변경사항을 커밋하기 전 저널에 생성되는 변경 사항을 추적.
    <메뉴얼>

2. 파일 시스템 작업

mkfs -t ext2 | ext3 | ext4 | xfs /dev/sdb1 //파일 시스템 적용
mkfs.ext4 /dev/sdb1 // 위와 같음

lsblk --fs // 확인

[4] 마운트 작업(mount CMD, /etc/fstab)

1. 마운트 확인

  • mount | grep raid //마운트 확인.

2. 마운트 관련 파일들

  • /etc/mtab: 현재 마운트 상태에 대한 정보를 가지고 있는 파일
    cat /etc/mtab | grep /dev sdb1 //위와 같이 마운트 확인.
    운영체제가 자동으로 관리하기때문에 관리 파일이 아니다.
  • /etc/fstab : 부팅시 자동 마운트 해줌.<중요>

    dump 옵션은 안씀.
    루트 파일시스템: 부팅시, 시스템 운영에 꼭 필요한 파일과 디렉토리

3. 마운트 관련 명령어 (4장 p.10)

  • mount CMD : mount [-t ext4][-o OPTIONS] /dev/sdb1 /oracle
    -o: defaults(), ro, auto,,,
  • umount CMD: umount /oracle
    [참고] 'target is busy' - 사용중인 팡리 시스템을 umount하는 경우
  1. fuser -cu /home //사용중인 유저 확인
  2. wall '메세지' // 경고 메세지 보내기
  3. fuser -ck /home // 추방
  4. umount /home
  • mount -a CMD // /etc/fstab등 마운트 될만한거 모두 마운트

  • umount -a CMD // 마운트 된것 모두 해제

  • mount /dev/sdv1 /raid0 // 일반 마운트
    mount -p /raid0 /raid1 // bind mount
    [참고] 바인트 마운트: 기존 디렉터리 구조를 다른 위치에 마운트해 마운트 지점의 내용이 원본 디렉터리의 내용과 동일하게 보이도록 만든다.
    즉, 대상디렉터리에 접근하면 원본 디렉터리의 내용이 그대로 나타남.
    파일 시스템의 특정 부분을 여러 위치에서 동시에 사용하고자 할 때 유용.
    uuid는 blkid로 확인

  • 마운트 옵션

  • remount
    mount /testmount
    mount | grep testmount
    moutn -o remount,ro /testmount // 읽기 전용으로 umount없이 변경.
    mount | grep testmount

  • [참고] * [장애 처리] /etc/fstab 이후 부팅 안될 시

"sulogin prompt"에서 root 암호 입력
mount |grep root
mount -o remount,rw /
vi /etc/fstab
작업라인 주석 처리
systemctl demon-reload
exit

4. 기타 마운트

  • CD 마운트 방법
    (자동으로 마운트 되는 경우)
    Automount (CDROM에 CD를 넣을때)
    #cd /run/media/<사용자이름>/<LABEL이름>; ls
    #cd ; umount /run/media/<사용자이름>/<LABEL이름>
    (수동으로 마운트 되는 경우)
    #mkdir -p /mnt/cdrom ; mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom
    #cd /mnt/cdrom ; ls
    #cd ; umount /mnt/cdrom

  • ISO 파일 마운트
    가상 CD 프로그램: Daemon Lite, VirtualCD, CD Space
    (명령어 형식)
    ex) ISO 이미지 파일: 수동 마운트만 가능.
    [참고] ISO파일 만들기: mkisofs
    mkisofs -o linux.iso /test
    mkdir -p /mnt/iso ; mount -t iso9660 -o ro,loop /test/linux,iso /mnt/iso
    cd /mnt/iso; ls
    cd; umount /mnt/iso
    df -h // 확인

  • USB Flash Drive(USB Memory Stick)

  1. FAT32
    (자동마운트)
    Automount
    #cd /run/media/root/LABEL ; ls #cd; umount /run/media/root/LABEL
    (수동마운트)
    #lsblk --fs
    #mkdir -p /mnt/usb; mount -t vfat /dev/sdd1 /mnt/usb
    cd /mnt/usb;ls
    cd; umount /mnt/usb
  2. NTFS
    [설치]
    #yum -y install epel-release
    #yum -y install ntfs-3g
    (자동 마운트)
    Automount
    #cd /rum/media/root/LABEL ; ls #cd /umount /run/media/root/LABEL
    (수동마운트)
    #mkdir -p /mnt/ntfs ; mount -t ntfs /dev/sdd1 /mnt/ntfs
    #cd /mnt/ntfs ; ls
    #cd; umount /mnt/ntfs
  • RAM DISK
    ->램의 남은 공간을 디스크 처럼 사용하는 것.
    -> 전원off시 사라지기때문에 임시파일로 활용
    (수동마운트)
    #free -h
    #mkdir -p /mnt/ramdisk ; mount -t tmpfs -o size=10m none /mnt/ramdisk
    #cd /mnt/ramdisk;ls
    #cd;umount /mnt/ramdisk

  • NFS(Network File System) 원격 마운트
    -> 분산 파일 시스템(Distributed File System)의 종류
    -> 1. 리눅스/유닉스 : NFS: Linux <- 공유 -> Linux
    -> 2. 윈도우 : CIFS(Common Internet File System) : WIN<- 공유 ->WIN
    (NFS 서버)
    #mkdir -p -m 777 /share
    #vi /etc/exports
    /share *(rw)
    #systamctl enable --now nfs-server
    (NFS 클라이언트)
    #showmount -e 192.168.10.30
    #mkdir -p /mnt/nfs; mount -t nfs 192.168.10.30:/share /mnt/nfs
    #cd /mnt/nfs; ls
    #cd; umount /mnt/nfs

  • CIFS(Common Internet File System) 마운트
    (CIFS 서버)
    -> 컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device 여기서 0으로 설정해주고
    -> 비밀번호없이 접속 할 수 있게 설정..?
    -> 전제조건: soldesk 사용자 암호 필요

  1. 공유할 디렉토리 생성: C:\share 디렉토리 생성
  2. 공유 서비스 생성: ncpa.cpl > 고급 공유 설정 변경
  3. 폴더 공유 설정: C:\share 폴더속성 > [공유] 탭 > 고급 공유 > [v] 선택한 폴더 공유
    (CIFS 클라이언트) Linux
    #yum -y install cifs-utils sambe-client
    #sambclient -L 172.16.6.23 -U soldesk
    #mkdir -p /mnt/cifs; mount -t cifs -o username=soldesk //172.16.6.23/share /mnt/cifs
    #cd /mnt/cifs ;ls
    #cd ; umount /mnt/cifs

[5] 파일시스템 점검

[주의]: 마운트 전에 수행해야한다. 또는 마운트 해제하고 수행.
fsck /dev/sdb1 == fsck -t ext4 == fsck.ext4 == e2fsck
fsck -y /dev/sdb1 // 대답을 모두 yes
ex) fsck -y /dev/sdb1 2>&1 | tee fsck.log // fsck.log파일에 내용 저장.

  • 슈퍼블락
    디스크 맨위에 32바이트 슈퍼블락이 있음.
    dd if=/dev/zero of=/dev/sdb1 count=1 bs=1024 seek=1 // 슈퍼블락에 일부분을 0으로 만듦.
    이후 다시 마운트하면 마운트가 되지 않음.

위 슈퍼블락 일부를 0으로 만든 후 fsck -y /dev/sdb1을 하면 고쳐진다.
고쳐진 작업 내용을 저장하고 싶다면
fsck -y /dev/sdb1 2>&1 | tee fsck.log를 사용하자.

[6] 파일시스템 모니터링

  • df: 파티션 단위의 사용량 점검
    -k : 키로바이트 단위
    -m : 메가바이트 단위
    -h : 사람이 보기 쉽게 변환
    -T : 파일시스템 타입도 같이 출력
    주로 df -hT 사용.
    ex) df -hT / /boot /home

  • du : 디렉토리 단위의 사용량 점검
    -k : 키로바이트
    -m : MB
    -h : 보기 편하게
    -a : 해당 경로 모든 용량 표시
    -s : 해당 경로 디스크 용량 총 합계만 출력

  • find
    find / -name core -type f
    find / -user fedora -goroup fedora
    find / -mtime -7|7|+7
    fine / -perm -755|755
    find / -size -30M|30M|+30M
    find / -name file1 -type -exec CMD \;

[실무 예] df CMD + du CMD + find CMD + lsof CMD
df -k
du -sk /var // var의 총 용량
cd /var
du -sk * | sort -nr | more // 페이지 단위로 /var 용량 역방향 정렬
find /var -type f -size +1G // /var에 있는 파일 사이즈가 1G이상인것 찾기


[질문] 다음 물음에 대한 답을 찾아 보시오.
(질문1) /(root) 파일 시스템안의 바로 밑에 있는 디렉토리 중 가장 용량이 큰 디렉토리는? du -sk * | sort -nr |more
답: usr
(질문2) 사용량(%)이 가장 많은 파일시스템은? df -hT /
답: /dev/sda1
(질문3) 운영체제 내에 용량이 가장 큰 파일은?find / -type f -size +300M
답: /var/cache/PackageKit ....
(질문4) /etc 디렉토리 총 용량은? du -sh /etc
답:33MB

[참고] 웹 콘솔(Web Console)로 모니터링
systemctl enable --now cockpit.socket //활성화
firefox https://localhost:9090 & // 웹 브라우저 접속

0개의 댓글