Web Server Dengan Data di NFS (Network File System)

 Definisi

A network file system (NFS) is a type of file system mechanism that enables the storage and retrieval of data from multiple disks and directories across a shared network. A network file system enables local users to access remote data and files in the same way they are accessed locally.

https://www.techopedia.com/definition/1845/network-file-system-nfs, diakses 17 November 2020

NFS adalah sebuah jenis mekanisme sistem file yang memungkinkan penyimpanan (write) dan pengambilan (read) data dari banyak disk dan direktori dari seluruh jaringan berbagi. NFS memungkinkan pengguna lokal untuk mengakses data dan berkas remote dengan cara yang sama ketika pengguna lokal tersebut mengaksesnya secara lokal.

  • + Keuntungan dari NFS
    Media simpan yang bisa sangat besar karena bisa merupakan gabungan dari banyak komputer atau media simpan lainnya seperti NAS (Network-attached storage)
  • – Kerugiannya dari NFS
    Kecepatan baca/tulis lebih lambat karena melewati jaringan yang kecepatannya lebih rendah dari kecepatan baca tulis disk

Studi Kasus

NFS dapat digunakan di implementasi awal atau untuk mengatasi masalah yang muncul di tengah-tengah jalannya sistem. Pada kesempatan kali ini, akan dibahas penggunaan NFS untuk mengatasi masalah yang muncul di tengah-tengah jalannya sistem, karena hal ini lebih menarik dan menantang.

Kasus:
Disk space dari folder /var di web server adalah 99%, sehingga tidak ada lagi tempat untuk menyimpan data di web server.

Kondisi:
Menggunakan NAS sebagai server NFS.

Setting NFS di NAS

  • Mungkin tampilan, menu, istilah, ketentuan dan sebagainya akan berbeda dengan perangkat pembaca karena perbedaan merk atau versi dari NAS yang dipakai atau menggunakan komputer
  • Pastikan Firewall tidak mengganggu proses
  1. Login ke dalam NAS melalui browser, sehingga akan muncul menu awal seperti gambar di bawah ini
  2. Pilih Services, kemudian akan muncul jendela seperti gambar di bawah ini
  3. Pilih menu NFS, aktifkan servis NFS dan klik tombol Apply. Tutup jendela Services.
  4. Pilih Settings, kemudian akan muncul jendela seperti gambar di bawah ini
  5. Pilih menu Network, pilih tab LAN, kemudian masukkan pengaturan jaringan seperti yang diinginkan dan klik tombol Apply. Catat alamat IP-nya (ini adalah alamat IP dari NAS/NFS).
  6. Pilih menu ADM Defender, kemudian akan muncul jendela seperti gambar di bawah ini
  7. klik tombol Add. Isi IP web server, kemudian klik tombol OK. Tutup jendela Settings.
  8. Pilih folder induk yang ingin digunakan, misalnya folder Public, kemudian buat folder di dalamnya, misalnya moodledata untuk data-data dari elearning dan wwwdata untuk data-data dari web.
  9. Klik kanan pada folder yang akan digunakan kemudian pilih menu Properties. Catat lokasinya kemudian tutup jendela Properties dan File Explorer. Di bawah ini adalah gambar jendela Properties untuk melihat lokasi folder
  10. Pilih menu Access Control, kemudian akan muncul jendela seperti gambar di bawah ini
  11. Pilih menu Shared Folders, kemudian pilih folder induk yang digunakan dan klik tombol Access Rights, kemudian akan muncul jendela seperti gambar di bawah ini
  12. Klik tombol Add. Masukkan IP dari server web, bukan IP dari NAS dan pastikan hak aksesnya baca-tulis (read & write). Klik tombol OK dan klik tombol OK lagi.

Menghubungkan Web Server dengan NFS

  • Moodle
    • Server adalah Moodle
    • IP Web Server 172.16.1.1
    • Folder aplikasi saat ini adalah /var/www/html/moodle
    • Folder data moodle di lokal server adalah /var/www/moodledata
    • Folder data moodle di NFS adalah /var/www/moodledatanfs
  • NAS
    • IP NAS 172.16.100.100
    • Folder NFS /volume1/Public/moodledata
  1. Memasang komponen untuk NFS di Web Server
    sudo apt-get update
    sudo apt-get install nfs-common
  2. Memasang NFS ke Web Server
    sudo mkdir /var/www/moodledatanfs
    sudo mount -t nfs 172.16.100.100:/volume1/Public/moodledata /var/www/moodledatanfs
    sudo echo "172.16.100.100:/volume1/Public/moodledata /var/www/moodledatanfs nfs defaults 0 0" >> /etc/fstab
  3. Aktifkan mode Maintenance pada Moodle
  4. Identifikasi 2 hal berikut ini:
    1. Folder yang digunakan untuk cache
      Untuk Moodle: folder cache dan localcache
    2. Folder yang intensif berubah (sering ditulis)
      Untuk Moodle: folder sessions
  5. Salin data dari moodledata ke moodledatanfs, kecuali folder cache dan localcache
  6. Buka config.php, kemudian ubah pengaturan lokasi penyimpanan dataroot, cache dan localcache
    $CFG->dataroot = '/var/www/moodledatanfs';
    $CFG->cachedir = '/var/www/moodledata/cache';
    $CFG->localcachedir = '/var/www/moodledata/localcache';

    $CFG->session_file_save_path = '/var/www/moodledata/sessions';
  7. Bersihkan cache
    sudo php /var/www/html/moodle/admin/cli/purge_caches.php
  8. Ubah nama semua folder selain cache dan localcache di folder data moodle di lokal server (ditambah underscore). Ubah nama folder cache dan localcache di folder data moodle di NFS (ditambah underscore). Ubah pemilik folder data moodle di NFS ke www-data.
    #Ubah nama folder selain cache dan localcache di folder data moodle di lokal server
    cd /var/www/moodledata
    for d in $(find . -type d -name '*' | egrep -v "^\./cache|^\./localcache|^\./sessions"); do sudo mv "$d" "${d}_"; done;
    #Ubah nama folder cache dan localcache di folder data moodle di NFS
    cd /var/www/moodledatanfs
    for d in $(find . -type d -name 'cache' -o -name 'localcache' -o -name 'sessions'); do sudo mv "$d" "${d}_"; done;
    #ubah pemilik folder data moodle di NFS ke www-data
    sudo chown www-data:www-data /var/www/moodledatanfs
  9. Non-aktifkan mode Maintenance pada Moodle
  10. Uji coba elearning
    • buka berkas unggahan yang dulu
    • unggah berkas kemudian unduh berkas tersebut
  11. Jika berhasil, maka semua folder dengan underscore (_) dapat dihapus

Debug Masalah NFS di Klien

  • Tidak bisa mount NFS atau error 512 atau connection timeout
    1. Coba ping server NFS, kemudian mount lagi
      ping -c 1 172.16.100.100 && mount -t nfs 172.16.100.100:/volume1/Public/moodledata /var/www/moodledatanfs
    2. Jika
      • Bisa
        • Maka buka crontab sebagai root
          crontab -e
        • Kemudian masukkan skrip tadi saat reboot di crontab
          @reboot ping -c 1 172.16.100.100 && mount -t nfs 172.16.100.100:/volume1/Public/moodledata /var/www/moodledatanfs
      • Tidak bisa
        Maka cek hak akses di server NFS (/etc/exports)
  • Web server sangat lambat
    Mungkin ada folder yang intensif berubah tapi masih ada di NFS. Temukan dan pindah ke web server
  • Mengetahui status mount NFS
    • cek log boot
      journalctl -b | grep -E "NFS|nfs"
    • cek setting mounting nfs
      nfsstat -m