최근 오픈 스택에 볼륨을 여러 인스턴스가 공유하는 manila 프로젝트를 확인 중인데 그 안의
기술중 LVM과 NFS를 사용하여 공유 볼륨을 만들고 운영 하는게 표준 mitaka 설치 메뉴얼에 올라왔다.
우분투 OS 설치된 서버로 NFS를 바탕으로 LVM 공유하는 설정을 해보자.
# nfs-kernel-server 설치
root@ubuntu:~# apt-get install nfs-kernel-server
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 패키지를 더 설치할 것입니다:
keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind
제안하는 패키지:
open-iscsi watchdog
다음 새 패키지를 설치할 것입니다:
keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common nfs-kernel-server
rpcbind
0개 업그레이드, 7개 새로 설치, 0개 제거 및 186개 업그레이드 안 함.
460 k바이트 아카이브를 받아야 합니다.
이 작업 후 2,049 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
# 공유 볼륨 생성
root@ubuntu:~# lvcreate -L 10GB -n add_data jyh_test
Logical volume "add_data" created
root@ubuntu:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
add_data jyh_test -wi-a---- 10.00g
# 볼륨 포맷 및 마운트
root@ubuntu:~# mkfs.ext4 /dev/mapper/jyh_test-add_data
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
root@ubuntu:~# mount /dev/jyh_test/add_data /mnt/
root@ubuntu:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 30G 1.2G 27G 5% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
udev devtmpfs 986M 4.0K 986M 1% /dev
tmpfs tmpfs 200M 464K 199M 1% /run
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 997M 0 997M 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
/dev/mapper/jyh_test-add_data ext4 9.8G 23M 9.2G 1% /mnt
root@ubuntu:~# cd /mnt/
root@ubuntu:/mnt# touch test_file
root@ubuntu:/mnt# ls
lost+found test_file
# 접속 허용할 네트워크 및 권한 설정 & 서비스 재시작
root@ubuntu:/mnt# cat /etc/exports | grep 192
/mnt 192.168.22.0/24(rw,no_root_squash)
root@ubuntu:/mnt# service nfs-kernel-server start
* Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.22.0/24:/mnt".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
[ OK ]
* Starting NFS kernel daemon
# 클라이언트 유저에서 nfs마운트하기 위한 패키지 설치
root@smileserv-desktop:~# apt-get install nfs-common
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
libhdb9-heimdal libkdc2-heimdal linux-image-3.13.0-66-generic
linux-image-3.13.0-68-generic linux-image-3.13.0-70-generic
linux-image-3.13.0-71-generic linux-image-3.13.0-73-generic
linux-image-3.13.0-74-generic linux-image-3.13.0-76-generic
linux-image-3.13.0-77-generic linux-image-3.13.0-79-generic
linux-image-extra-3.13.0-66-generic linux-image-extra-3.13.0-68-generic
linux-image-extra-3.13.0-70-generic linux-image-extra-3.13.0-71-generic
linux-image-extra-3.13.0-73-generic linux-image-extra-3.13.0-74-generic
linux-image-extra-3.13.0-76-generic linux-image-extra-3.13.0-77-generic
linux-image-extra-3.13.0-79-generic
Use 'apt-get autoremove' to remove them.
다음 패키지를 더 설치할 것입니다:
keyutils libgssglue1 libnfsidmap2 libtirpc1 rpcbind
제안하는 패키지:
open-iscsi watchdog
다음 새 패키지를 설치할 것입니다:
keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind
0개 업그레이드, 6개 새로 설치, 0개 제거 및 134개 업그레이드 안 함.
375 k바이트 아카이브를 받아야 합니다.
이 작업 후 1,524 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
# 클라이언트 유저에서 마운트
root@smileserv-desktop:~/Desktop# mkdir share_10G
root@smileserv-desktop:~/Desktop# mount -t nfs 192.168.22.232:/mnt share_10G/
root@smileserv-desktop:~/Desktop# cd share_10G/
root@smileserv-desktop:~/Desktop/share_10G# ls
lost+found test_file
# 확인
# 클라이언트 유저가 임의의 파일 생성
root@smileserv-desktop:~/Desktop/share_10G# touch user_create_file
root@smileserv-desktop:~/Desktop/share_10G# ls
lost+found test_file user_create_file
# 서버단에서 유저가 생성한 파일 확인
root@ubuntu:/mnt# ls
lost+found test_file user_create_file