Linux의 스토리지
Linux의 스토리지
Ubuntu에서 사용하는 SSD는 블록 스토리지(Block Storage) 입니다.
🔹 왜 블록 스토리지인가?
OS에서 블록 디바이스로 인식
- Ubuntu에서 SSD는
/dev/sda
,/dev/nvme0n1
같은 블록 디바이스로 나타납니다. lsblk
명령어를 실행하면 SSD가 블록 단위로 표시됨.lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 500G 0 disk ├─nvme0n1p1 259:1 0 512M 0 part /boot/efi ├─nvme0n1p2 259:2 0 4G 0 part [SWAP] └─nvme0n1p3 259:3 0 495.5G 0 part /
- Ubuntu에서 SSD는
파일 시스템을 직접 설치해야 사용 가능
- SSD를 처음 연결하면
mkfs.ext4
같은 명령어로 파일 시스템을 생성해야 함.sudo mkfs.ext4 /dev/nvme0n1p3
- 파일 시스템을 만들기 전에는 그냥 블록 데이터 덩어리임.
- SSD를 처음 연결하면
데이터를 블록 단위로 저장
- SSD는 데이터를 4KB, 16KB 등 작은 블록 단위로 저장함.
- 운영체제는 특정 블록(예: LBA 12345)에 직접 접근해 데이터를 읽고 씀.
🚀 Ubuntu에서 SSD = 블록 스토리지 + 파일 시스템
✅ SSD 자체는 블록 스토리지이지만, 파일 시스템(ext4, xfs 등)을 올리면 파일 스토리지처럼 사용 가능함!
✅ 파일을 저장하면 파일 시스템이 내부적으로 블록을 관리하지만, 기본적으로 SSD는 블록 스토리지임.
📌 요약: Ubuntu에서 SSD는 블록 스토리지지만, ext4 같은 파일 시스템을 올리면 파일 스토리지처럼 사용할 수 있음! 🚀
Linux의 파일 시스템
리눅스에서 파일과 디렉터리를 생성하고 저장할 수 있는 이유는 파일 시스템(File System) 이 있기 때문입니다.
1️⃣ 파일 시스템의 역할
SSD나 HDD 같은 블록 스토리지는 단순한 데이터 저장 공간입니다.
운영체제가 파일을 쉽게 관리할 수 있도록 파일 시스템이 블록을 조직화합니다.
파일 시스템이 없으면 SSD나 HDD는 그냥 바이트(0과 1)만 저장하는 공간일 뿐, 파일이나 디렉터리 같은 개념이 없습니다.
✅ 파일 시스템의 주요 기능:
- 파일 & 디렉터리 관리 →
ls
,mkdir
,touch
같은 명령어 사용 가능 - 블록 주소를 파일 이름으로 매핑
- 저장 공간 할당 및 관리
2️⃣ 파일이 저장되는 과정
📌 예제: touch hello.txt
실행하면?
- 파일 시스템이
hello.txt
라는 파일을 만들기 위해 블록을 할당 - 파일 이름과 블록 위치를 저장
- 파일 내용을 저장할 블록을 할당하고, 데이터를 기록
이제 ls -l
을 실행하면 hello.txt
를 볼 수 있음!
하지만 내부적으로는 특정 블록에 데이터가 저장됨.
3️⃣ 디렉터리가 저장되는 과정
📌 예제: mkdir mydir
실행하면?
- 파일 시스템이 새로운 디렉터리를 나타내는 메타데이터 생성
- 디렉터리 내부에 파일 목록을 저장할 블록을 할당
💡 디렉터리도 사실 파일처럼 저장됨! (파일 리스트를 저장하는 특별한 파일)
ls -li
2 drwxr-xr-x 2 user user 4096 Mar 25 10:00 mydir
3 -rw-r--r-- 1 user user 0 Mar 25 10:01 hello.txt
위에서 mydir
도 inode 2
라는 파일로 저장된 걸 볼 수 있음.
4️⃣ 리눅스에서 파일과 디렉터리를 관리하는 구조
리눅스는 파일을 블록에 저장할 뿐 아니라, 메타데이터(inode)를 관리함.
🔹 (1) Inode Table (파일 정보 저장)
- 파일 이름이 아니라 파일의 메타데이터(inode 번호)로 관리
ls -i
로 inode 번호 확인 가능- inode에는 파일 크기, 생성 시간, 소유자, 퍼미션 정보가 들어 있음.
ls -li
3 -rw-r--r-- 1 user user 0 Mar 25 10:01 hello.txt
✅ hello.txt
는 inode 번호 3
을 가짐.
✅ 실제 데이터는 inode가 가리키는 블록에 저장됨.
🔹 (2) 디렉터리는 파일 이름과 inode 번호를 저장하는 파일
- 디렉터리 내부에는 파일 이름 → inode 번호 매핑 정보 저장됨.
- 예를 들어
/home/user
디렉터리는 이런 구조:. ├── mydir (inode 2) ├── hello.txt (inode 3)
ls
명령어가 실행되면, 디렉터리 파일을 읽고 inode 번호를 찾아 파일 정보를 가져옴.
✅ 결론
💡 리눅스에서 파일과 디렉터리를 저장할 수 있는 이유:
- SSD는 블록 스토리지이지만, 파일 시스템(ext4, xfs 등)이 블록을 파일과 디렉터리로 변환
- Inode와 디렉터리 엔트리를 이용해 파일 이름을 블록에 매핑
- 디렉터리도 파일처럼 inode로 관리되며, 내부에 파일 리스트가 저장됨
📌 즉, 블록 스토리지 위에 파일 시스템이 올라가야 파일과 디렉터리를 저장하고 관리할 수 있음! 🚀