[Ubuntu 24.04] nfs 스토리지 서버 만들기

mimic1995·2024년 7월 31일
0

서버 사양

OSDiskCoreMem수량
Ubuntu 24.04 LTS/ 25G
/prox_storage 500G
2Core8G2대

서버 기본 설정

패키지 업그레이드

apt update -y && apt upgrade -y 
systemctl daemon-reload

호스트명 변경

hostnamectl set-hostname --static pve-storage01
hostnamectl set-hostname --static pve-storage02

NFS 설치 및 설정

디스크 파티션

parted -l 
===
Error: /dev/vdb: unrecognised disk label
Model: Virtio Block Device (virtblk)                                      
Disk /dev/vdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 26.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
14      1049kB  5243kB  4194kB                     bios_grub
15      5243kB  116MB   111MB   fat32              boot, esp
16      116MB   1074MB  957MB   ext4               bls_boot
 1      1075MB  26.8GB  25.8GB  ext4
===

/dev/vdb 를 스토리지 디스크로 이용합니다.

parted /dev/vdb
===
GNU Parted 3.6
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
(parted) mkpart primary 0 100%
Warning: The resulting partition is not properly aligned for best performance: 34s % 2048s != 0s
Ignore/Cancel? Ignore                                                     
(parted) p                                                                
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      17.4kB  537GB  537GB               primary

(parted) quit                                                             
Information: You may need to update /etc/fstab.
===
mkfs.ext4 /dev/vdb1
===
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 131071991 4k blocks and 32768000 inodes
Filesystem UUID: b3bfaf27-7d99-4afc-a242-2d1f6dcd0ef0
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000

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

마운트할 디렉터리 생성 후 마운트 설정을 fstab에 고정합니다.

mkdir /pve_storage
blkid /dev/vdb1 | awk '{ print $2 }'
===
UUID="b3bfaf27-7d99-4afc-a242-2d1f6dcd0ef0"
===
blkid /dev/vdb1 | awk '{ print $2 }' >> /etc/fstab
vi /etc/fstab
===
# 맨 아래 추가
UUID=b3bfaf27-7d99-4afc-a242-2d1f6dcd0ef0       /pve_storage    ext4    defaults        0 0
===
mount -a
df -TH | grep pve_storage
===
/dev/vdb1      ext4   492G   28K  467G   1% /pve_storage
===

nfs 패키지 다운로드

apt install -y nfs-common nfs-kernel-server rpcbind

공유할 스토리지 마운트 폴더 권한 변경

chmod 707 /pve_storage

nfs 공유 폴더 설정파일 수정

vi /etc/exports
===
/pve_storage	allow_ip(rw,sync,subtree_check,no_root_squash)
# 허용할 ip 또는 대역 기재 후 공백이나 문자열 없이 바로 옵션 괄호와 연결해서 써야 합니다.
===

ip는 한 개의 공인 ip를 기재해도 되고, 1.1.0.0/24 이런 식으로 비트 대역을 허용해도 됩니다.
각 옵션은 아래와 같습니다.

rw : Read Write 약자로 읽고 쓰기가 가능하도록 설정합니다. 읽기만 하려면 ro로 설정하면 됩니다.
sync : 동기화 방식으로 여부로 한 작업이 진행되면 해당 작업 완료시까지 다음 작업이 진행되지 않습니다. 비동기화 방식을 원하시면 async로 하시면 성능은 올라가지만 데이터 손실의 발생이 높아지고 안정성이 떨어집니다.
no_subtree_check : NFS는 기본적으로 파일이 요청된 공유의 하위 디렉터리에 있는지 확인(subtree_check)하지만 이 설정을 넣으면 파일의 하위 디렉터리를 검사하지 않도록 합니다. 상위 디렉터리만 존재하는 경우 성능향상이 될 수 있습니다.
no_root_squash : 기본적으로 클라이언트 사용자는 nobody 권한으로 액세스(root_squash)되지만 해당 옵션을 통해 클라이언트의 루트 사용자가 NFS 서버에서 동일한 루트 권한을 갖게 됩니다.

설정이 완료되었다면 적용합니다.

exportfs -ra

설정에 이상이 없다면 시스템 실행과 동시에 부팅 시 자동실행 되도록 등록합니다.

systemctl enable nfs-server --now

방화벽 허용 (ufw)

systemctl start ufw
ufw enable
ufw allow from 1.1.1.0/32 to any port nfs
ufw status verbose
===
Status: active
...
To                         Action      From
--                         ------      ----
2049                       ALLOW IN    1.1.1.0/32
===
profile
Raiju Hantu Goryo Obake

0개의 댓글