리눅스 저장장치 특징과 필수 명령어

강정우·2024년 1월 6일
0

Dev_Ops

목록 보기
5/20

리눅스 특징

리눅스 개열의 OS에서 저장 장치들은 반드시 mount 해야한 사용할 수 있다.

리눅스 운영체제에서는 저장 장치를 사용하기 위해서는 해당 장치를 파일 시스템에 연결해야 하는데, 이 과정을 'mount'라고 한다.
이는 리눅스의 핵심 철학 중 하나인 '모든 것은 파일이다'라는 개념에서 비롯된 것이다.

리눅스에서는 하드 드라이브, CD-ROM, 플로피 디스크, USB 드라이브 등 모든 종류의 저장 장치를 파일로 취급한다.
즉, 각각의 장치는 특정한 파일 또는 디렉토리에 연결되어야 한다는 것이다. 이렇게 연결된 파일 또는 디렉토리를 'mount point'라고 부른다.

이런 방식의 장점은 파일과 디렉토리를 사용하는 일반적인 명령어를 그대로 사용해 저장 장치에 접근할 수 있다는 것이다.
예를 들어, cp 명령어를 이용해 파일을 복사하거나 rm 명령어를 이용해 파일을 삭제하는 것이 가능하다는 것이다.

따라서 우분투에서 저장 장치를 사용하기 위해서는 먼저 해당 장치를 파일 시스템에 'mount'해야 하며, 이를 통해 일반적인 파일 작업을 수행할 수 있게 된다.
이와 반대로 사용이 끝난 저장 장치를 'unmount'하면, 해당 장치와 파일 시스템 간의 연결을 끊을 수 있습니다.
이렇게 해야만 안전하게 저장 장치를 제거하거나 시스템을 종료할 수 있다.

그렇다면 외장 하드는 매번 부팅할 때 마다 연결해야하나? -> 당연 아니다. 부팅시 자동으로 'mount'할 수 있도록 하는 명령어가 있다.

디렉토리 구조

저장장치가 sda,b,c로 잡혀있는 것을 볼 수 있다.
이중 root는 첫번째 저장장치의 3번째 파티션에 위치해있는 것을 알 수 있다.
이제 우리가 해야할 일은
1. 6TB 짜리 sdb에 파티션을 생성한다.
2. sda3에 마운드 될 디렉토리를 생성하여 sdb 파티션(sdb1이 되겠지)을 갖다 붙인다.

파티션 생성

파티션 생성 시 주로 fdisk 를 사용하는데 fdiskMBR 방식이기 때문에 디스크의 사이즈가 2TB가 넘어가면 용량을 2TB 까지 밖에 사용을 못한다.
때문에 2TB 이상의 스토리지를 사용할 때는 MBR 방식 대신 GPT 방식을 사용해줘야 한다.

fdisk 대신 parted를 사용해 주면 된다.

1. fdisk -l, lsblk

전체적인 디스크 확인.

2. parted -l

List 형태로 정보를 출력하여 먼저 디스크 상태를 확인.

3. parted <파디션으로 나눌 하드 디스크>

parted 이용해 새로 추가한 하드 디스크를 입력으로 해당 파디션의 Parted 도구로 진입

4. mklabel gpt

GPT 디스크로 변환

5. mkpart primary 0 0GB

파티션 유형 및 디스크 용량 설정

6. Ignore/Cancel? I [동의]

6. quit

Parted 도구 종료

7. mkfs.ext4 /dev/생성한파티션

파일 시스템 포맷[시스템에 맞는 파일 시스템으로 포맷]

  • 파티션 생성 완료.

MBR과 GPT란?

일종의 디스크 파티션 형식을 말한다.

MBR

우리가 기본적으로 가장 많이 사용하는 전통적인 BIOS 펌웨어 환경을 기반으로 하는 디스크 형식이다.
다른 말로 마스터 부트 레코드(Master Boot Record), 또는 파티션 섹터(Partition Sector)이라고도 하는데, 하드디스크로 부팅하기 위한 정보와 파티션 분할 정보 부팅에 사용되는 실제 파티션에 대한 정보가 저장된다.

하지만 주 프라이머리(Primary) 파티션은 최대 4개까지만(그 이상은 가상 형태로 분할) 생성 가능하며, 주 파티션에 할당할 수 있는 용량은 최대 [2TB]가 한계이다.
예시로 [3TB] 하드 디스크가 있으며 파티션을 두 개로 나눈다면 [2TB] 주 파티션만 사용이 가능하고 남은 [1TB]는 사용하지 못하고 버리는 것이다.

GPT

MBR의 한계를 해결하기 위해 만들어진 새로운 EFI(UEFI) 펌웨어 환경을 기반으로 개발된 디스크 형식이다.
GUID 파티션 테이블(GUID Partition Table)로 물리적인 하드 디스크에 대한 파티션 테이블 레이아웃 표준이다.

초창기에는 GPT의 운영 체제 지원에 제한이 있었으나 최근 기준(2022년)으로는 대부분 지원을 하고 있다.
이론적으로 주 파티션이 최대 128개까지 생성이 가능하며 엑사바이트 단위보다 더 높은 제타바이트 9.4ZB(약 10조 기가바이트)까지 가능하다고 하여 일반 사용자에게는 체감상 무한에 가까운 수치이다.

RAID

lsblk(storage device 정보 출력)로 현재 스토리지 정보를 출력해보면
보면 sda(450GB), sdb(6TB) 가 있는 것이 보이고 원래는 ssd 450GBx2 hdd 2TBx4개 가 장착되어있는데
RAID란 개념 때문에 용량이 작게 잡혔다.

마운트

lsblk로 확인해보면 sdb1이 파티션으로 분할된 것을 확인할 수 있고 바로 mount 명령어로 mount를 실시한다.

sudo mount 위치시킬대상 위치시킬장소

그럼 타다~ 이상없이 mount된 것을 확인할 수 있다.

그리고 다시 df -h로 연결된 하드를 조사해보면 이제는 제일 밑에 6TB 짜리 하드가 잡힌것을 확인할 수 있다.

lost + found


-longformat 옵션으로 보면 lost+found가 있는 것을 볼 수 있고 해당 디렉토리는 접근도 안 된다. 이게 뭘까?

lost+found 디렉토리는 리눅스 파일 시스템에서 흔히 볼 수 있는 것으로, 특히 ext2, ext3, ext4 등의 파일 시스템에서 확인할 수 있다.
이 디렉토리는 검사 도구인 fsck가 시스템을 부팅할 때 파일 시스템을 검사하면서 일관성에 문제가 있는 파일이나 디렉토리를 복구하는 데 사용된다.

즉, 시스템이 비정상적으로 종료되거나, 특정 파일 시스템의 오류를 복구하려고 할 때 "lost+found" 디렉토리가 사용된다.
이 디렉토리 안에 있는 파일들은 대부분 원래의 위치를 잃어버린 파일들로 복구 과정에서 임시로 저장되는 곳이다. 따라서 이 디렉토리가 보이는 것은 파일 시스템이 정상적으로 작동하고 있다는 것을 의미한다.

lost+found 디렉토리가 보이는 것은 문제가 있는 것이 아니라, 리눅스 시스템이 파일 시스템 오류를 관리하는 정상적인 방법이다.
이 디렉토리를 직접 조작하는 것은 권장되지 않는다. 만약 "lost+found" 디렉토리에 파일이 존재한다면, 시스템이 비정상적으로 종료되었거나 파일 시스템에 문제가 있을 가능성이 있으니, 이 경우에는 fsck 도구를 사용하여 파일 시스템을 검사하는 것이 좋다.

fsck

fsck 명령어는 시스템 운영에 중요한 명령어이므로, 사용하기 전에 반드시 해당 명령어와 관련된 문서를 충분히 읽어보시고 이해하신 후에 사용하시는 것을 권장한다고 한다.

먼저, fsck 명령어를 사용하려면 일반적으로 시스템이 마운트되지 않은 상태에서 실행해야 한다.
따라서 보통은 시스템 부팅 시 또는 시스템 복구 모드에서 fsck를 실행한다.

sudo fsck /dev/sda1

위 명령어는 /dev/sda1 파티션에 대해 fsck를 실행한다.
만약 fsck를 실행하면서 발견된 문제를 자동으로 고치고 싶다면 -y 옵션을 사용할 수 있다.

sudo fsck -y /dev/sda1

위 명령어는 /dev/sda1 파티션에 대해 fsck를 실행하면서 발견된 문제를 자동으로 고치도록 한다.

다시 한 번, fsck 명령어는 강력한 명령어이므로 신중하게 사용해야 한다.
또한, fsck를 사용하려면 관련 지식과 경험이 필요하므로, 만약 확신이 없다면 시스템 관리자 또는 전문가에게 도움을 청하는 것이 좋다.

자동화

리눅스 시스템에서 서버를 재시작하면 일반적으로 수동으로 마운트한 저장 장치들은 자동으로 다시 마운트되지 않는다.
따라서 귀찮게 서버를 켤 때 마다 다시 mount 하기 싫다면 /etc/fstab 파일에 해당 마운트 정보를 추가해야 한다.

왜냐하면 /etc/fstab 파일은 시스템 부팅 시 자동으로 마운트할 파일 시스템의 정보를 담고 있기 때문이다.

1. 먼저, 마운트할 파일 시스템의 파일 시스템 타입을 확인

이 정보는 blkid 명령어로 확인할 수 있다.

sudo blkid

이 명령어는 시스템의 모든 저장 장치와 그 파티션의 UUID 및 파일 시스템 타입을 보여준다.

2. 백업을 먼저 만들기

/etc/fstab 파일을 안전하게 편집하기 위해 백업 파일을 만들어두자.
왜냐하면 이게 꼬이면 ㄹㅇ 골치아파지기 때문이다.

sudo cp /etc/fstab /etc/fstab.backup

3. fstab 파일을 편집

참고로 나는 여기서 nano 를 사용했다. 없으면 vim 을 사용해도 무방하다.

sudo nano /etc/fstab

/etc/fstab 파일의 마지막에 다음과 같은 줄을 추가하면 된다.

만약 ext4 파일 시스템을 사용한다고 가정할 때 UUID=... 또는 /dev/sdb1을 사용하여 장치를 지정할 수 있으며, UUID가 더 안정적인 방법이다.

UUID=장치의-UUID /mnt/sdb ext4 defaults 0 2

또는

/dev/sdb1    /mnt/sdb    ext4    defaults    0    2

여기서 defaults는 기본 마운트 옵션이며, 마지막의 0 2는 각각 dump 및 fsck 옵션을 의미한다.

  • dump 옵션
    dump 옵션은 해당 파일 시스템이 dump 프로그램에 의해 백업될 필요가 있는지를 나타낸다.
    dump는 리눅스 시스템에서 파일 시스템의 백업을 수행하는 유틸리티이다.
    이 옵션의 값은 일반적으로 0 또는 1 인데 0은 dump가 이 파일 시스템을 백업하지 않아야 함을 나타내며, 1은 백업 대상임을 의미한다.
    대부분의 경우, 이 값을 0으로 설정하여 파일 시스템을 dump 백업에서 제외한다.
    실제로 많은 현대적인 백업 솔루션이 dump와는 독립적으로 작동하기 때문에 이 옵션은 종종 무시될 수 있다.

  • fsck 옵션
    fsck 옵션은 시스템 부팅 시 파일 시스템 검사(fsck)의 우선 순위를 결정한다.
    fsck는 파일 시스템의 무결성을 검사하고, 가능한 경우 손상을 복구하는 프로그램이다.
    이 옵션의 값은 보통 0, 1, 2이다
    0은 파일 시스템이 부팅 시에 fsck에 의해 검사되지 않아야 함을 의미한다.
    이것은 주로 가상 파일 시스템이나 검사가 필요 없는 파일 시스템에 사용된다.
    1은 최고 우선 순위로, 주로 루트 파일 시스템(/)에 설정된다.
    이것은 시스템이 시작할 때 가장 먼저 검사되어야 하는 파일 시스템임을 나타낸다.
    2는 루트 파일 시스템이 아닌 다른 파일 시스템들에 대해 설정된다.
    이것은 이 파일 시스템들이 루트 파일 시스템 다음으로 검사되어야 함을 의미한다.
    따라서 fsck의 실행 순서는 이 숫자를 기반으로 결정되므로, 여러 파일 시스템이 2로 설정되어 있다면, 그 순서는 보장되지 않는다.

4. 모든 파일 시스템 마운트

모든 변경사항을 저장하고 편집기를 종료한 후, 변경사항이 올바른지 확인하기 위해 다음 명령어를 실행하면 된다.

sudo mount -a

이 명령어는 /etc/fstab 에 있는 모든 파일 시스템을 마운트하려고 시도한다. 여기서 어떠한 오류도 발생하지 않으면 설정이 올바른 것이다.
이제 시스템을 재부팅하면 /dev/sdb1 이 자동으로 /mnt/sdb 에 마운트됩니다. 만약 나중에 이 설정을 변경하거나 삭제하고 싶다면, /etc/fstab 파일에서 해당 줄을 편집하거나 제거하면 된다.

기본 명령어

필수 명령어

vi ~~

ex모드로 전환: ESC
입력모드로 전환: i, a

:w : 문서 저장
:q : 편집기 종료
:q! : 문서 저장하지 않고 종료. .swp 확장자의 임시 파일 생성됨.
:wq : 저장하고 종료
:wd filename : 해당 파일이름으로 문서 저장

리눅스에서 파일을 읽고 쓰기 위해서 vim 외에 cat과 touch를 이용할 수 있다.
vim이 문서편집기인 반면, cat과 touch는 다양한 확장자의 파일을 다룰 수 있다.

touch : 아무 것도 없는 빈 파일을 생성할 수 있다.
cat : 파일을 생성하고 읽을 수 있다.

파일 생성: cat < filename
파일 읽기: cat filename
종료: Ctrl+D
cat < filename으로 파일을 생성하면 따로 모드를 바꾸어 주어야 하는 vim과 달리 바로 문서를 입력할 수 있다.

CPU 와 core 정보 : #cat /proc/cpuinfo
HDD 개수 : # fdisk -l | grep Disk
메모리의 용량 : # cat /proc/meminfo

용량이 큰 파일 찾기
하위 디렉토리중 큰 폴더 찾기 위해 해당 폴더로 이동후 아래 명령어 실행
sudo du -h --max-depth=1 | sort -hr

현재 폴더에서 큰 파일 찾기 : du -sh * | sort -hr

하드 디스크 상태 보기 : df -h
하드디스크 타입까지 확인 : df -h -T
물리적 하드디스크 : df -h -T | grep dev/sd

https://m.blog.naver.com/whentlr/120199172537

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글