리눅스#6

최동민·2022년 7월 16일
0

Linux

목록 보기
6/25

파일 시스템

: HDD에 파일들을 어디에 어떻게 저장하고 어떻게 관리할 것인가 하는 자료 시스템 구조
리눅스에서는 대표적으로 EXT 파일 시스템 사용

df

: 하드 디스크의 용량이 얼마나 남아 있는지 확인하는 명령어

df 입력해보면 이러한 파일 시스템을 사용하고 있다는 것을 알 수 있다. blcok은 크기.용량. user는 얼만큼 사용하고 있나. Available 얼마나 공간이 남았나. Mounted on 어떠한 디렉토리에 연결이 되어있나.
/dev/sda2는 리눅스 시스템 : root폴더를 의미

MB파일로 알고 싶을 때에는

root 폴더의 공간이 75G.

du

: 특정 디렉토리내의 파일 용량에 대한 정보를 확인하는 명령어

Mount

: 물리적인 장치를 특정한 위치(디렉토리)에 연결시키는 과정.
리눅스에서는 HDD의 파티션, CD/DVC, USB메모리 등을 사용하기 위해서는 지정한 디렉토리에 연결하는 작업이 필요하다.

  • etc/fstab
    부팅할 때 기본적으로 어떤 디렉토리에 마운트를 시킬 것인가를 설정하는 파일
    UUID에 장치 이름을 기입. mount point는 디렉토리 대상을 지정. /는 root 전역임.
  • 덤프 (dump)
    어떠한 데이터를 저장하는 것. 만일 0값이면 덤프가 필요가 없다고 판단함. dump한다는 건 어떠한 데이터를 백업시켜놓겠다라는 의미.
  • 부팅시파일시스템 점검순서(pass)
    : 부팅 시 파일시스템의 이상 여부를 확인 후 이상이 있을 경우 자동으로 시스템 검사를 할 것인지를 지정
    0은 점검하지 않으며, 1은 / (root파티션), 나머지는 2로 지정함 (병렬로 처리한다는 뜻)
    원래 마운트를 한 뒤 시스템을 재부팅하면 마운트가 꺼져 있다.
    이전에 root 비밀번호 분실시 초기화를 설정하였을 때 사용한게 mount였다.
  • etc4 파일시스템
    현 리눅스 표준 파일시스템이다.

SATA장치와 SCSI 장치의 구성


일반 가정집은 SATA
아니면 SCSI 스카시.
요즘은 NVMe. 하드디스크 안에 칩이 나오고, 그 칩을 바로 꽂아넣는 것. 초고속 데이터 전송 규격. 정말빠르다.

새로운 하드디스크를 샀다고 가정하고 컴퓨터에 추가를 해보자.

  • HDD 추가
    -- SWAP Partition : HDD 일부를 RAM처럼 사용할 수 있게 만드는 기술로, RAM의 용량이 꽉 찼을 경우 중요도가 낮은 데이터들을 SWAP공간에 저장하여 사용함.
    mffs.ext4 는 포맷.
    포맷을 하게 되면 사용할 수 있는 공간이 만들어짐.
    그것을 사용하기 위해서는 디렉토리에 mount를 시켜야 한다.




    가상 디스크 파일을 하나의 파일로 만들겠다 (single file)

    하드디스크 이름 설정

    새로운 하드디스크가 생성되었다. 1번

    HDD장착을 하였으니 이제 파티션을 생성한다. fdisk라는 명령어를 사용.
    • 만약 hdd를 통째로 사용하려면 1개, 2개로 나눠서 사용하려면 2개의 파티션을 생성
    => Primary 파티션 / Extended 파티션으로 나뉨
    => 1개의 hdd에는 4개의 Primary파티션까지 설정 가능
    sdb 라는 하드디스크.
  • n : add a new partition (새로운 파티션 생성)

    2048부터 시작할건데 그 크기를 어떻게 할 것인가?
    끝까지 다 쓰겠다. enter
    1023크기로 파티션이 생성되었다.

    p 눌러보면 체크 가능

    저장은 w.

    이제 포맷을 할 차례

    이제 마운트를 할 차례. 마운트를 할 디렉토리를 생성하자.

    커널인 vmlinuz-5.13.0-30-generic 를 복사할 것
    mydata 폴더에 복사하였다.
    (복사는 컨트롤 쉬프드 c, 붙여넣기는 컨트롤 쉬프트 v)
    sdb1이라는 친구를 mydata에다 넣겠다, 마운트하겠다는 것.

    마운트를 하면 자동으로 생성되는 디렉톹리 lost+found

    현재 디렉토리에 마운트 하게 되면 해당 하드디스크가 그 디렉토리를 사용한다.
    umount : 마운트 해제
    사라졌다.

    마운트를 꽂았다 뺐다 하는 것.
    시스템을 껐다 키면 마운트가 해제되어 있다.
    그럼 마운트를 할 때마다 mount /dev/sdb1 /mydata 이걸 계속 해야할까?
    저장을 하면 되겠다.
    nano /etc/fstab 에 들어간 후
    /dev/sdb1 이라는 장치를 mydata로 대상을 지정하고
    ext4 리눅스 타입. default. dump 0. pass 0.

    reboot 후 확인해보면 /dev/sdb1 이 저장되어 있다.

RAID

: 여러 개의 하드디스크를 하나의 하드디스크처럼 사용하는 방식.
하드웨어 RAID와 소프트웨어 RAID로 나뉨.

  • Linear RAID
    두 개 이상의 하드디스크로 나누어 저장. 순서대로 저장된다. 하나가 차면 다음.
  • RAID 0
    두 개 이상의 하드디스크로 저장. 동시 저장을 한다.
  • RAID 1
    두 개 이상의 하드디스크로 저장. 동시 저장이지만 복사본이라 생각하면 된다. 미러링이라고 함.

    RAID 0 이 저장되는 시간 or 속도 면에서 모든 RAID 중 가장 성능이 뛰어나다.
    단점은 하나의 HDD에서 문제가 발생하면 DATA를 알 수 없게 되어(복구를 할 수 없음) 모두 쓸모가 없어짐.
    RAID 1은 미러링 저장이기에 'HDD가 고장 나도 없어져서는 안될 중요한 데이터'에 적합. 단, 하나의 data를 저장할 때 필요한 공간은 해당 data의 2배가 필요.
  • RAID 5
    RAID 0 + Linear 1을 생각하여 구성된 것
    최소 3개 이상의 HDD가 있어야 구성 가능. (대부분 5개 이상으로 구성)
    HDD에 오류가 발생하면 '패리티(Parity)'를 이용해서 데이터 복구 가능.
    어느정도 결함을 허용하며 저장 공간의 효율이 좋음.
    data를 저장할 때, Parity를 위한 공간이 추가로 필요함.
    HDD를 여러 개를 사용할 수록 공간 효율이 좋아짐. (HDD 1개 고장나더라도 ok)
  • RAID 6
    RAID 5방식을 개선한 것으로, 2개의 Parity를 사용. (HDD 2개 고장나더라도 ok)
    따라서 최소 4개 이상의 HDD로 구성해야 함.
    Parity를 생성하기 위한 알고리즘이 복잡하기 때문에 RAID 5보다 성능(속도) 효율이 약간 낮음.

RAID를 구현해보자.

기존 하드디스크를 지우고 1GB 8개, 2GB 1개 만들기
0:10 까지 구성해놓으면 되겠다.

SCSI(스카시) 는 15개까지 생성 가능.
재부팅한 후 다 들어왔는지 확인

n은 파티션 생성

RAID 형태로 만들기 위해 t.
fd로 만들어야겠다.


p눌러 확인해보면

w 등록

sbb~sbj까지 쭉 생성하기
생성 후 확인해보면 생성된 건 1이 붙는다.

RAID 만드는 패키지. RAID를 관리해주는 친구.

cp /etc/apt/sources.list.bak /etc/apt/sources.list 실행 후 apt update 한 다음
apt -y install mdadm
설치 후
sdb와 sdc 체크.


명령어 실행하기.
raid를 만들겠다, md9에. level은 linear raid이다. ( 0은 RAID 0, 1은 RAID 1을 뜻함) 2개의 하드디스크(HDD)를 사용하여 linear raid를 만들 것이고 그 두개의 디바이스는 sdb1 과 sdc1이다. (RAID 생성 시 사용하는 HDD 파티션들(장치)을 의미)

  • stop /dev/md9
    : 가동 중인 RAID장치를 중지한다.
  • run /dev/md9
    : 중지된 RAID 장치를 재가동한다.
  • detail /dev/md9
    : 장치의 상세 내역을 출력한다.


    md9가 잘 만들어졌는지 체크

    이제 포맷하자.
    mkfs.ext4 /dev/md9

    마운트하자

    df

    df -h 잘 만들어졌다

    nano /etc/fstab에서

    이번에는 RAID 0으로.

    포맷


    마운트 후

    체크

    RAID 1로도 추가. 부팅디바이스로는 못쓴다 YES.


    마운트하자

    df로 조회

    RAID 5 추가

    mount /dev/md5 /raid5 마운트하기
    그리고 df로 확인

    이제 구축이 다 완료되었다


    위 4줄 내용 복사 후

    맨 아래에 붙여넣기 해준 뒤 name 부분만 지워준다.


    스냅샷 찍어주기

    reboot해보니 현재 마운트가 안되어있다.

    nano /etc/fstab 에서 한 줄 띄운 후 reboot하니 해결되었다.


    raid0에 테스트 파일 생성

    다른 raid에도 복사해주기

    SCSI가 0:2,4,6,9번 remove하기

    HDD를 지웠기 때문에 다시 시작해보니 자동으로 mount가 되어있지 않다.
    ls -l /dev/sd*
    j까지이던 sd~알파벳이 4개를 지우고 나니 앞으로 당겨졌다.

    active가 비활성화 되어있다.

    다시 활성화 시켜주어야 한다.

    mdadm --detail /dev/md1 해보니
    하나는 현재 removed 되었다.


    raid1, 5만 보존이 잘되어있다.

    gedit /etc/fstab들어가서 md0, 9에 주석처리하기.

    이제 복구작업을 해보자
    reboot 후 1GB HDD 4개를 다시 만들자.

    fdisk /dev/sdc~ sdi까지 4개 생성


    mdadm --stop /dev/md0,1,2,5 해주자
    md1 과 md5는 unmount시켜준 후 해야한다. 아래 안되는 걸 볼 수 있음.
    umount /dev/md1,md5 해준 후 다시 stop해주자

    mdadm --detail --scan 해보면 없어서 안나온다.
  • LinearRAID
    mdadm --create /dev/md9 --level=linear --raid-devices=2 /dev/sdb1 /dev/sdc1
  • RAID 0
    mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdd1 /dev/sde1
  • RAID 1
    mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdf1 /dev/sdg1
  • RAID 5
    mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdh1 /dev/sdi1 /dev/sdj1


    이제 다 ARRAY!

    지금까지 정리
    RAID 실습
  • RAID 설정 단계
  1. RAID로 만들 HDD를 추가하기
    (LinearRAID, RAID0, RAID1은 devices가 2개 이상. RAID5는 3개 이상)
  2. 각 HDD의 파티션을 설정
    fdisk /dev/sd?
    -> n 눌러서 파티션 생성 default값에 Enter 쭉 눌러준 후 t -> fd -> w로 저장
    (시스템 유형을 설정하지 않으면 자동으로 83(Linux)로 설정된다.
    RAID를 설정해야 하기 때문에 fd(Linux raid autodetext) 라는 파일 시스템을 지정해야 함.
    Command:n (새로운 파티션 분할)
    Select:p (Primary 파티션 선택)
    Partition number:1 (파티션 번호 1번 선택(4개까지 선택가능))
    First sector:Enter (시작 섹터 번호 입력)
    Last sector:Enter (마지막 섹터 번호 입력)
    Command:t (파일 시스템 유형 선택)
    Hex Code:fd (Linux raid autodetect 유형번호 (L입력 시 전체 유형 출력))
    Command:p (설정된 내용 확인)
    Command:w (설정 저장)
  • RAID 구현 단계
  1. 파티션 설정된 HDD들을 사용하여 RAID를 구현
    mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1 이런 식으로.
    --create: RAID장치명 (직접 정함)
    --level: linear, 0, 1, 5 중에 선택
    --raid-devices: RAID구현 시 사용할 장치 개수
    /dev/sdb1 /dev/sdc1: RAID 구현 시 사용할 장치들(HDD들)
  2. 현재 구현된 RAID 확인 (활성화여부)
    1) 전체 동작 확인
    mdadm --detail --scan
    2) RAID의 구성 확인. 장치명은 /dev/md0 이런 식
    mdadm --detail 장치명
  3. 포맷
    mkfs.ext4 장치명은/dev/md0 이런 식
  4. 마운트 (마운트 하기 전 마운트를 담당할 dir하나 생성해놓기)
    mount 장치명 디렉터리명
    mount /dev/md0 /raid0
    번외 (RAID 장치 시작 및 중지)
    mdadm --stop 장치명
    mdadm --run 장치명
  • 최종 설정 단계
  1. mdadm 버그 해결
    mdadm --detail --scan 해서 전부 복사
    nano /etc/mdadm/mdadm.conf
    파일에 복사한 내용 마지막에 붙여넣고, name=~~~ 되어있는 그 부분만 삭제 후 저장
    update-initramfs -u 명령어로 설정내용 적용하기
  2. 부팅 시 자동 mount 되게 하기
    nano /etc/fstab 에 아래 내용 추가하기 (한줄 띄워서)
    장치명 마운트할디렉터리명 ext4 defaults 0 0
    ex) /dev/md0 /raid0 ext4 defaults 0 0 이런식으로
profile
코드를 두드리면 문이 열린다

0개의 댓글