5 min read

디스크 마운트(feat. ubuntu)

디스크 마운트(feat. ubuntu)
Photo by Samsung Memory / Unsplash

서버나 VM에 디스크를 추가 하면 리눅스는 '마운트'라는 개념으로 디스크를 추가한다.

root@blue:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop1     7:1    0  55.5M  1 loop /snap/core18/2979
loop2     7:2    0 100.4M  1 loop /snap/oracle-cloud-agent/106
loop3     7:3    0  50.9M  1 loop /snap/snapd/25577
loop4     7:4    0  48.1M  1 loop /snap/snapd/25935
loop5     7:5    0  55.5M  1 loop /snap/core18/2999
sda       8:0    0  46.6G  0 disk 
├─sda1    8:1    0  45.6G  0 part /
├─sda14   8:14   0     4M  0 part 
├─sda15   8:15   0   106M  0 part /boot/efi
└─sda16 259:0    0   913M  0 part /boot
sdb       8:16   0   100G  0 disk 

이런식으로 sdb 라는 디스크가 인식된다

root@blue:~# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.39.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


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-209715199, default 2048):      # 기본값으로 한다. 엔터
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-209715199, default 209715199): 

Created a new partition 1 of type 'Linux' and of size 100 GiB.
Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: Y  #그전에 생성한 이력이 있어서...

The signature will be removed by a write command.

Command (m for help): t   #파티션 타입을 설정하겠다.
Selected partition 1
Hex code or alias (type L to list all): 8E   #파티션 타입중 Linux LVM 을 선택
Changed type of partition 'Linux' to 'Linux LVM'.

Command (m for help): w    #저장하고 나가기
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@blue:~# 

fisk 파티션 설정

추가한 디스크를 fdisk로 파티션을 설정해줘야 한다.
파티션을 나누는 경우보다는 디스크를 묶는 경우가 많기 때문에 Linux LVM을 선택을 많이 한다. 이 형식은 디스크를 운영중에도 병합할 수 있는 특징이 있다.

root@blue:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda       8:0    0  46.6G  0 disk 
├─sda1    8:1    0  45.6G  0 part /
├─sda14   8:14   0     4M  0 part 
├─sda15   8:15   0   106M  0 part /boot/efi
└─sda16 259:0    0   913M  0 part /boot
sdb       8:16   0   100G  0 disk 
└─sdb1    8:17   0   100G  0 part       #sdb1 이라는 디스크가 생성
root@blue:~# mkfs -t ext4 /dev/sdb1     # ext4로 포맷
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done                            
Creating filesystem with 26214144 4k blocks and 6553600 inodes
Filesystem UUID: 1e01def6-4caa-480b-a532-c237683f5a48    #여기에 이미 UUID가생성
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872

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

root@blue:~# 
root@blue:~# lsblk -f               #f옵션을 주면 파티션타입과 UUID도 볼수 있다.
NAME    FSTYPE   FSVER LABEL           UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                                        
├─sda1  ext4     1.0   cloudimg-rootfs 9daa54fe-5a0a-41c0-88c2-c466a2f56271   30.3G    31% /
├─sda14                                                                                    
├─sda15 vfat     FAT32 UEFI            21BD-0A23                              98.2M     6% /boot/efi
└─sda16 ext4     1.0   BOOT            68e0fdc6-1e8b-4a08-a760-bc54f2137f8c  664.9M    17% /boot
sdb                                                                                        
└─sdb1  ext4     1.0                   1e01def6-4caa-480b-a532-c237683f5a48                
root@blue:~# 

파티션이 생성되었다./dev/sdb1
B디스크 디바이스에 sdb1이라는 파티션이라는뜻이다.

UUID(Universally Unique Identifier)를 강조하는 이유는 이 값으로 마운트를 해야 후에 디스크 에러가 생길 확률이 적어진다. /dev/sdb1를 마운트 하면 재부팅시에 오류가 생길 수 있기 때문이다.

포맷까지 끝났으면 마운트를 해줘야 한다.

UUID=새로만든UUID를 넣어준다 defaults 1 2
1e01def6-4caa-480b-a532-c237683f5a48

root@blue:~# mkdir /docker   #마운트할 디렉토리 생성
root@blue:~# mount -a        #fstab 에 적은 마운트 값 적용
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
root@blue:~# systemctl daemon-reload    #시키는 대로 해줘라.
root@blue:~# mount -a                  #아무런 오류가 없으면 정상작동했다는 뜻
root@blue:~# df -hT                  #시스템확인하면
Filesystem         Type      Size  Used Avail Use% Mounted on
tmpfs              tmpfs      96M  1.9M   94M   2% /run
efivarfs           efivarfs  256K   35K  217K  14% /sys/firmware/efi/efivars
/dev/sda1          ext4       45G   14G   31G  32% /
tmpfs              tmpfs     478M     0  478M   0% /dev/shm
tmpfs              tmpfs     5.0M     0  5.0M   0% /run/lock
/dev/sda16         ext4      881M  154M  665M  19% /boot
/dev/sda15         vfat      105M  6.2M   99M   6% /boot/efi
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/b00b3dad0e6cb311e4ea42a97f1896a4d4a918e282290820c37a69b51e1e3cda/merged
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/de292706bae05840b24cbf9b86538dcd67ed02497eb63db8094a20a88f51556e/merged
prox:/mnt/pve/main nfs4      234G   67G  155G  31% /mnt/main
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/7e98fa593f6ae1b98216d4b2643785fc59cb86995c368c05b849119a3e3157b3/merged
prox:/mnt/pve/ssd  nfs4      469G  337G  108G  76% /mnt/ssd
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/23bf542acfe55b6f1052e564a22a44a55627093ebb63561374bae5acc55de7ae/merged
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/9233c453eff1571420f034fa4c0709230852ded6c4aac04e3cd0a974fa44a5f6/merged
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/912f799a62bd87942afb298b1aa9993badbf989ca1934c21f0bd50171f3a4932/merged
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/3469a15389b0899b59bb20670f25467eb896b37436a2ad4b50a0f5a56a4dcc45/merged
overlay            overlay    45G   14G   31G  32% /var/lib/docker/overlay2/e4651c06e16c740f8d594dcaa04e9619cf7fcd8202fc8254ae08ce56556ba72b/merged
tmpfs              tmpfs     478M  4.0K  478M   1% /var/lib/docker/containers/2230eab6daec893ed1887f10c4526e75b765120e335809e4fb6cf4ce86fa26b4/mounts/secrets
tmpfs              tmpfs      96M   12K   96M   1% /run/user/0
/dev/sdb1          ext4       98G   24K   93G   1% /docker  #여기에 마운트 확인
root@blue:~# 

이러면 마운트가 완료된 것이다.

위에도 얘기했지만 Linux LVM형식은 운영중에도 lvextend명령어로 확장 가능하다.

이 형식이 아니면 서비즈 중단->DB중단-> 디스크umount->디스크 추가-> 디스크 확장-> 디스크 mount-> DB기동-> 서비스 기동순으로 작업을 해줘야 한다. 안그러면 사용중인 디스크라서 안된다고 계속 오류 발생

그러면 pv, vg, lv 개념까지 알아야 한다....
디스크 추가-> pv생성> vg생성>lv생성>확장