Skip to content

Instantly share code, notes, and snippets.

@tovin07
Created April 7, 2025 16:54
Show Gist options
  • Save tovin07/528df0aae509625370cc7845c8922a80 to your computer and use it in GitHub Desktop.
Save tovin07/528df0aae509625370cc7845c8922a80 to your computer and use it in GitHub Desktop.
NFS

Cảm ơn bạn, dòng lỗi này:

mount.nfs: mount system call failed

👉 cho thấy lệnh mount hệ thống (syscall) của Linux đã thất bại, tức là kubelet (hoặc bạn) đã gửi yêu cầu mount đúng cú pháp, nhưng kernel không thực hiện được thao tác mount.


✅ Khả năng cao: lỗi liên quan đến hệ thống trên node, không phải Kubernetes YAML nữa.

🎯 Các nguyên nhân chính kèm cách xử lý:


1. ❌ Thiếu package hỗ trợ NFS trên node

Khi bạn mount bằng tay hoặc kubelet thực hiện mount, kernel cần có các tiện ích và module như nfs-common.

✅ Kiểm tra:

which mount.nfs

Nếu không có: bạn cần cài nfs-common (Debian/Ubuntu) hoặc nfs-utils (CentOS/RHEL):

# Ubuntu / Debian
sudo apt update && sudo apt install -y nfs-common

# CentOS / RHEL
sudo yum install -y nfs-utils

2. 🔌 Kernel thiếu module hỗ trợ NFS

Nếu mount.nfs có nhưng vẫn lỗi syscall, có thể do kernel không có module nfs.

✅ Kiểm tra:

lsmod | grep nfs

✅ Nạp thủ công:

sudo modprobe nfs

Nếu bị lỗi ở đây → cần kiểm tra kernel hoặc rebuild.


3. 🧱 Firewall hoặc NFS server không cho phép kết nối

  • mount.nfs gửi syscall nhưng không nhận được phản hồi → system call bị lỗi.

✅ Kiểm tra port mở giữa node ↔ NFS server:

telnet <nfs-ip> 2049

✅ Kiểm tra showmount -e <nfs-ip> có trả về không.

✅ Trên NFS server, kiểm tra file /etc/exports:

/export/data *(rw,sync,no_root_squash)

4. ❌ Sai path mount hoặc không tồn tại trên NFS server

Nếu bạn mount:

sudo mount -t nfs <nfs-ip>:/export/data /mnt/test

Nhưng /export/data không tồn tại trên server hoặc chưa được export → cũng sẽ gặp lỗi syscall failed.

✅ Kiểm tra từ NFS server:

exportfs -v

5. 🔒 SELinux chặn mount hoặc systemd không cấp quyền

Nếu là CentOS/RHEL:

getenforce  # nếu là Enforcing, thử:
setenforce 0

🧪 Debug nâng cao

Dùng strace để kiểm tra lỗi chi tiết khi gọi syscall:

strace mount -t nfs <nfs-ip>:/export/data /mnt/test

→ Dò đến mount() syscall, sẽ thấy lý do chi tiết (ví dụ: EPERM, ECONNREFUSED, ETIMEDOUT...)


✅ Tổng kết – checklist xử lý:

Việc cần làm Mục tiêu
Cài nfs-common / nfs-utils Đảm bảo có binary mount.nfs
Kiểm tra modprobe nfs Nạp module kernel nếu thiếu
Kiểm tra kết nối mạng, firewall Đảm bảo NFS server reachable
Kiểm tra path + exportfs Đảm bảo mount point hợp lệ
Thử setenforce 0 Tạm bỏ SELinux test lỗi bảo mật
Dùng strace nếu cần Để truy vết lỗi sâu

Nếu bạn gửi thêm:

  • Câu lệnh mount bạn chạy
  • OS của node
  • Kết quả showmount -e
  • Cấu hình /etc/exports từ NFS server

Mình sẽ giúp xác định lỗi cụ thể ngay nhé.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment