컬쥐네 다락방

리눅스 | 시스템 디스크 / 파티션, 스왑 메모리 본문

클라우드/리눅스

리눅스 | 시스템 디스크 / 파티션, 스왑 메모리

코딩하는 갱얼쥐 2022. 2. 24. 20:47

Partition 파티션

  MBR GPT
개발시기 1980년대 초 1990년대 말
파티션 수 주 파티션 4개 OR 주 파티션 3개 + 확장 1개 주 파티션 128개
인식 용량 최대 2 TB 최대 8 ZB
명령어 fdisk gdisk
 parted

시스템 디스크 사용 절차 :

디스크 => 파티션 생성 => 파일 시스템 (file system(fs))으로 포맷 => 마운트(mount)

 

디스크, 파티션, 파일 시스템, 마운트 관련 명령어

lsblk : 현재 시스템의 블록장치에 관련한 상태 확인

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk
├─sda1   8:1    0    4G  0 part [SWAP]
└─sda2   8:2    0   56G  0 part /
sdb      8:16   0   20G  0 disk
sr0     11:0    1 1024M  0 rom

fdisk 디스크명 : MBR 파티션 생성

gdisk 디스크명 : GPT 파티션 생성

partprobe 디스크명 : 디스크 정보를 시스템에 등록

 

mkfs -t 파일시스템 파티션명 : 파일시시스템 포멧

mkfs.파일시스템 파티션명

 

mount 장치명 마운트포인트(path) : 마운트 실행

- mount -a : /etc/fstab에 등록된 마운트 실행

 

umount 장치명(마운트포인트) : 마운트 해제

- umount -a : 사용중인 마운트 제외한 모든 마운트 해제

 

df -Th : 파일 시스템 상태 확인

 

blkid : 파일시스템 관련 파티션 확인

 

디스크 구조를 만드는 과정 

파티션 생성 

[root@localhost ~]# fdisk /dev/sdb  fdisk를 이용해 파티션 생성
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x5866b6d4.

Command (m for help): n  새로운 파티션 생성하기 
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p  주요 파티션이 디폴트 값
Partition number (1-4, default 1): 맨 앞 first sector가 디폴트 값
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G 용량 설정
Partition 1 of type Linux and of size 2 GiB is set   이런 과정을 반복해서 나눠준다.

이후 확장 파티션 생성

Command (m for help): p 

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5866b6d4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    12584959     2097152   83  Linux
/dev/sdb4        12584960    41943039    14679040    5  Extended

Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (12587008-41943039, default 12587008):
Using default value 12587008
Last sector, +sectors or +size{K,M,G} (12587008-41943039, default 41943039): +2G
Partition 5 of type Linux and of size 2 GiB is set

이후 w를 누르고 나와서 partprobe를 사용해서 파티션 정보를 시스템과 일치시켜준다.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe /dev/sdb

이후 주 파티션인 sdb1부터 3까지 ext4로 포맷해주기 

[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

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

확장 파티션인 sdb5 ~  8을 xfs로 포맷해주기

[root@localhost ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

이후 디렉토리를 생성해서 수동 마운트 해주기

[root@localhost ~]# mkdir /mnt/disk{1..3}
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1

마운트 및 파일 시스템 확인해보기

[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   60G  0 disk
├─sda1   8:1    0    4G  0 part [SWAP]
└─sda2   8:2    0   56G  0 part /
sdb      8:16   0   20G  0 disk
├─sdb1   8:17   0    2G  0 part /mnt/disk1
├─sdb2   8:18   0    2G  0 part /mnt/disk2
├─sdb3   8:19   0    2G  0 part /mnt/disk3
├─sdb4   8:20   0    1K  0 part
├─sdb5   8:21   0    2G  0 part
├─sdb6   8:22   0    2G  0 part
├─sdb7   8:23   0    2G  0 part
└─sdb8   8:24   0    2G  0 part
sr0     11:0    1 1024M  0 rom

[root@localhost ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda2      xfs        56G  4.4G   52G   8% /
devtmpfs       devtmpfs  985M     0  985M   0% /dev
tmpfs          tmpfs    1000M     0 1000M   0% /dev/shm
tmpfs          tmpfs    1000M  9.3M  991M   1% /run
tmpfs          tmpfs    1000M     0 1000M   0% /sys/fs/cgroup
tmpfs          tmpfs     200M   12K  200M   1% /run/user/42
tmpfs          tmpfs     200M     0  200M   0% /run/user/0
/dev/sdb1      ext4      2.0G  6.0M  1.8G   1% /mnt/disk1
/dev/sdb2      ext4      2.0G  6.0M  1.8G   1% /mnt/disk2
/dev/sdb3      ext4      2.0G  6.0M  1.8G   1% /mnt/disk3

umount -a를 이용해 한꺼번에 마운트 해제도 가능하다.

[root@localhost ~]# umount -a
umount: /run/user/42: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /sys/fs/cgroup/systemd: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /sys/fs/cgroup: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /run: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /dev: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

vi 편집기를 이용해 /etc/fstab 에 장치에 대한 정보를 적고 마운트 하는 방법도 있다.

[root@localhost ~]# vi /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Feb 21 14:50:32 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=231c776b-3197-4e9f-a142-6b80be0ca930 /                       xfs     defaults        0 0
UUID=88f82736-89b0-49e6-88c5-165c88bcc5bf swap                    swap    defaults        0 0
# 장치명      마운트위치  파일시스템      옵션    덤프여부  파일시스템체크 순서
sdb1의 uid    /mnt/disk1      xfs       defaults      1                1
/dev/sdb2     /mnt/disk2      xfs       defaults      1                1
~                                                                           

:wq
mount -a

스왑 메모리

swap : 디스크 영역을 메모리처럼 사용할 수 있도록 해주는 방법

가상 메모리 = 물리 메모리 + 스왑 메모리

 

스왑 메모리를 사용하는 과정:

1. 현재 메모리에 p1 p2 p3 사용중

2. 메모리는 모두 사용중

3. 새로운 p4를 메모리에 올려야 할 경우

4. 기존 프로세스 중에서 가장 오래되고 중요도가 적은 프로세스를 스왑 영역으로 전환

5. 기존 메모리에 공간이 남게 된다.

6. 남는 메모리 영역에 새로운 p4를 올려서 사용

 

이런 과정을 거치기때문에 실제 보유한 용량보다 더 큰 용량을 사용할 수 있는 장점이 있다.

 

스왑 메모리 명령어

free : 스왑 공간 확인

mkswap 파티션명 : 스왑 파일 시스템

swapon 파티션명 : 수동 스왑 마운트

swapoff 파티션명 : 수동 스왑 마운트 해제

swapon -a : 설정된 스왑 마운트

swapoff -a : 모든 스왑 마운트 해제

 

스왑 메모리 실습 

이번엔 fdisk 옵션에서 t command를 사용, 1,2,3G로 각각 설정해주고 저장해준다.

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): t
Partition number (1-8, default 8): 1
Hex code (type L to list all codes): 83
Changed type of partition 'Linux' to 'Linux'

Command (m for help): t
Partition number (1-8, default 8): 2
Hex code (type L to list all codes): 83
Changed type of partition 'Linux' to 'Linux'

Command (m for help): t
Partition number (1-8, default 8): 3
Hex code (type L to list all codes): 83
Changed type of partition 'Linux' to 'Linux'

Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5866b6d4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4196351     2097152   83  Linux
/dev/sdb2         4196352     8390655     2097152   83  Linux
/dev/sdb3         8390656    12584959     2097152   83  Linux
/dev/sdb4        12584960    41943039    14679040    5  Extended
/dev/sdb5        12587008    16781311     2097152   83  Linux
/dev/sdb6        16783360    20977663     2097152   83  Linux
/dev/sdb7        20979712    25174015     2097152   83  Linux
/dev/sdb8        25176064    29370367     2097152   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe /dev/sdb

스왑 파일 시스템으로 포맷하고 마운트했을 때 달라지는 스왑 용량을 free로 확인하기

[root@localhost ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=1bb3e8bd-8e05-430d-8fbc-9fe2cf51b344
[root@localhost ~]# mkswap /dev/sdb2
mkswap: /dev/sdb2: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=8cd13e52-92e9-49c4-8eb0-fe29c36bec77
[root@localhost ~]# mkswap /dev/sdb3
mkswap: /dev/sdb3: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=b812f351-7746-48b3-8747-dcbcad7179d9
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      428068     1150508        9608      469124     1409300
Swap:       4194300           0     4194300
[root@localhost ~]# swapon /dev/sdb1
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      429604     1148956        9608      469140     1407752
Swap:       6291448           0     6291448

 

'클라우드 > 리눅스' 카테고리의 다른 글

리눅스 | 서비스 관리 / systemd , log  (0) 2022.03.02
리눅스 | PV, VG, LV  (0) 2022.02.25
작업 예약 - cron  (0) 2022.02.24
vi 에디터 명령어  (0) 2022.02.21
파일 입출력 명령어  (0) 2022.02.18
Comments