OS | Disk | Core | Mem | 수량 |
---|---|---|---|---|
Ubuntu 24.04 LTS | / 25G /prox_storage 500G | 2Core | 8G | 2대 |
apt update -y && apt upgrade -y
systemctl daemon-reload
hostnamectl set-hostname --static pve-storage01
hostnamectl set-hostname --static pve-storage02
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
===
apt install -y nfs-common nfs-kernel-server rpcbind
chmod 707 /pve_storage
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
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
===