💟 Archived View for technicalsuwako.moe › blog › nfsnetworksetup.gmi captured on 2024-08-31 at 12:32:12. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅ Previous capture (2024-08-18)

-=-=-=-=-=-=-

ブログ䞀芧ぞ

【BSD】NFSを蚭眮する方法

投皿日2024-08-16

2幎前ぐらい、サヌバでどんどんLinuxからOpenBSDに乗り換え始めた時に、NFSずいうファむルシステムを芋぀けたした。

ずっずこのブログを読んだら、NFSが倧奜きず知っおいるかもしん。

しかし、自動バックアップする方法に぀いお以倖、これたではあんた詳しく蚭眮方法を解説した事がありたせんでした。

今日の投皿では、NFSサヌバずクラむ゚ントの蚭眮方法を教え様ず思いたす。

NFSずは

NFS「Network File System」ネットワヌクファむルシステムは、名前の通りネットワヌク䞊で䜿甚出来るファむルシステムです。

ネットワヌク内の䞀台がサヌバずしお機胜し、他の䞀台をクラむアントずしお蚭定する事が出来たす。

これにより、USBメモリを䜿甚したり、機密文曞をメヌル、クラりドストレヌゞ、又はむンスタントメッセヌゞで送信する等の危険な方法を䜿わずに、機械間でファむルをネむティブ速床で送信する事が可胜になりたす。

ここでは、8 TiBのSSDを耇数搭茉したFreeBSDのワヌクステヌションをNASずしお蚭定し、次の様な重芁なデヌタを保存しおいたす

Gitlerのレポゞトリ

076動画の動画

076レポゞトリ

保存サむトで䜿っおアヌカむブしたりェブペヌゞ

これらのサヌビスは党お耇数のOpenBSDサヌバで皌働しおおり、これらのサヌバが同じNAT内に存圚する為、NASにむンタヌネットアクセスを付䞎する事なく、FreeBSD䞊のディレクトリをOpenBSDサヌバに簡単にマりントする事が出来たす。

その結果、FreeBSD䞊のZFSのパフォヌマンスずバックアップ機胜性の利点を享受しながら、OpenBSD䞊のrelaydずhttpdのセキュリティず安定性を確保出来るずいう、正に矎しい状況です

そしお、利益を生たない個人ずしお倧量のデヌタを保存出来る理由は、どれだけデヌタを保存しおも、支払うのは電気代、ISP代、及び固定IP代だけで、これらの金額は毎月同じである為です。

LinuxではカヌネルでNFS察応を明瀺的に有効にする必芁がある又はパッケヌゞマネヌゞャを通じおカヌネルモゞュヌルをむンストヌルする必芁があるのに察し、BSDç³»OSではデフォルトで含たれおいる為、このガむドの為に䜕かをむンストヌルする必芁はありたせん。

【FreeBSD】NASの蚭眮

あたしがNASにFreeBSDを䜿甚する理由は、ZFSが暙準で察応されおいるからです。

もしFreeBSDが奜きでなければ、同じ様にZFSがデフォルトで付いおくるIllumos系のディストリビュヌションを䜿う事も出来たす。

Dragonfly BSDずいう遞択肢もあり、こちらはHAMMER2が搭茉されおいお、HAMMER2を察応する唯䞀のOSでもありたす。

LinuxやNetBSDにもZFSの劣化版をむンストヌル出来たすが、ネむティブではないのであんたお勧め出来たせん。

LinuxにはBtrfsもありたすが、これはZFSを再珟しようずした劣化版で、CDDLラむセンスではないのが特城です。

CDDLこそが、IllumosやFreeBSD以倖では採甚されにくい倧きな理由です。

䜆し、BtrfsはRed Hat補品であり、過去にも䜕床も芋られた様に、Red Hatから出おくるものはLinux党䜓にずっお灜難ずなる事が倚いです。

NFSサヌバを蚭定する前に、NFSパヌティションを䜿甚する党おのナヌザヌを䜜成し、ナヌザヌ名、UID、GIDがりェブサヌバず䞀臎する事を確認しお䞋さい。

䟋えば、りェブサヌバ䞊でUIDずGIDが1001の「suwako」ずいうナヌザヌがいお、NAS䞊で「suwako」ずいうナヌザヌのUIDずGIDが1002である堎合、又は䞡方でUIDが1001でも、NAS䞊でGIDが1002でりェブサヌバヌ䞊でGIDが1001の堎合、アクセス暩限゚ラヌが発生したすので、この点に泚意しお䞋さい

又、ルヌタを蚭定しお、Ethernetに接続された各機械に固定のロヌカルIPアドレスを割り圓おる様にしお䞋さい。

ルヌタのDHCPサヌバがIPアドレスを倉曎するず、お互いに接続できなくなり、りェブサヌバが自動マりントされおいる堎合、芋぀からないパヌティションを探そうずしお起動が殆ど出来なくなりたす。

これが非垞に重芁です

ナヌザヌを正しく䜜成するには、次のコマンドを䜿甚したす

$ pw groupadd suwako -g 1001
$ pw useradd suwako -g suwako -s /bin/csh -m -u 1001 -c "NFS User"

䜕凊かのディレクトリを䜜成したす

$ mkdir /zroot/www_data
$ chown -R suwako:suwako /zroot/www_data

次に、ディレクトリを/etc/exportsファむルに远加したす。

りェブサヌバのIPアドレスが192.168.0.106であるず仮定したす。

又、耇数の機械からマりント出来る事を瀺す為に、ノヌトパ゜コンも远加したしょう。

ここでは、ノヌトパ゜コンのIPアドレスを192.168.0.125ず仮定したす。

/zroot/www -alldirs -maproot=suwako:suwako 192.168.0.106
/zroot/www -alldirs -maproot=suwako:suwako 192.168.0.125

次に、/etc/rc.confでサヌビスを有効にしたす。

zfs_enable="YES"
rpcbind_enable="YES"
nfs_server_enable="YES"
nfsd_flags="-u -t -n 6"
mountd_enable="YES"

`nfsd_flags`の説明ですが、`-u`は「UDPで提䟛」、`-t`は「TCPで提䟛」、`-n 6`は「6぀のデヌモンを䜿甚する」ずいう意味です。

これらのフラグを遞んだ理由は、単玔にマンペヌゞで䟋ずしお䜿甚されおいたからであり、必芁に応じおフラグを調敎しお䞋さい。

次に、サヌビスを起動したす

$ service rpcbind start
$ service nfsd start
$ service mountd start
$ service nfsd restart
$ service mountd restart

サヌビスを起動埌にnfsdずmountdを再起動する理由は、正しい起動順序がただわからない為、動䜜確認の為に行っおいたす。

䜆し、rpcbindは蚭定倉曎時に再起動する必芁はなく、nfsdずmountdのみ再起動が必芁です。

次に、動䜜確認を行いたす

$ showmount -e
Exports list on localhost:
/zroot/www                    192.168.0.106 192.168.0.125

IPアドレスの順序は関係ありたせん。

リストに衚瀺されおいれば、パヌティションのマりントが機胜する事を確認出来たす。

【OpenBSD】りェブサヌバの蚭眮

次は、りェブサヌバでマりントを機胜させる楜しい郚分です。

たずは、同じ名前、UID、GIDを持぀新しいナヌザヌを䜜成したす。

$ groupadd -g 1001 suwako
$ useradd -u 1001 -g 1001 -m -s /bin/ksh suwako

次に、りェブサヌバ䞊にディレクトリを䜜成したす。

これはりェブサヌバなので、/var/www/htdocsの䞋に眮くのが最も理にかなっおいたす。

$ mkdir -p /var/www/htdocs/076.moe/website_data
$ chown -R suwako:suwako /var/www/htdocs/076.moe

次に、この新しいディレクトリにNFSパヌティションをマりントしたしょう。

NASのIPアドレスが192.168.0.143であるず仮定したす。

$ mount_nfs 192.168.0.143:/zroot/www /var/www/htdocs/076.moe/website_data

そうです、りェブサヌバではその為にサヌビスを有効にしたり起動したりする必芁はありたせん。

りェブサヌバはNASのクラむアントだからです。

゚ラヌが出なければ、マりントは成功しおいたす。

りェブサヌバにファむルを眮き、それがNASにも存圚するか、又はその逆を確認する事で確認出来たす。

今埌、自動マりントしたい堎合は、/etc/fstabファむルを線集したしょう。

# ファむルシステム       マりントポむント                     FS類 RWオプション <dump>  <pass>
86c58f108204433b.b       none                                 swap sw
86c58f108204433b.a       /                                    ffs  rw,wxallowed 1       1
192.168.0.143:/zroot/www /var/www/htdocs/076.moe/website_data nfs  rw           0       0

任意【Linux】ノヌトパ゜コンの蚭眮

このステップは完党に任意ですが、別のOSや別の䜿甚䟋を説明する為に瀺しおおきたす。

たた、自分のノヌトパ゜コン䞊でHTMLペヌゞを盎接線集し、倉曎を即座にりェブサむトに反映させるのに䟿利だず感じるかもしん。

あたしのノヌトパ゜コンは実際にはOpenBSDを動かしおいたすが、この投皿の目的の為に、代わりにVoid Linuxが動䜜しおいるず仮定したす。

驚く事に、AppleのmacOSはBSDç³»OSず同様に、デフォルトでNFSが含たれおいたす。

その為、貎方のりェブデザむナヌや3Dアヌティストの同僚も、Linuxず同じ手順に埓う事が出来たす。

䜆し、䜕もむンストヌルしたり有効にしたりする必芁はありたせん。

唯䞀の違いは、macOSではOpenBSDず同様に`mount_nfs`を䜿甚出来たすが、Linuxでは`mount -t nfs`を䜿甚する必芁がある点です。

`mount_nfs`は、Unixで`mount -t nfs`ず曞く代わりに、短瞮した方法に過ぎたせん。

これはノヌトパ゜コンなので、UID 1001およびGID 1001のナヌザヌずグルヌプ「suwako」が既に存圚しおいるず仮定したす。

存圚しない堎合は、OpenBSDず同じコマンドでナヌザヌを䜜成出来たす。

$ groupadd -g 1001 suwako
$ useradd -u 1001 -g 1001 -m -s /bin/bash suwako

BSD系のOSずは異なり、殆どのLinuxディストロではNFS察応を別途むンストヌルするか、カヌネルで有効にする必芁がありたす。

Void Linuxの堎合、2぀のパッケヌゞをむンストヌル出来たすが、䟋えばCRUXの堎合は、カヌネルで手動で有効にしおからコンパむルする必芁がありたす。

$ xbps-install nfs-utils sv-netmount

再起動が必芁になる可胜性があるので、その点に泚意しお䞋さい。

䜕故か分かりたせんが、OpenBSD、FreeBSD、macOSずは異なり、LinuxではNFSを動䜜させる為に3぀のサヌバデヌモンを有効にする必芁がありたす。

しかし、これが珟代のLinuxで、15幎前皋良くはありたせん。

では、サヌビスを有効にしたしょう。

Void Linuxはrunitを䜿甚しおいるので、この堎合は次の様にしたす。

$ ln -s /etc/sv/rpcbind /var/service
$ ln -s /etc/sv/statd /var/service
$ ln -s /etc/sv/netmount /var/service
$ sv start statd rpcbind netmount

これでマりント出来たす。

$ mkdir -p /mnt/website
$ chown -R suwako:suwako /mnt/website
$ mount -t nfs 192.168.0.143:/zroot/www /mnt/website

自動マりントするには、OpenBSDりェブサヌバず同じ/etc/fstab構造を䜿甚出来たす。

以䞊