본문 바로가기
Linux BSP

[Linux BSP] NFS 서버 설치해서 우분투-라즈베리파이 공유폴더 사용하기

by TYB 2024. 1. 31.
반응형
pi@pi08:/mnt $ cat nfs.sh
#!/bin/bash
#vi ~/.profile
#if [ -f /mnt/nfs.sh ] ; then
#    . /mnt/nfs.sh
#fi

SERVIP=10.10.141.30
if ! df | grep lect_nfs > /dev/null ; then
        ping -c 1 $SERVIP > /dev/null
        if [ $? -eq 0 ] ; then
                        sudo mount -t nfs $SERVIP:/srv/nfs /mnt/lect_nfs
                        df | grep lect_nfs
        fi
fi


NFS


ubuntu NFS 서버 설치
=================================
~$sudo apt-get install nfs-common nfs-kernel-server rpcbind
~$sudo mkdir /srv/nfs
~$sudo chmod 777 /srv/nfs
~$sudo vi /etc/exports
-----------------------
/srv/nfs    10.10.15.0/24(rw,sync)
-----------------------

read write 모두 가능하고 nfs에서 동작하는 그대로 harddisk와 동기화시키겠다.
~$sudo service nfs-kernel-server restart
~$sudo exportfs
/srv/nfs        10.10.15.0/24(rw,sync)


라즈베리파이에서 NFS 설치 및 마운트 (파일 읽고 쓰기)
~$sudo apt-get install nfs-common nfs-kernel-server rpcbind
~$sudo mkdir /mnt/ubuntu_nfs

저장공간을 하나 만들어주는거임.( 마운트 포인트  라고도 함.)
~$sudo mount -t nfs 10.10.15.78:/srv/nfs /mnt/ubuntu_nfs   //78:ubuntu서버 IP

~$df


-------------
10.10.15.78:/srv/nfs 153189376 11469824 133865472   8% /mnt/ubuntu_nfs
-------------
~$sudo cd /mnt/ubuntu_nfs  ==> 10.10.15.50 서버의 /srv/nfs에 접속됨


 

ubuntu와 라즈베리파이 간 연결되어 있는 공유폴더인 nfs저장공간에 처음에는 아무것도 없는 모습이었다가 ubuntu에서 해당 위치에 a.txt 를 touch(아래 사진)해주고 나서 다시 ls를 하면 있는 모습

 

ubuntu의 /srv/nfs/와 라즈베리파이의  /srv/nfs/가 연결되어 있다는걸 확인 가능함.

 

 

그래서 ubuntu에서 라즈베리파이용 arm파일로 컴파일 후 실행하면 라즈베리파이의 해당 공간에도 그 파일이 들어가 있음.

고로 그 위치로 가서 실행만 시켜주면 됨~

arm-linux-gnueabihf-gcc main.c -o main_arm

 

그런데 재부팅 되면 이 연결이 끊어짐.

 

그래서 


pi@pi08:~ $ cat /etc/fstab
proc            /proc           proc    defaults          0       0
PARTUUID=921b283c-01  /boot/firmware  vfat    defaults          0       2
PARTUUID=921b283c-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

여기에 등록하면 부팅할때 자동으로 실행되도록 할 수가 있는데, 순서가 꼬여 네트워크 설정도 안됬는데 이걸 하고 있으면 부팅이 안됨. 고로 우리는 쉘스크립트로 명령어를 작성해서 실행시키도록 하겠다.

 

pi@pi08:~ $ sudo cat /mnt/nfs.sh
#!/bin/bash
#vi ~/.profile
#if [ -f /mnt/nfs.sh ] ; then
#    . /mnt/nfs.sh
#fi

SERVIP=10.10.15.78
if ! df | grep lect_nfs > /dev/null ; then
        ping -c 1 $SERVIP > /dev/null
        if [ $? -eq 0 ] ; then
                        sudo mount -t nfs $SERVIP:/srv/nfs /mnt/ubuntu_nfs
                        df | grep ubuntu_nfs
        fi
fi

#!는 console bash 등 어떤 쉘로 해석할지를 정해주는거

server ip의 shell script ip주면됨

 

 

 

 

 

vi ~/.profile 

G O누르고 마우스 오른쪽을 누르고 붙여넣기

제일 아래 부분이 추가한 부분 

pi@pi08:~ $ cat ~/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

if [ -f /mnt/nfs.sh ] ; then
    . /mnt/nfs.sh
fi

 

duplicate session해서 새로운 창 열어서 실행시킨 후에 

 

df쳐보면 nfs가 실행중임을 확인할 수 있음.

 

 

 

NFS 마운트 해제
~$sudo umount /mnt/ubuntu_nfs

 

라즈베리파이의 하드 공간이 부족할 때, 사용해주면 좋다! 

다만 네트워크로 연결되어 있으므로, 네트워크가 동작하는 상황에서 필요한 파일만 두고 쓰면 되겠다.

 

 

 


어느 순간

Linux pi08 6.1.0-rpi7-rpi-v7l #1 SMP Raspbian 1:6.1.63-1+rpt1 (2023-11-24) armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Feb  8 18:43:52 KST 2024 on tty1
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
10.10.15.78:/srv/nfs 153189376 27384832 117949440  19% /mnt/ubuntu_nfs

 

df로 확인하면 mount는 되어있는데, 정작 해당 경로로 들어가서 ls하면 파일이 안보임.

이 오류가 떠서 그런거 같다고 판단은 하는데 이유는 모르겠음. 

 

반응형