파티션 생성
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 100G 0 disk
└─vda1 253:1 0 100G 0 part
vdb 253:2 0 50G 0 disk
vdc 253:16 0 200G 0 disk
디스크 장치의 이름은 vda, vdb, vdc...와 같이 인스턴스에 블록 스토리지를 연결한 순서대로 알파벳 문자가 하나씩 올라가게 됩니다.
(1) $ fdisk [장치]
- 추가한 dev/sdb 와 /dev/sdc 에 대하여 진행.
( /dev/sdc 에 대해서만 작성함. )
# sudo fdisk /dev/vdc
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 0x6c636fa0.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-419430399, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): 20000 0000
Partition 1 of type Linux and of size 95.4 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (200000001-419430399, default 200001536):
Using default value 200001536
Last sector, +sectors or +size{K,M,G} (200001536-419430399, default 419430399):
Using default value 419430399
Partition 2 of type Linux and of size 104.6 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
(2) 파티션 생성된 것 확인 : $ lsblk
파티션 포맷
일반적으로 Linux에서 파티션의 이름은 '장치이름 + 숫자' 형태입니다.
(1) mkfs -t [파일시스템 타입] [파티션 명]
# mkfs -t ext4 /dev/vdb1
# mkfs -t ext4 /dev/vdc1
# mkfs -t ext4 /dev/vdc2
디스크 마운트
파일 시스템까지 만든 디스크에는 마운트 과정을 거쳐야 접근할 수 있습니다. 간편하게 mount 명령어로 디스크를 마운트할 수도 있으나 인스턴스가 재부팅되면 마운트 해제(unmount)됩니다. 이 예제에서는 /etc/fstab 파일에 마운트할 디스크를 추가하여 인스턴스 부팅 과정에서 자동으로 마운트하는 방법을 설명합니다.
아래는 /etc/fstab 파일 내용을 출력한 것입니다.
$ cat /etc/fstab
# Created by anaconda on Wed Apr 22 09:05:25 2020
#
# 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=6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02 / xfs defaults 0 0
디스크 하나가 이미 등록된 것을 확인할 수 있습니다. 등록된 디스크는 인스턴스의 기본 디스크 (root disk)입니다.
디스크를 등록하려면 디스크의 장치 고유 ID가 필요합니다. 장치 고유 아이디는 아래와 같이 blkid 명령어로 확인할 수 있습니다.
$ sudo blkid /dev/vdb1
/dev/vdb1: UUID="874f6a1a-39f8-4811-8861-781661a38175" TYPE="ext4"
$ sudo blkid /dev/vdc1
/dev/vdc1: UUID="27af046b-6c00-47c1-9e04-ef28774e3f43" TYPE="ext4"
$ sudo blkid /dev/vdc2
/dev/vdc2: UUID="d83d271c-8bc8-45f3-b7d2-1b854afaee47" TYPE="ext4"
출력 내용 중 UUID에 해당하는 항목이 바로 장치 고유 ID입니다.
마운트 대상 디렉터리를 생성합니다. 마운트 대상 디렉터리는 어떠한 것이라도 상관없습니다. 이 예제에서는 /mnt/vdb로 하겠습니다.
$ mkdir /disk0
$ mkdir /disk1
$ mkdir /disk2
마운트 대상 디렉터리가 준비되었으면 다음과 같이 디스크를 등록합니다.
$ echo "UUID=874f6a1a-39f8-4811-8861-781661a38175 /mnt/vdb1 ext4 defaults,nodev,noatime,nofail 1 2" >> /etc/fstab
$ echo "UUID=27af046b-6c00-47c1-9e04-ef28774e3f43 /mnt/vdc1 ext4 defaults,nodev,noatime,nofail 1 2" >> /etc/fstab
$ echo "UUID=d83d271c-8bc8-45f3-b7d2-1b854afaee47 /mnt/vdc2 ext4 defaults,nodev,noatime,nofail 1 2" >> /etc/fstab
[참고] 위 예제에서는 볼륨 마운트에 실패하더라도 부팅이 될 수 있도록 nofail 옵션을 추가하였습니다.
마지막으로 /etc/fstab의 내용을 반영해야 합니다. mount -a 명령어로 /etc/fstab에 등록된 모든 디스크를 마운트합니다.
# mount -a
df 명령어로 정상적으로 마운트됐는지 확인합니다.
$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.5M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 100G 2.3G 98G 3% /
tmpfs 379M 0 379M 0% /run/user/1000
/dev/vdb1 50G 53M 47G 1% /disk0
/dev/vdc1 94G 61M 89G 1% /disk1
/dev/vdc2 103G 61M 98G 1% /disk2
새 파티션이 마운트되어 있는 것을 확인할 수 있습니다.
[참고] 위의 과정을 한 번에 처리하려면 아래의 스크립트를 참고하시기 바랍니다. 아래의 스크립트는 CentOS 7에서 테스트한 것입니다.
#!/bin/bash
DEVICES=(`lsblk -s -d -o name,type | grep disk | awk '{print $1}'`)
for DEVICE_NAME in ${DEVICES[@]}
do
MOUNT_DIR=/mnt/$DEVICE_NAME
FS_TYPE=xfs
mkdir -p $MOUNT_DIR
echo -e "n\np\n1\n\n\nw" | fdisk /dev/$DEVICE_NAME
PART_NAME="/dev/${DEVICE_NAME}1"
mkfs -t $FS_TYPE $PART_NAME > /dev/null
UUID=`blkid $PART_NAME -o export | grep "^UUID=" | cut -d'=' -f 2`
echo "UUID=$UUID $MOUNT_DIR $FS_TYPE defaults,nodev,noatime,nofail 1 2" >> /etc/fstab
mount -a
done
[참고] CentOS6, Debian, Ubuntu는 기본 파일 시스템이 ext4 입니다. 따라서 아래의 스크립트를 사용해야 합니다.
#!/bin/bash
DEVICES=(`lsblk -s -d -o name,type | grep disk | awk '{print $1}'`)
for DEVICE_NAME in ${DEVICES[@]}
do
MOUNT_DIR=/mnt/$DEVICE_NAME
FS_TYPE=ext4
mkdir -p $MOUNT_DIR
echo -e "n\np\n1\n\n\nw" | fdisk /dev/$DEVICE_NAME
PART_NAME="/dev/${DEVICE_NAME}1"
mkfs -t $FS_TYPE $PART_NAME > /dev/null
UUID=`blkid $PART_NAME -o export | grep "^UUID=" | cut -d'=' -f 2`
echo "UUID=$UUID $MOUNT_DIR $FS_TYPE defaults,nodev,noatime,nofail 1 2" >> /etc/fstab
mount -a
done
※ 출처 : NHN Cloud 사용 가이드, https://docs.toast.com/ko/Storage/Block%20Storage/ko/overview/
'OS > Linux Server' 카테고리의 다른 글
[Shell Programming] 5. Bash shell Script (0) | 2022.03.02 |
---|---|
[Shell Programming] 4. Bash shell의 Rules(2) (0) | 2022.02.21 |
[Linux] CentOS 7 부팅 시 자동 시작 명령어 혹은 스크립트 적용 (0) | 2022.02.16 |
[Shell Programming] 3. Bash shell의 Rules (0) | 2022.02.15 |
[Shell Programming] 2. Bash shell과 변수 (0) | 2022.02.11 |