Thiết lập Máy chủ và Máy khách NFS trên Debian 9 (Stretch)

theanh

Administrator
Nhân viên
Hướng dẫn này giải thích cách thiết lập máy chủ NFS và máy khách NFS trên Debian 9. NFS là viết tắt của Hệ thống tệp mạng; thông qua NFS, máy khách có thể truy cập (đọc, ghi) vào một chia sẻ từ xa trên máy chủ NFS như thể nó nằm trên ổ cứng cục bộ. Trong Hướng dẫn này, tôi sẽ chỉ cho bạn hai cách xuất NFS khác nhau, cách xuất thư mục máy khách lưu trữ tệp dưới dạng người dùng nobody/nogroup mà không giữ nguyên quyền hệ thống tệp và cách xuất thư mục /var/www giữ nguyên quyền và quyền sở hữu tệp, theo yêu cầu khi thiết lập máy chủ lưu trữ.

1 Lưu ý sơ bộ​

Tôi đang sử dụng hai hệ thống Debian Wheezy tại đây:
  • Máy chủ NFS: server.example.com, địa chỉ IP: 192.168.1.100
  • Máy khách NFS: client.example.com, địa chỉ IP: 192.168.1.101

2 Cài đặt NFS​

Đảm bảo máy chủ được cập nhật bằng cách cập nhật danh sách gói và cài đặt đang chờ cập nhật trên cả hai máy chủ
Mã:
apt-get update
Mã:
apt-get upgrade
Sau đó tiếp tục cài đặt máy chủ và máy khách NFS.

máy chủ:

Trên máy chủ NFS, chúng tôi chạy:
Mã:
apt-get install nfs-kernel-server nfs-common
Sau đó, chúng tôi tạo các liên kết khởi động hệ thống cho máy chủ NFS và khởi động nó:

máy khách:

Trên máy khách, chúng tôi có thể cài đặt NFS như sau (thực tế là giống nhau như trên máy chủ):
Mã:
apt-get install nfs-common

3 Xuất thư mục trên máy chủ​

máy chủ:

Tôi muốn làm cho các thư mục /home/client1 và /var/www có thể truy cập được đối với máy khách để hiển thị hai chế độ truy cập khác nhau của máy chủ NFS. Thư mục /home/client1 được chia sẻ ở chế độ chuẩn, vì vậy tất cả các tệp được ghi vào thư mục này đều được lưu trữ dưới dạng người dùng nobody và nhóm nogroup. Đối với thư mục /var/www, tôi sử dụng tùy chọn no_root_squash để hướng dẫn máy chủ NFS duy trì quyền và quyền sở hữu các tệp. Ví dụ: cần thiết khi bạn muốn xuất thư mục /var/www của máy chủ web được quản lý bằng ISPConfig 3

Đầu tiên, tôi sẽ tạo thư mục /home/client1
Mã:
mkdir /home/client1
chown nobody:nogroup /home/client1
chmod 755 /home/client1
Thư mục /var/www rất có thể tồn tại trên máy chủ của bạn. Nếu không, hãy tạo thư mục đó:
Mã:
mkdir /var/www
chown root:root /var/www
chmod 755 /var/www
Bây giờ chúng ta phải sửa đổi /etc/exports nơi chúng ta "xuất" các chia sẻ NFS của mình. Chúng tôi chỉ định /home/client1 và /var/www là các chia sẻ NFS và yêu cầu NFS thực hiện quyền truy cập vào /home/client1 với tư cách là người dùng nobody (để tìm hiểu thêm về /etc/exports, định dạng và các tùy chọn khả dụng, hãy xem
Mã:
man 5 exports
)
Mã:
nano /etc/exports
Mã:
/home/client1 192.168.1.101(rw,sync,no_subtree_check)/var/www 192.168.1.101(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash)
(Tùy chọn no_root_squash thực hiện điều đó /var/www sẽ được truy cập dưới dạng root.)

Để áp dụng các thay đổi trong /etc/exports, chúng ta khởi động lại máy chủ nfs của hạt nhân
Mã:
service nfs-kernel-server restart

4 Gắn các chia sẻ NFS trên Máy khách​

máy khách:

Trước tiên, chúng ta tạo các thư mục mà chúng ta muốn gắn các chia sẻ NFS, ví dụ:
Mã:
mkdir -p /mnt/nfs/home/client1
mkdir -p /var/www
Nếu thư mục /var/www đã tồn tại trên máy chủ của bạn, hãy dừng apache, đổi tên thư mục và tạo một thư mục trống mới làm điểm gắn kết
Mã:
service apache2 stop
mv /var/www /var/www_bak
mkdir -p /var/www
Sau đó, chúng ta có thể gắn kết chúng như sau:
Mã:
mount 192.168.1.100:/home/client1 /mnt/nfs/home/client1
mount 192.168.1.100:/var/www /var/www
Bây giờ bạn sẽ thấy hai chia sẻ NFS trong đầu ra của
Mã:
df -h
Mã:
root@server1:/tmp# df -h
Kích thước hệ thống tập tin được sử dụng Có sẵn Sử dụng% Được gắn kết trên
udev 990M 0 990M 0% /dev
tmpfs 201M 6.0M 195M 3% /run
/dev/sda1 28G 1.2G 25G 5% /
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www
root@server1:/tmp#

Mã:
mount
Mã:
root@server1:/tmp# mount
sysfs trên /sys loại sysfs (rw, nosuid, nodev, noexec, relatime)
proc trên /proc loại proc (rw, nosuid, nodev, noexec, relatime)
udev trên /dev loại devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)
devpts trên /dev/pts loại devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs trên /run loại tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)
/dev/sda1 trên / loại ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs trên /sys/kernel/security loại securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs trên /dev/shm loại tmpfs (rw,nosuid,nodev)
tmpfs trên /run/lock loại tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs trên /sys/fs/cgroup loại tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup trên /sys/fs/cgroup/systemd loại cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore trên /sys/fs/pstore loại pstore (rw,nosuid,nodev,noexec,relatime)
cgroup trên /sys/fs/cgroup/perf_event loại cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup trên /sys/fs/cgroup/cpu,cpuacct loại cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup trên /sys/fs/cgroup/net_cls,net_prio loại cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup trên /sys/fs/cgroup/cpuset loại cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup trên /sys/fs/cgroup/freezer loại cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup trên /sys/fs/cgroup/devices loại cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup trên /sys/fs/cgroup/blkio loại cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup trên /sys/fs/cgroup/memory loại cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup trên /sys/fs/cgroup/pids loại cgroup (rw,nosuid,nodev,noexec,relatime,pids)
systemd-1 trên /proc/sys/fs/binfmt_misc loại autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)
mqueue trên /dev/mqueue loại mqueue (rw,relatime)
debugfs trên /sys/kernel/debug loại debugfs (rw,relatime)
hugetlbfs trên /dev/hugepages loại hugetlbfs (rw,relatime)
tmpfs trên /run/user/1000 loại tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)
fusectl trên /sys/fs/fuse/connections loại fusectl (rw,relatime)
192.168.1.100:/home/client1 trên /mnt/nfs/home/client1 loại nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/www trên /var/www gõ nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
root@server1:/tmp#

5 Kiểm tra​

Trên máy khách, bây giờ bạn có thể thử tạo các tệp kiểm tra trên các chia sẻ NFS:

máy khách:
Mã:
touch /mnt/nfs/home/client1/test.txt
touch /var/www/test.txt
Bây giờ hãy đến máy chủ và kiểm tra xem bạn có thể thấy cả hai tệp kiểm tra files:

server:
Mã:
ls -l /home/client1/
Mã:
root@server1:/tmp# ls -l /home/client1/
total 0
-rw-r--r-- 1 nobody nogroup 0 16-11 10:52 test.txt
root@server1:/tmp#
Mã:
ls -l /var/www
Mã:
root@server1:/tmp# ls -l /var/www
total 0
-rw-r--r-- 1 root root 0 16-11 10:52 test.txt
root@server1:/tmp#
(Vui lòng lưu ý các quyền sở hữu khác nhau của các tệp thử nghiệm: chia sẻ NFS /home/client1 được truy cập dưới dạng nobody / nogroup và không thuộc sở hữu của nobody / nogroup; chia sẻ /var/www được truy cập dưới dạng root, do đó /var/www/test.txt thuộc sở hữu của người dùng và nhóm root.)

6 Gắn kết Chia sẻ NFS Vào Thời điểm Khởi động​

Thay vì gắn kết các chia sẻ NFS theo cách thủ công trên máy khách, bạn có thể sửa đổi /etc/fstab để các chia sẻ NFS được gắn kết tự động khi máy khách khởi động.

máy khách:

Mở /etc/fstab và thêm các dòng sau:
Mã:
nano /etc/fstab
Mã:
[...]192.168.1.100:/home/client1 /mnt/nfs/home/client1 nfs rw,sync,hard,intr 0 0192.168.1.100:/var/www /var/www nfs rw,sync,hard,intr 0 0
Thay vì rw,sync,hard,intr, bạn có thể sử dụng các tùy chọn gắn kết khác. Để tìm hiểu thêm về các tùy chọn khả dụng, hãy xem
Mã:
man nfs
Để kiểm tra xem /etc/fstab đã sửa đổi của bạn có hoạt động không, hãy hủy gắn kết các chia sẻ và chạy mount -a:
Mã:
umount /mnt/nfs/home/client1
umount /var/www
mount -a
Bây giờ bạn sẽ thấy hai chia sẻ NFS trong đầu ra của
Mã:
df -h
Mã:
root@server1:/# df -h
Kích thước hệ thống tệp đã sử dụng Có sẵn Sử dụng% Đã gắn kết trên
udev 990M 0 990M 0% /dev
tmpfs 201M 6.0M 195M 3% /run
/dev/sda1 28G 1,2G 25G 5% /
tmpfs 1001M 0 1001M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
192.168.1.100:/home/client1 28G 1,2G 25G 5% /mnt/nfs/home/client1
192.168.1.100:/var/www 28G 1,2G 25G 5% /var/www
root@server1:/#

Mã:
mount
Mã:
root@server1:/# mount
sysfs trên /sys loại sysfs (rw, nosuid, nodev, noexec, relatime)
proc trên /proc loại proc (rw, nosuid, nodev, noexec, relatime)
udev trên /dev loại devtmpfs (rw, nosuid, relatime, size=1012912k, nr_inodes=253228, mode=755)
devpts trên /dev/pts loại devpts (rw, nosuid, noexec, relatime, gid=5, mode=620, ptmxmode=000)
tmpfs trên /run loại tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)
/dev/sda1 trên / kiểu ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs trên /sys/kernel/security kiểu securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs trên /dev/shm kiểu tmpfs (rw,nosuid,nodev)
tmpfs trên /run/lock kiểu tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs trên /sys/fs/cgroup kiểu tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup trên /sys/fs/cgroup/systemd kiểu cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore trên /sys/fs/pstore loại pstore (rw,nosuid,nodev,noexec,relatime)
cgroup trên /sys/fs/cgroup/perf_event loại cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup trên /sys/fs/cgroup/cpu,cpuacct loại cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup trên /sys/fs/cgroup/net_cls,net_prio loại cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup trên /sys/fs/cgroup/cpuset loại cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup trên /sys/fs/cgroup/freezer loại cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup trên /sys/fs/cgroup/devices loại cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup trên /sys/fs/cgroup/blkio loại cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup trên /sys/fs/cgroup/memory loại cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup trên /sys/fs/cgroup/pids loại cgroup (rw,nosuid,nodev,noexec,relatime,pids)
systemd-1 trên /proc/sys/fs/binfmt_misc kiểu autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)
mqueue trên /dev/mqueue kiểu mqueue (rw,relatime)
debugfs trên /sys/kernel/debug kiểu debugfs (rw,relatime)
hugetlbfs trên /dev/hugepages kiểu hugetlbfs (rw,relatime)
tmpfs trên /run/user/1000 kiểu tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)
fusectl trên /sys/fs/fuse/connections loại fusectl (rw,relatime)
192.168.1.100:/home/client1 trên /mnt/nfs/home/client1 loại nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
192.168.1.100:/var/www trên /var/www gõ nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)
root@server1:/#

7 Điểm tín dụng​

Bài hướng dẫn này dựa trên Bài hướng dẫn về Máy chủ Centos NFS của Falko Timme.

8 Liên kết​

 
Back
Bên trên