리눅스/실습

리눅스 실습(3) - 파일시스템 실습(디스크 장치와 파티션)

dbswjdahr 2025. 10. 31. 07:56

이번에는 리눅스의 시스템 구조를 이해하고자 하는 실습을 진행해보기로 했다. 여기서는 파일 시스템의 이해를 위해 파일시스템과 그에 관한 여러 작업을 해보겠음

시작하기 전에 Hyper-V 관리자에서 가상 디스크를 추가함 RAID 6까지 해볼 것이기에 4개 추가

Hyper-V 가상 디스크 추가

추가했으면 쉘에서 lsblk 명령어로 붙어있는 블록 디바이스 목록을 볼 수 있다

[root@Alma ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   10G  0 disk
sdb                  8:16   0   40G  0 disk
├─sdb1               8:17   0  600M  0 part /boot/efi
├─sdb2               8:18   0    1G  0 part /boot
└─sdb3               8:19   0 38.4G  0 part
  ├─almalinux-root 253:0    0 34.5G  0 lvm  /
  └─almalinux-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdc                  8:32   0   10G  0 disk
sdd                  8:48   0   10G  0 disk
sde                  8:64   0   10G  0 disk
sr0                 11:0    1 1024M  0 rom

기본적으로 sda가 부터 시작하여 디스크가 추가되면 b,c,d... 순으로 파일이 생긴다. 이 장치 파일들은 /dev 밑에 생성된다. sdb가 현재 운영체제가 깔려있는 디스크인 걸 확인할 수 있다. 보이는 sr0는 VM 설치할 떄 ISO를 넣은 가상 CDROM 장치다.

[root@Alma ~]# tail -5 /etc/fstab
#
UUID=213d4c52-0dbd-476f-b217-831bdbaf7ad3 /                       xfs     defaults        0 0
UUID=a1c464ba-6e62-45b0-88b7-588fc322ac75 /boot                   xfs     defaults        0 0
UUID=EF71-D354          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
UUID=f7b84351-6fb5-42e5-8441-07b62ccf5e31 none                    swap    defaults        0 0

파티션을 하면 그 부분을 사용하기 위해 마운트를 헤야 하기에 /etc/fstab을 보면 운영체제를 설치할 때 생긴 파티션한 부분이(실제 부팅에 필요한 부트로더, 커널 파일 등은 여기에 저장됨) 자동으로 부팅 시 사용할 마운트 지점인 /boot에 붙는다. 실제 디스크에 데이터가 있지만, OS에서 장치에서 직접 시스템 부팅에 필요한 데이터를 쓸 수 없기에 /boot에 마운트 시켜 파일 시스템화 하여 사용한다.

원래 sda 위치에 이 디스크가 붙었었지만 디스크를 추가하는 과정에서 왜인지 밀린 것 같다. 아무튼 추가한 디스크들을 사용하기 위해 파티션을 나눠야 한다. fdisk cfdisk gdisk 명령어로 파티션 작업이 가능하다. 개인적으로 tui 설정이 가능한 cfdisk를 선호하지만 한 번 씩 사용해보기로 한다.

fdisk(gdisk) /dev/sd* 를 하면 프롬프트 창이 바뀌고 여기서 작업하면 된다. 부팅방식에는 전통적인 BIOS와 UEFI 방식이 존재한다. pc 부팅할 때 f12키인가 연타하면 들어가지는 그 화면이 BIOS나 UEFI 맞다. 또, 각각 MBR이랑 GPT(챗gpt 아님)라는 데이터 관리 방식? 형식?이 있다. 예전 32bit 이하의 시스템에선 BIOS와 MBR이 사용됐다는데 이젠 파티션할 떄 그냥 GPT 쓰면 된다.

fdisk는 기본값이 MBR 방식으로 파티션을 한다. 구리니까 GPT로 변경하자. g를 누르면 GPT로 변경할 수 있다. 

[root@Alma ~]# fdisk /dev/sda
Command (m for help): g
Created a new GPT disklabel (GUID: 6D0B5F53-7FF0-4ACA-9ECA-BAF693C7A618).

Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-20971486, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971486, default 20969471): +5G
Created a new partition 1 of type 'Linux filesystem' and of size 5 GiB.

Command (m for help): n
Partition number (2-128, default 2): 2
First sector (10487808-20971486, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-20971486, default 20969471):

Command (m for help): p
Device        Start      End  Sectors Size Type
/dev/sda1      2048 10487807 10485760   5G Linux filesystem
/dev/sda2  10487808 20969471 10481664   5G Linux filesystem

m을 누르면 친절하게 어떻게 해야 하는지 알려준다. 파티션을 생성, 삭제가 가능하고 raid, lvm등의 타입으로 지정도 가능, 진행 중에 상태를 보고 싶다면 p로 확인도 가능하다. 여기선 10G 디스크므로 임의로 2구역으로 5G씩으로 나눴음. 크기랑 파티션 개수는 마음대로 해도 됨. 그러고 lsblk로 파티션이 됐나 확인하면 된다. partprobe 명령어를 사용하면 파티션이 시스템에 즉시 적용된다.
화면 상으로는 모르겠지만 이게 아니면 재부팅하고 사용 가능하기 때문에 사용하고 싶다면 실행하는 게 좋다.

[root@Alma ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   10G  0 disk ## ===============
├─sda1               8:1    0    5G  0 part ## 파티션이 잘 됐다!
└─sda2               8:2    0    5G  0 part ## ===============
sdb                  8:16   0   40G  0 disk
├─sdb1               8:17   0  600M  0 part /boot/efi
├─sdb2               8:18   0    1G  0 part /boot
└─sdb3               8:19   0 38.4G  0 part
  ├─almalinux-root 253:0    0 34.5G  0 lvm  /
  └─almalinux-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdc                  8:32   0   10G  0 disk
sdd                  8:48   0   10G  0 disk
sde                  8:64   0   10G  0 disk
sr0                 11:0    1 1024M  0 rom

 

이번엔 그냥 MBR로 해본다 할 이유가 딱히 없지만 굳이 차이를 보면서 파일시스템 이해를 하기 위함 이번엔 3,3,4G로 3개로 나눠봤다 물론 이유는 없음

[root@Alma ~]# fdisk /dev/sdc
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-20971519, default 20971519): +3G
Created a new partition 1 of type 'Linux' and of size 3 GiB.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2):
First sector (6293504-20971519, default 6293504):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (6293504-20971519, default 20971519): +3G

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3):
First sector (12584960-20971519, default 12584960):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (12584960-20971519, default 20971519):

Created a new partition 3 of type 'Linux' and of size 4 GiB.

Command (m for help): p
Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x3f6297bb

Device     Boot    Start      End Sectors Size Id Type
/dev/sdc1           2048  6293503 6291456   3G 83 Linux
/dev/sdc2        6293504 12584959 6291456   3G 83 Linux
/dev/sdc3       12584960 20971519 8386560   4G 83 Linux

Command (m for help): w

[root@Alma ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0   10G  0 disk
├─sda1               8:1    0    5G  0 part
└─sda2               8:2    0    5G  0 part
sdb                  8:16   0   40G  0 disk
├─sdb1               8:17   0  600M  0 part /boot/efi
├─sdb2               8:18   0    1G  0 part /boot
└─sdb3               8:19   0 38.4G  0 part
  ├─almalinux-root 253:0    0 34.5G  0 lvm  /
  └─almalinux-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdc                  8:32   0   10G  0 disk
├─sdc1               8:33   0    3G  0 part
├─sdc2               8:34   0    3G  0 part
└─sdc3               8:35   0    4G  0 part

여기서는 뭔 차인지 잘 알 수가 없어보인다 굳이 따지자면 파티션 개수가 MBR는 옛날 방식이라 그런지 기본적으로 파티션 개수가 4개가 최대고 GPT는 128개까지 나눌 수 있다. lsblk로 봐도 파티션만 보이지 MBR GPT 차이는 안 보인다. 이건 blkid로 확인이 가능하다.

[root@Alma ~]# blkid /dev/sda
/dev/sda: PTUUID="6d0b5f53-7ff0-4aca-9eca-baf693c7a618" PTTYPE="gpt"
[root@Alma ~]# blkid /dev/sdc
/dev/sdc: PTUUID="3f6297bb" PTTYPE="dos"

[root@Alma ~]# blkid /dev/sdb
/dev/sdb: PTUUID="049d330a-d73b-4ef0-8e10-b3bc242dc46d" PTTYPE="gpt"

파티션 타입을 보면 sda는 처음 GPT로 변경하여 나눈 파티션, sdc는 fdisk 기본값으로 진행하여 MBR로 나눈 것이다 dos가 그걸 의미, sdb는 OS깔 때 설정한 파티션으로 Hyper-V에서 UEFI로 부팅을 설정해서 GPT가 뜬걸 볼 수 있음

이름만 다르고 뭐가 실제로 다르냐고 할 수 있는데, 사실 터미널에서 그걸 파악하기는 힘들지만 대신 MBR은 최대 2TB까지 저장 가능, GPT는 초과 가능함 따라서 파티션 개수도 4랑 128개 차이나는구나 하고 생각하면 편함 그리고 구조 자체가 달라서 GPT는 데이터 무결성 검사가 있고 복구가 가능하다고 한다. 그냥 이제 파티션은 무조건 GPT 쓰면 됨.

[root@Alma ~]# gdisk /dev/sdd
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-20971486, default = 20969471) or {+-}size{KMGTP}: +2G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (2-128, default 2):
First sector (34-20971486, default = 4196352) or {+-}size{KMGTP}:
Last sector (4196352-20971486, default = 20969471) or {+-}size{KMGTP}: +3G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (3-128, default 3):
First sector (34-20971486, default = 10487808) or {+-}size{KMGTP}:
Last sector (10487808-20971486, default = 20969471) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

Command (? for help): p
Disk /dev/sdd: 20971520 sectors, 10.0 GiB
Model: Virtual Disk
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F484C22B-685B-4073-BD97-FDD1F7898A02
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         4196351   2.0 GiB     8300  Linux filesystem
   2         4196352        10487807   3.0 GiB     8300  Linux filesystem
   3        10487808        20969471   5.0 GiB     8300  Linux filesystem

이번엔 gdisk로 해봤다 fdisk보다 좀 더 간편한 느낌인 듯하다 아마 GPT 전용이라 그런 듯? 이건 기본 설치 시 안 깔려있어서 dnf install -y gdisk로 설치하고 했다. 다음은 cfdisk다

cfdisk 초기 화면 - TUI 환경임

아래 sgi랑 sun라는 파티션 타입도 보이는데, 각각 실리콘 그래픽스랑 선마이크로시스템즈에서 예전에 사용하던 전용 파티션이었다고 한다. 리눅스에 이게 왜 있는지 모르겠지만 여기선 절대 쓸 일이 없으니 무시한다. dos(MBR)도 있지만 GPT만 쓰면 됨

보면 알겠지만 매우 편하게 파티션 작업이 가능한데, 타입 지정, 크기 재조정 등도 보고 사용하기 편하게 되어있다. fdisk 같은 걸로 작업하면 대화형 인터페이스라 작업 과정을 보기 까다로운데, 이걸 사용하면 실수할 일도 없어 좋을 것 같다. 데이터가 담긴 디스크를 대상으로 작업할 시 실수가 나면 큰일이니 cfdisk 사용하는 게 좋을 것 같음