본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

리눅스 장치관리 / day 6, 7

by 알거음슴 2021. 4. 6.

디스크 장치를 추가하는 방법 및 과정의 대해 알아보자

디스크 추가 순서 : 장치인식 -> 파티션작업 -> 파일시스템작업 -> 마운트작업

 

[참고] 디스크의 종류 : IDE(SATA), SCSI(SAS), SSD

 

0. 선수지식

 1) 파티션(partition) : 시스템 관리자가 하드드라이브를 파티션이라는 여러개의 논리 스토리지단위로 나눌 수 있다.

- 종류

MBR 파티션 스키마 : BIOS 펌웨어 기반, text 기반, 디스크 크기의 제한 (최대 2Tb), primary 최대 4개

GPT 파티션 스키마 : UEFI 펌웨어 기반, graphic기반, 디스크 크기 제한 없음 (최대 8Zb), primary 최대 128개

 * 논리적으로 파티션을 나누는 공간이 많아짐에 따라, GPT 파티션스키마로 대체되고 있다.

 2) F/W (BIOS) - MBR 파티션 형식 (primary4개 or primary3개+extended1개)

주파티션(Primary) : 최대 4개 생성 가능. 그 이상의 경우 3개까지 생성 후 1개의 파티션을 확장으로 변경하여 논리파티션을 그안에 두어야함 

확장 파티션(Extended) : 하드디스크를 여러 파티션으로 나누고자 할떄 만드는 파티션

논리 파티션(Logical) : 4개 이상의 파티션을 사용할 때 확장파티션의 실제 활용되는 방식.

 

 

1. 장치 인식 & 디스크 추가

 1) 서버의 전원 OFF : poweroff

 2) 새로운 디스크를 장착

 3) 서버전원 ON

  -> 부팅시 system-udevd.serverice 에 의해 새로운 장치가 인식 /dev 디렉토리에 장치파일 생성됨.

 4) 부팅 후 추가된 디스크 확인 (여러방법이있음)

  ls -l /dev/sd? : /dev 에 추가된 장치파일 유무 확인

  lsblk : 모든 디스크 블럭 정보 확인 9 (옵션 --fs 시 더 자세히 확인가능)

  lsscsi : scsi 방식 디스크 유무 확인

  fdisk -l : 모든 디스크들의 상세정보를 확인가능.

 

[참고] primary / extended 의 구분

/dev/sdb 즉 2번째 추가된 디바이스에 파티션 번호를 붙여가며 추가를 진행한다. ex) /dev/sdb1

이때 1~4는 primary파티션이고 5이후 부터는 extended 이기에 logical 파티션으로 지정된다.

 

2. 파티션 작업

 1) 파티션 작업 툴

fdisk CMD : 2TB 이하 (MBR)  /  gdisk CMD : 2TB 초과 (MBR, GPT)

parted CMD : 2TB 초과 (MBR, GPT)

* fdisk 와 gdisk 는 사용법이 같으나, parted 는 사용법이 매우 다름.

 

 2) fdisk 

파티션 작업을 fdisk를 활용하여 진행한다

  (1) 형식 : fdisk [OPTIONS] <DISK>

* fdisk -l : 파티션 테이블 리스트를 보여줌

 

fdisk 진입 후 추가 커맨드  ex) fdisk /dev/sdb 로 진입상태

 m : 도움말 다양한 추가 커맨드들의 설명

 p : 파티션 테이블 정보 출력

 n : 새로운 파티션 추가

 w : 변경내용 저장

 d : 생성되어 있는 파티션의 삭제, 하위 파티션이 여러개일 경우 선택 가능하나 없을경우 자동 삭제됨.

* (extended 의 경우 extended 파티션 삭제 시. 하위 모든 logcal 파티션도 함깨 삭제됨)

 

 3) fdisk 로 파티션을 작업해보자 (primary partition 기준)

 

* n 으로 추가 작업시 확인내용

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           ( primary or extended 를 결정 )
Partition number (1-4, default 1): 1           ( 파티션 번호를 결정 )
First sector (2048-2097151, default 2048):           ( sector 를 결정 )
Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151): +500M     ( 새로운 파티션의 용량을 결정 )

-> 이후 p 추가 커맨드로 파티션 테이블 확인 후 w 로 저장.

- 추가작업 후 변경된  partition table -

Device      Boot  Start        End  Sectors    Size    Id  Type
/dev/sdb1         2048  1026047  1024000  500M  83  Linux 

완료 후 처음 디스크 추가 여부 확인한 방법과 동일하게 파티션 추가 여부를 확인한다.

 

 

[참고]  partprobe 명령어

-> 커널에게 partition table 정보를 다시 로드하도록 한다. 반드시 입력해야하는건 아니지만 필요한 경우가 따로있다

 * 사용중인 디스크에 남아있는 공간에 대한 파티션 작업을 수행했을 때.

 * 가상 디스크 파일일때 ( 인식이 잘 안되는 경우가 있음 )

 

 

 3) fdisk 로 파티션 작업을 진행해보자 ( P1 + E2 (L5,L6))

위 내용참고하여 진행하면된다. 출력결과값만 간단하게 표기해보자

 

1. 파티션 추가 (primary)

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (1-4, default 1): 2
First sector (2048-2097151, default 2048):       ( 별도 입력 없으면 default 값을 따름 )
Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151):       ( 별도 입력 없으면 default 값을 따름 )

Created a new partition 2 of type 'Extended' and of size 1023 MiB.     ( extended 생성완료 )

 

2. 파티션 추가 (extended)

Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 5     ( Extended 로 결정되어있기에 자동으로 5번으로 할당 )
First sector (4096-2097151, default 4096):        ( 별도 입력 없으면 default 값을 따름 )
Last sector, +sectors or +size{K,M,G,T,P} (4096-2097151, default 2097151): +300M           

Created a new partition 5 of type 'Linux' and of size 300 MiB.

 

3. 파티션 추가 (logical)

Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 6
First sector (620544-2097151, default 620544):    ( 별도 입력 없으면 default 값을 따름 )
Last sector, +sectors or +size{K,M,G,T,P} (620544-2097151, default 2097151):  ( 별도 입력 없으면 default 값을 따름 )

Created a new partition 6 of type 'Linux' and of size 721 MiB.

 

4. 최종확인 ( fdisk -> p )

Device      Boot   Start            End   Sectors    Size       Id   Type
/dev/sdc2           2048     2097151   2095104   1023M   5    Extended
/dev/sdc5           4096      618495    614400    300M    83   Linux
/dev/sdc6           620544  2097151   1476608   721M    83   Linux

 

* fdisk -l 등 다른방법으로도 확인가능하다.

 

[참고]

parted 의 경우 사용법이 매우다름, 하단 링크로 확인가능

m.blog.naver.com/anysecure3/221596235243

 

 

3. 파일시스템 작업

 1) 파일시스템 / 종류

파일시스템(File system) : 파일을 저장하고 관리하는 구조체계.

 - 파일시스템의 종류  (man 5 filesystems 에 파일 시스템의 대한 매뉴얼 확인가능)

 ext2 : 리눅스 이전 버전에서 사용하는 파일시스템

 ext3 : CentOS 5.x 사용하는 파일시스템

* ext3 부터 저널링(journaling) 기능이 추가됨.

 ext4 : CentOS 6.x 이상부터 사용하는 파일시스템

 xfs :  고성능 저널링 파일시스템

 ntfs : windows 에서 사용하는 파일시스템

 

[참고] 저널링(journaling)

파일의 전송과정에서 아이노드값을 저널링 로그에 보관하고, 데이터가 모두 옮겨진 이후 아이노드값을 마지막에 붙여넣는 전송방식, 전송과정의 안정성을 더욱 높인 기능.

 

 2) 파일시스템 구조 확인 및 분석

ext4 : tune2fs -l <DISK> = ( dumpe2fs <DISK>) : ext 계열의 파일 시스템 구조 확인

xfs : xfs_info <DISK> : xfs 의 파일 시스템 구조 확인

 

* SuperBlock : 파일 시스템의 전체적인 관리, 정보를 담고 있는 장소 (superblock가 정상 = 파일시스템도 정상)

* minfree : 파일 시스템이 full 났을때 관리자만 쓸 수 있는 공간으로 예약된 공간. 기본값은 5% (범위 0~50%)

 

 3) 파일 시스템 생성

 mkfs

 파일시스템을 생성한다

(1) 형식

 mkfs.[FILESYSTEM] <DISK>

(2) 옵션

 mkfs -t : 디스크에 파일시스템 지정 ( mkfs 와 동일 )

 mkfs -m : 시스템 내 여분의 공간을 결정하는 옵션 (min free)

 -> minfree 공간을 수정하고 싶으면 tune2fs -m 으로 수정가능.

* blkid 명령어로 마운트 하기 전 파일 시스템이 어떤것인지 확인할 수 있다.

 

 (3) 설정

- ext4 파일시스템으로 지정시. (/dev/sdb1 파티션을 지정)

[root@server1 ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.45.6 (20-Mar-2020)
/dev/sdb1 contains a ext4 file system
created on Wed Apr  7 14:59:48 2021
Proceed anyway? (y,N) y
Creating filesystem with 261888 4k blocks and 65536 inodes
Filesystem UUID: 4041bfe7-a15f-4f45-bc2a-01ed15b21f5f
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

-> 적용 완료 

 (4) 확인

[root@server1 ~]# blkid
/dev/sr0: BLOCK_SIZE="2048" UUID="2020-11-18-21-39-52-00" LABEL="CentOS-8-3-2011-x86_64-

      ....... 중략 .......
/dev/sdb1: UUID="4041bfe7-a15f-4f45-bc2a-01ed15b21f5f" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8dece3fb-01"

 

 

4. 마운트 작업

 mount

파일시스템이 지정된 DISK를 특정 dir 에 mount 한다.

 (1) 형식

[mount] <DISK> [dir]

 

 (2) 실습

위에서 열심히 만든 파티션을 실제 dir에 지정해보자.

[root@server1 ~]# mkdir -p /raid0 

[root@server1 ~]# mount /dev/sdb1 /raid0

[root@server1 ~]# df -h
Filesystem           Size    Used    Avail    Use%   Mounted on
devtmpfs            1.8G      0      1.8G       0%     /dev
tmpfs                1.9G      0       1.9G       0%     /dev/shm
tmpfs                1.9G     9.9M    1.9G      1%     /run
tmpfs                1.9G      0        1.9G      0%     /sys/fs/cgroup
/dev/sda1           1014M  240M   775M    24%    /boot
tmpfs                371M    1.2M    370M    1%      /run/user/42
tmpfs                371M    4.6M    367M    2%      /run/user/0
/dev/sr0             8.7G     8.7G       0       100%    /run/media/root/CentOS-8-3-2011-x86_64-dvd
/dev/sdb1          991M   2.6M    922M   1%      /raid0

 

 (3) unmount 

마운트 한 파일 시스템을 마운트 해제 한다.  파일 시스템을 점검할때 활용됨.

 

mount 의 자세한 상세정보 확인

jae1590.tistory.com/28