ucloud server NFS 설정가이드 v1.1 2013. 6
목차 1. 개요... 4 1.1. Linux NFS 개요... 4 1.2. ucloud NFS 구성... 5 2. NFS 서버구성... 6 2.1. NFS 서버 VM 생성... 6 2.1.1. VM 생성... 6 ucloud Marketplace 의상품신청기능을이용하여신규 NFS Server VM 을생성한다.... 6 2.2. 디스크추가... 7 2.2.1. 디스크생성... 7 2.2.2. 디스크파티션설정... 7 2.2.3. LVM 설정... 9 2.2.4. 포맷및마운트... 10 2.2.5. fstab 수정... 11 2.3. NFS 서버설정... 11 2.3.1. exports 파일설정... 11 2.3.2. exports 파일예제... 11 2.3.3. 데몬재시작... 11 2.4. NFS 서버옵션... 12 2.5. 디스크확장... 12 2.5.1. 디스크추가및파티션... 12 2.5.2. 디스크사이즈변경... 12 3. NFS 클라이언트설정... 14 3.1. NFS Mount... 14 2 / 14
3.2. NFS Mount 예제... 14 3.3. Mount 옵션... 14 3.4. 자동마운트설정... 14 3 / 14
1. 개요 본문서는 ucloud server 상에서 VM 기반의 NFS Server 를구성하려는사용자에게 제공되는가이드문서이다. 1.1. Linux NFS 개요 NFS(Network File System) 란리눅스머신에서이더넷기반으로동작하는가장기본적인공유파일시스템중의하나로서버 / 클라이언트모델로동작하는스토리지프로토콜이다. 그림 1. NFS 를이용한공유스토리지구성도 각클라이언트들이 NFS 서버의공유폴더 (Export Path) 를마운트하게되면자신의 로컬파일시스템을사용하는것처럼여러클라이언트와파일을공유하여사용할수 있다. 4 / 14
1.2. ucloud NFS 구성 ucloud Marketplace 의상품신청기능을이용하여 NFS Server 를쉽고빠르게구성할수있다. URL: https://ucloudbiz.olleh.com/portal/ktcloudportal.epc.productintro.ucloud_server_image.html 그림 2. ucloud Marketplace 화면 생성된 NFS Server VM 은같은계정내 VM 에서접속하여사용할수있다. 그림 3. ucloud NFS 시스템구성도 5 / 14
2. NFS 서버구성 2.1. NFS 서버 VM 생성 2.1.1. VM 생성 ucloud Marketplace의상품신청기능을이용하여신규 NFS Server VM을생성한다. 그림 4. ucloud Marketplace 에서 NFS VM 생성화면 6 / 14
2.2. 디스크추가 2.2.1. 디스크생성 ucloud server 관리콘솔에서 NFS Server VM 에추가디스크를생성한다. 그림 5. ucloud server 관리콘솔에서추가디스크신청화면 2.2.2. 디스크파티션설정 추가한디스크를확인한다. # fdisk l Disk /dev/xvda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/xvda1 * 1 13 104391 83 Linux /dev/xvda2 14 2610 20860402+ 8e Linux LVM Disk /dev/xvdb: 85.8 GB, 85899345920 bytes // 추가디스크확인 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/xvdb doesn't contain a valid partition table 7 / 14
디스크파티션을생성한다. # fdisk /dev/xvdb Command (m for help): n // 새파티션생성 Command action e extended p primary partition (1-4) p // Primary 파티션으로선택 Partition number (1-4): 1 // 파티션번호 (1) 선택 First cylinder (1-10443, default 1): // 디스크전체를생성하는파티션에할당 Using default value 1 Last cylinder or +size or +sizem or +sizek (1-10443, default 10443): Using default value 10443 파티션타입을설정한다. Command (m for help): t // 파티션타입설정 Selected partition 1 Hex code (type L to list codes): 8e // LVM 타입선택 Changed system type of partition 1 to 8e (Linux LVM) 생성한파티션을확인한다. Command (m for help): p // 생성한파티션확인 Disk /dev/xvdb: 85.8 GB, 85899345920 bytes 255 heads, 63 sectors/track, 10443 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/xvdb1 1 10443 83883366 83 Linux LVM 설정한파티션정보를저장하고종료한다. Command (m for help): w // 파티션정보저장 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 8 / 14
2.2.3. LVM 설정 디스크를 EXT3 와같은일반적인리눅스파일시스템으로설정해도상관없지만, 디스크추가확장이불가능해진다. 하지만리눅스의 LVM(Logical Volume Manager) 을이용하게되면볼륨크기를 동적으로증가시키는것이가능하기때문에추가디스크설정시 LVM 을이용하는 것이좋다. 그림 6. LVM 구성도 ( 출처 : http://docs.redhat.com) PV(Physical Volume) 를생성한다. # pvcreate /dev/xvdb1 // PV 생성 # pvs // PV 조회 PV VG Fmt Attr PSize PFree /dev/xvda2 VolGroup00 lvm2 a-- 19.88G 0 /dev/xvdb1 lvm2 a-- 80.00G 80.00G VG(Volume Group) 를생성한다. # vgcreate DataVol01 /dev/xvdb1 // VG 생성 # vgs // VG 조회 VG #PV #LV #SN Attr VSize VFree DataVol01 1 0 0 wz--n- 80.00G 80.00G VolGroup00 1 2 0 wz--n- 19.88G 0 9 / 14
LV(Logical Volume) 를생성한다. # lvcreate l 100%FREE n NFSLV DataVol01 // LV 생성 # lvs // VG 조회 LV VG Attr LSize Origin Snap% Move Log Copy% Convert NFSLV DataVol01 -wi-a- 80.00G 2.2.4. 포맷및마운트생성한 LV 를 EXT3 파일시스템으로포맷한다. # mkfs.ext3 /dev/datavol01/nfslv // 생성한 LV 포맷 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 10485760 inodes, 20970496 blocks 1048524 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 640 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 31 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 포맷한볼륨을 NFS Server VM 에마운트한다. # mkdir /data // 추가디스크를마운트할 /data 디렉토리생성 # mount /dev/datavol01/nfslv /data // 볼륨마운트 10 / 14
2.2.5. fstab 수정 NFS Server VM 이재부팅되더라도추가한디스크가자동으로마운트되도록 /etc/fstab 파일에다음내용을추가한다. /dev/datavol01/nfslv /data ext3 defaults 1 1 2.3. NFS 서버설정 2.3.1. exports 파일설정 /etc/exports 파일을이용하여 NFS 서버설정을할수있다. # vi /etc/exports 2.3.2. exports 파일예제예제 1) 1 개이상의웹서버에서읽기전용의이미지파일을공유하여사용하기위한 NFS 서버구성 /var/www/img *(ro,all_squash) 예제 2) 읽기 / 쓰기가빈번하게일어나는미디어파일을서로공유하여사용하기위한 NFS 서버구성 /data 172.27.0.0/16(rw,no_root_squash) 2.3.3. 데몬재시작 위의 exports 파일설정이완료되면 NFS 데몬을재시작하여설정을적용한다. #service nfs restart 11 / 14
2.4. NFS 서버옵션 exports 파일설정시다음옵션을이용하여다양한환경을구성할수있다. 옵션 설명 ro 읽기전용으로공유한다. ( 기본 ) rw 읽기 / 쓰기모드로공유한다. root_squash 클라이언트의 root 를익명사용자 (nobody) 로매핑한다. ( 기본 ) no_root_squash 클라이언트의 root 를서버의 root 로매핑한다. all_squash 모든사용자를익명사용자 (nobody) 로매핑한다. sync 클라이언트와서버간동기적통신을한다. ( 기본, 안전성향상 ) async 클라이언트와서버간비동기통신을한다. ( 속도향상 ) secure 마운트요청시포트를 1024 이하로한다. (1024 이하포트는 root 만설정가능, 기본 ) insecure 마운트요청시 1024 포트이상도허용한다. 2.5. 디스크확장 만약기존에쓰던디스크의여유공간이부족해디스크확장이필요한경우다음 절차를통해디스크크기를증가시킬수있다. 2.5.1. 디스크추가및파티션 먼저 ucloud server 관리콘솔에서추가디스크를신청후 LVM 방식으로파티션을 선언한다. ( 문서내 2.2.1 / 2.2.2 참조 ) 2.5.2. 디스크사이즈변경새롭게추가된디스크를 PV 로생성한다. # pvcreate /dev/xvdc1 // PV 생성 # pvs // PV 조회 PV VG Fmt Attr PSize PFree /dev/xvda2 VolGroup00 lvm2 a-- 19.88G 0 /dev/xvdb1 DataVol01 lvm2 a-- 80.00G 0 /dev/xvdc1 lvm2 a-- 80.00G 80.00G 기존에사용하던 VG 에새롭게생성한 PV 를추가시킨다. # vgextend DataVol01 /dev/xvdc1 // VG 에 PV 추가 # vgs // VG 조회 VG #PV #LV #SN Attr VSize VFree 12 / 14
DataVol01 2 1 0 wz--n- 159.99G 80.00G VolGroup00 1 2 0 wz--n- 19.88G 0 VG 크기가증가한것을확인할수있다. NFS 데몬을중지시키고, NFS 서버에마운트된볼륨을언마운트시킨다. # service nfs stop // NFS 데몬정지 # umount /data // 볼륨언마운트 LV 크기를변경한다. # lvextend -L+80G /dev/datavol01/nfslv EXT3 파일시스템의크기도증가시킨다. # e2fsck -f /dev/datavol01/nfslv // 변경된파일시스템체크 # resize2fs /dev/datavol01/nfslv // 파일시스템크기변경 사이즈가변경된볼륨을다시마운트후 NFS 데몬을시작한다. # mount /dev/datavol01/nfslv /data // 볼륨마운트 # service nfs start // NFS 데몬시작 13 / 14
3. NFS 클라이언트설정 3.1. NFS Mount 서버에서의설정이끝나면클라이언트에서는서버에서 exports 한 NFS Path 를마운트할수있다. #mount t nfs <nfs_server_ip>:<mount_path> <mount_point> -o <options> 3.2. NFS Mount 예제 IP 가 172.27.0.5 인 NFS 서버의 /data 를읽기전용으로마운트하는방법 # mount t nfs 172.27.0.5:/data /mnt o soft,retrans=10 3.3. Mount 옵션클라이언트가 NFS Mount 시에사용되는옵션이다. 옵션 설명 rsize=n NFS 서버로부터읽어오는바이트수를지정한다. ( 기본 1024) wsize=n NFS 서버로쓰기를할때사용하는바이트수를지정한다. ( 기본 1024) timeo=n 타임아웃이발생후재전송간격 retrans=n 타임아웃발생시재전송시도횟수 ( 기본 3) port=n NFS 서버와연결할때포트번호지정, 기본적으론 NFS 서버와질의후설정한다. fg 첫번째마운트시도시타임아웃되면바로중단한다. ( 기본 ) bg 첫번째마운트시도시타임아웃이되더라도백그라운드에서계속마운트시도를한다. hard 서버가응답할때까지계속마운트를시도하며, 응답이없는경우에도 umount 명령으로마운트를취소할수없다. ( 기본 ) soft 타임아웃발생시 retrains 값만큼만재전송을시도한다. umout 명령을통해마운트를취소할수도있다. 3.4. 자동마운트설정클라이언트가재부팅이되더라도자동으로마운트되도록하기위해서는 /etc/fstab 에다음설정을추가한다. 172.27.0.5:/data /mnt nfs defaults 0 0 14 / 14