• فایل سیستم های شبکه و لینوکس. سیستم فایل شبکه (NFS) - سیستم فایل شبکه

    NFS به شما این امکان را می دهد که دایرکتوری ها را روی یک ماشین یونیکس به اشتراک بگذارید. ناامنی NFS، و به ویژه NIS، با RPC مرتبط است - از نظر تعداد انواع سوء استفاده ها، به نظر می رسد RPC رهبر غیر رسمی است (به جز Sendmail). از آنجایی که این پروتکل ها برای شبکه های داخلی در نظر گرفته شده اند، باید از کاربران «خود» محافظت شوند. اگرچه قبل از استفاده از آنها، باید تصمیم بگیرید که آیا واقعاً مورد نیاز هستند یا خیر.

    که در شبکه خانگیآنها می توانند بسیار مفید باشند، اما شبکه شرکتیبه دلایل امنیتی، بهتر است جایگزین مطمئن تری برای آنها پیدا کنید.

    سیستم فایل NFS.

    سیستم فایل شبکه (شبکه سیستم فایل، NFS) توسط Sun به عنوان وسیله ای برای دسترسی به فایل های میزبانی شده در سایر ماشین های یونیکس در داخل توسعه داده شد شبکه محلی. NFS به هیچ وجه با در نظر گرفتن امنیت طراحی نشده است، که در طول سال ها باعث آسیب پذیری های بسیاری شده است.

    NFS می‌تواند روی TCP یا UDP اجرا شود و از سیستم RPC استفاده می‌کند، به این معنی که برنامه‌های معمولاً آسیب‌پذیر زیر باید اجرا شوند: portmapper، nfs، nlockmgr (قفل‌شده)، rquotad، statd و mountd.

    نیازی به اجرای NFS نیست - باید یک راه حل جایگزین پیدا کنید. اگر NFS همچنان مورد نیاز است، در اینجا در مورد چگونگی به حداقل رساندن خطر استفاده از آن صحبت خواهیم کرد.

    /etc/exports

    اولین گام این است که ماشین هایی را انتخاب کنید که سیستم های فایل خود را صادر می کنند. سپس می توانید تعیین کنید که کدام ماشین ها مجاز به اتصال به سرورهای NFS (یا سرور، در صورت وجود) در شبکه هستند. از NFS در ماشین هایی که به طور مستقیم (مستقیم) به اینترنت متصل هستند استفاده نکنید. پس از انتخاب ماشین‌ها، دایرکتوری‌های موجود در آن ماشین‌ها باید برای صادرات انتخاب شوند.

    دایرکتوری های صادراتی در فایل /etc/exports تعریف شده اند. فرمت هر ورودی ساده است: نام دایرکتوری، لیستی از کاربرانی که اجازه دسترسی دارند و حالت دسترسی. به عنوان مثال:

    دسترسی کامل (خواندن/نوشتن) به فهرست /home/user در دستگاه با آدرس IP 10.0.0.6 مجاز است. بهترین چیز این است که ندهید دسترسی کامل، اما به دسترسی فقط خواندنی (rо) محدود شود. علاوه بر این، می توانید گزینه های زیر را نیز مشخص کنید:

    • امن است- درخواست mount باید از یک پورت ممتاز (تا 1024) باشد. این به این معنی است که دستور mount توسط کاربری با حقوق ریشه وارد شده است.
    • ریشه_کدو- درخواست کاربر ریشهبه عنوان درخواست یک کاربر ناشناس تلقی می شود. این به شما امکان می دهد کمترین آسیب را به سیستم وارد کنید. این گزینه باید فعال باشد.
    • همه_کدو- همه درخواست ها (نه تنها از کاربر اصلی) به عنوان یک کاربر ناشناس تلقی می شوند. مفید برای فهرست های عمومی صادر شده است.

    اگر یک روت کرکر به ماشینی دسترسی پیدا کند که به دایرکتوری مشخص شده در /etc/exports دسترسی rw داده شده باشد، کنترل کامل سیستم فایل را خواهد داشت، بنابراین دایرکتوری ریشه (/) نمی تواند صادر شود و دایرکتوری های مهم سیستم به عنوان مثال /usr، /bin، /sbin، /lib، /opt و /etc. فهرست راهنمای کاربر برای صادرات خوب است.

    در سمت کلاینت، نصب یک فایل سیستم مشترک باید با مشخص کردن گزینه -o nosuid انجام شود:

    # mount -t nfs -o nosuid 10.0.0.3:/home/user/files /mnt/home/frank

    این کار باعث می شود که کرکری که به سرور NFS دسترسی پیدا می کند از دسترسی ریشه به کلاینت ها جلوگیری کند.

    محدودیت دسترسی.

    صرف نظر از خدمات، باید از IPTables برای محدود کردن دسترسی به دستگاه استفاده کنید. در مورد سرور NFS، این امر به ویژه مهم است. هنگام استفاده از IPTables، به یاد داشته باشید که دیمون NFS از پورت 2049/TCP/UDP استفاده می کند.

    برخی از سرویس‌های RPC، مانند portmapper و NFS، از پورت‌های ثابت (به ترتیب 113 و 2049/tcp/udp) استفاده می‌کنند، اما سایر سرویس‌های RPC پورت‌های ثابتی ندارند، که فیلتر کردن بسته‌ها با استفاده از IPTables را دشوار می‌کند. تنها چیزی که مشخص است این است که RPC ها از پورت هایی در محدوده 32768-65535 استفاده می کنند.

    اگر از کرنل 2.4.13 یا جدیدتر استفاده می کنید، از گزینه -p استفاده کنید<порт>می توانید پورت دقیق هر سرویس RPC را مشخص کنید.

    در نظر گرفتن تابع شروع() از فایل /etc/rc.d/init.d/nfslock که برای شروع nsflock استفاده می شود:

    شروع()(

    #. شیاطین را شروع کنید.

    اگر [ "$USERLAND_LOCKD" ]; سپس

    echo -n $"شروع قفل NFS: "

    daemon rpc.lockd

    echo -n $"شروع NFS statd: "

    daemon rpc.statd

    echo [ $RETVAL -eq 0 ] && لمس /var/touch/lock/subsys/nfslock

    بازگشت $RETVAL )

    برای وادار کردن statd daemon به استفاده از یک پورت خاص، می توانید از گزینه -p استفاده کنید، برای مثال daemon rpc.statd -p 32800 (یا هر چیزی که دوست دارید). به طور مشابه، باید پورت را برای mountd، nfsd، rquotad تنظیم کنید - همه آنها از اسکریپت /etc/rc.d/init.d/nfs شروع می شوند:

    شروع()(

    # شیاطین را شروع کنید.

    action -n $"شروع خدمات NFS: " /usr/sbin/exportfs -r

    اگر t _x /usr/sbin/rpc.quotad ] ; سپس echo -n $"شروع سهمیه های NFS: " daemon rpc.rquotad echo

    fi echo -n $"شروع نصب NFS: "

    daemon rpc.mountd 3RPCMOUNTDOPTS

    echo -n $"شروع شبح NFS: " daemon rpc.nfsd $RPCNFSDOPTS echo touch /var/lock/subsys/nfs

    فناوری تغییر پورت برای قفل (nlockmgr) با موارد فوق متفاوت است (سعی نکنید فایل /etc/rc.d/init.d/nfslock را تغییر دهید - هیچ چیز کار نخواهد کرد).

    Lockd یا به عنوان یک ماژول هسته پیاده سازی می شود یا به صورت ایستا در هسته کامپایل می شود. برای تغییر شماره پورت، فایل /etc/modules را باز کنید و گزینه های ارسال شده به ماژول را پیدا کنید:

    گزینه ها قفل شده اند nlm_udpport=33000 nlm_tcpport=33000

    اکنون که سرویس های RPC از پورت های ثابتی استفاده می کنند که شناخته شده اند، باید از IPTables استفاده شود. مجموعه قوانین زیر فرض می‌کند که NFS تنها سروری است که روی دستگاه اجرا می‌شود و فقط ماشین‌های فهرست شده در فایل /usr/local/etc/nfsexports.hosts مجاز به دسترسی به آن هستند:

    IPX="/usr/sbin/iptables"

    # تمام زنجیرها را پاک کنید

    $IPT --flush

    $IPT -t nat --flush $IPT -t mangle --flush $IPT -X

    # اجازه دادن به ترافیک برگشتی $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT

    # قوانین پیش فرض $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP

    $IPT -A INPUT -m دولت-دولت ESTABLISHED,RELATED -j ACCEPT $IPT -A OUTPUT -m حالت -وضعیت NEW,ESTABLISHED,RELATED -j ACCEPT

    # اجازه دسترسی به هر کامپیوتر،

    # مشخص شده در /usr/local/etc/nfsexports.hosts

    برای میزبان در "cat /usr/local/etc/nfsexports.hosts"؛ انجام $IPT -I INPUT -s $host -p tcp -dport 111 -j ACCEPT

    $IPT -I INPUT -s $host -p udp -dport 111 -j ACCEPT

    $IPT -I INPUT -s $host -p udp -dport 2049 -j ACCEPT

    $IPT -I INPUT -s $host -p tcp --dport 32800 -j ACCEPT

    $IPT -I INPUT -s $host -p tcp --dport 32900 -j ACCEPT

    $IPT -I INPUT -s $host -p tcp -dport 33000 -j ACCEPT

    $IPT -I INPUT -s $host -p tcp --dport 33100 -j ACCEPT

    البته، این فقط یک اسکلت است، قوانین بسیار بیشتری باید اضافه شود: حداقل SSH را مجاز کنید و برخی از پارامترهای هسته را با /proc تنظیم کنید.

    تونل سازی NFS روی SSH.

    اختصار NFS گاهی اوقات به عنوان "No File Security" رمزگشایی می شود - این سه کلمه برای خود صحبت می کنند. بنابراین، اطمینان از حفاظت از ترافیک NFS بسیار مهم است. انجام این کار با ssh آسان است.

    در ابتدا، می‌توانید فایل /etc/exports را در سرور NFS تغییر دهید تا سیستم‌های فایل به میزبان محلی صادر شوند:

    سپس باید از SSH برای ارسال پورت های NFS و mountd استفاده کنید. NFS از پورت 2049/udp استفاده می کند و mountd از پورت 33000 همانطور که ذکر شد استفاده می کند:

    # ssh [ایمیل محافظت شده]-L 200: localhost:2049 -f خواب 120 متر

    # ssh [ایمیل محافظت شده]-L 200: localhost:33000 -f خواب 120 متر

    این دو دستور یک پوسته تعاملی را در اختیار کاربر قرار می دهند، اما از آنجایی که به یکی نیازی نیست، SSH خواب 120 را اجرا می کند: بازگشت به خط فرمان، اما ارسال پورت 2 ساعت دیگر طول می کشد.

    نصب فایل سیستم از سمت مشتری بسیار غیر معمول به نظر می رسد:

    mount -t nfs -o nosuid port=200 mountport=210 nfsserver.test.net:/home/user /mnt/another

    اگر ترفندهای تونل زنی ssh خیلی پیچیده هستند، می توانید از پروژه SHFS (Shell Filesystem) استفاده کنید ( http://shfs.sourceforge.net/ ) که امکان خودکارسازی کل این روش را فراهم می کند.

    پس از نصب، SHFS می تواند با دستور mount -t shfs یا با دستور جدید shfsmount قابل دسترسی باشد. سینتکس این دستور مشابه دستور قبلی است:

    shfsmount [ایمیل محافظت شده]:/home/user /mnt/user

    CFS و TCFS

    سیستم فایل رمزنگاری از رمزگذاری شفاف و رمزگشایی ترافیک NFS استفاده می کند الگوریتم DES. علاوه بر این، پشتیبانی می کند کنترل خودکارکلیدها، که فرآیند را تا حد امکان برای کاربر "شفاف" می کند.

    اگرچه CFS برای SunOS و BSD توسعه داده شده است، اما جالب است زیرا به نظر می رسد اولین تلاش برای رمزگذاری "شفاف" فایل های مشترک باشد. سیستم فایل رمزنگاری شفاف (TCFS) راه شفاف تری برای رمزگذاری ترافیک NFS ارائه می دهد.

    علاوه بر رمزگذاری داده ها، این فایل سیستم از بررسی یکپارچگی داده ها نیز پشتیبانی می کند.

    سیستم فایل شبکه (NFS) یک راه حل به اشتراک گذاری فایل برای سازمان هایی است که محیط های ویندوز و ماشین های یونیکس/لینوکس را ترکیب کرده اند. سیستم فایل NFS امکان اشتراک گذاری فایل ها را بین پلتفرم های مختلف مشخص شده در حین اجرا شدن سیستم عامل ممکن می سازد. ویندوز سرور 2012 NFS در ویندوز سرور 2012 شامل ویژگی ها و پیشرفت های زیر است.

    1. جستجو در اکتیو دایرکتوری. شما می توانید از Windows Active Directory برای دسترسی به فایل ها استفاده کنید. پسوند Identity Management for Unix schema for Active Directory حاوی فیلدهای شناسه کاربر یونیکس (UID) و شناسه گروه (GID) است. این به سرور برای NFS و سرویس گیرنده برای سرویس های NFS اجازه می دهد تا نقشه های حساب کاربری ویندوز در یونیکس را مستقیماً از سرویس ها مشاهده کنند. دامنه فعالدایرکتوری (خدمات دامنه اکتیو دایرکتوری). مدیریت هویت برای یونیکس، مدیریت نگاشت حساب های کاربری ویندوز به یونیکس را در خدمات دامنه دایرکتوری آسان می کند.

    2. بهبود عملکرد سرورخدمات برای NFS شامل یک درایور فیلتر فایل است که تأخیر کلی دسترسی به فایل در سرور را به میزان قابل توجهی کاهش می دهد.

    3. پشتیبانی از دستگاه های یونیکس خاصخدمات برای NFS از دستگاه های یونیکس ویژه (mknod) پشتیبانی می کند.

    4. پشتیبانی گسترده از یونیکس Services for NFS از نسخه‌های زیر یونیکس پشتیبانی می‌کند: Sun Microsystems Solaris نسخه 9، Red Hat Linux نسخه 9، IBM AIX نسخه 5L 5.2، و Hewlett Packard HP-UX نسخه 11i، و همچنین بسیاری از توزیع‌های مدرن لینوکس.

    یکی از رایج ترین سناریوهایی که نیاز به استفاده از NFS را ایجاد می کند، باز کردن دسترسی به کاربران است محیط ویندوزبه یک سیستم برنامه ریزی منابع سازمانی (ERP) مبتنی بر یونیکس. در حالی که در سیستم ERP، کاربران می توانند گزارش ایجاد کنند و/یا داده های مالی را برای تجزیه و تحلیل بیشتر به Microsoft Excel صادر کنند. سیستم فایل NFS امکان دسترسی به این فایل‌ها را در حالی که هنوز در محیط ویندوز هستند، کاهش می‌دهد و نیاز به مهارت‌های فنی تخصصی را کاهش می‌دهد و زمان صرف شده برای صادرات فایل‌ها با استفاده از اسکریپت یونیکس و سپس وارد کردن آن‌ها به یک برنامه خاص ویندوز را کاهش می‌دهد.

    همچنین ممکن است شرایطی داشته باشید که یک سیستم یونیکس داشته باشید که برای ذخیره فایل ها در برخی از شبکه های منطقه ذخیره سازی استفاده می شود (ذخیره سازی شبکه منطقه ای- SAN). اجرای NFS بر روی یک ماشین ویندوز سرور 2012 به کاربران یک سازمان اجازه می دهد تا به فایل های ذخیره شده در آنجا بدون سربار اسکریپت در سمت یونیکس دسترسی داشته باشند.

    قبل از نصب NFS، باید هر مؤلفه NFS نصب شده قبلی، مانند مؤلفه های NFS که با Services for Unix ارائه شده اند را حذف کنید.

    اجزای خدمات NFS

    دو جزء زیر از خدمات NFS در دسترس هستند.

    1. سرور برای NFS(سرور برای NFS). به طور کلی، یک کامپیوتر مبتنی بر یونیکس نمی تواند به فایل های موجود در رایانه مبتنی بر ویندوز دسترسی داشته باشد. با این حال، رایانه‌ای که Windows Server 2012 R2 و Server for NFS را اجرا می‌کند، می‌تواند به عنوان یک سرور فایل برای رایانه‌های Windows و Unix عمل کند.

    2. مشتری برای NFS(کلینت برای NFS). به طور معمول، یک کامپیوتر مبتنی بر ویندوز نمی تواند به فایل هایی که روی یک کامپیوتر مبتنی بر یونیکس هستند دسترسی داشته باشد. با این حال، رایانه‌ای که Windows Server 2012 R2 و مؤلفه Client for NFS را اجرا می‌کند، می‌تواند به فایل‌هایی که در یک سرور NFS مبتنی بر یونیکس ذخیره شده‌اند دسترسی داشته باشد.

    نصب سرور برای NFS با استفاده از PowerShell

    بیایید ببینیم چگونه از PowerShell برای نصب یک نقش NFS روی سرور و ایجاد اشتراک فایل NFS استفاده کنیم.

    1. یک پنجره Windows PowerShell را از نوار وظیفه به عنوان حساب سرپرست باز کنید.

    2. دستورات زیر را برای نصب نقش NFS روی سرور وارد کنید:

    PS C:\> Import-Module ServerManager PS C:\> Add-WindowsFeature FS-NFS-Services PS C:\> Import-Module NFS

    3. دستور زیر را برای ایجاد اشتراک فایل NFS جدید وارد کنید:

    PS C:\> New-NfsShare -Name "Test" -Path "C:\Shares\Test"

    4. برای مشاهده تمام cmdlet های PowerShell جدید مرتبط با NFS که در Windows Server 2012 R2 موجود هستند، دستور زیر را اجرا کنید:

    PS C:\> Get-Command -Module NFS

    5. روی پوشه C:\Shares\Test کلیک راست کنید، "properties" را انتخاب کنید، سپس روی زبانه NFS Sharing کلیک کنید. روی دکمه مدیریت اشتراک‌گذاری NFS کلیک کنید، در کادر محاوره‌ای که ظاهر می‌شود، می‌توانید مجوزهای دسترسی به پوشه را مدیریت کنید، دسترسی ناشناس را مجاز کنید و تنظیمات رمزگذاری فایل را پیکربندی کنید. می‌توانید با استفاده از گفتگوی اشتراک‌گذاری پیشرفته NFS بدون استفاده از PowerShell، یک پوشه را روی NFS به اشتراک بگذارید.

    تنظیم مجوزهای استاندارد

    اکنون باید چند پورت فایروال را برای عملکرد NFS باز کنیم. پورت های مورد نیاز برای عملکرد طبیعیخدمات NFS در جدول زیر ارائه شده است.

    همه می دانند که در سیستم های یونیکس، سیستم فایل به طور منطقی مجموعه ای از فایل سیستم های فیزیکی است که به یک نقطه متصل شده اند. یکی از اساسی ترین زیبایی های چنین سازمانی، به نظر من، توانایی تغییر پویا ساختار یک فایل سیستم موجود است. همچنین، به لطف تلاش های توسعه دهندگان، امروز ما این فرصت را داریم که تقریباً از هر نوع و به هر روشی مناسب، یک فایل سیستم را به هم متصل کنیم. صحبت از "روش"، من اول از همه می خواهم بر توانایی هسته سیستم عامل برای کار با سیستم های فایل از طریق اتصالات شبکه تاکید کنم.

    بسیاری از پروتکل های شبکه به ما توانایی کار با فایل های راه دور را می دهند، خواه FTP، SMB، Telnet یا SSH. به لطف توانایی کرنل، در نهایت، عدم وابستگی به نوع فایل سیستمی که در حال اتصال است، ما این قابلیت را داریم که با استفاده از برنامه mount، هر چیزی را و به هر شکلی متصل کنیم.

    امروز می خواهم در مورد NFS - Network File System صحبت کنم. این فناوری به شما این امکان را می دهد که نقاط FS را روی یک رایانه راه دور به سیستم فایل رایانه محلی متصل کنید. خود پروتکل NFS به شما اجازه می دهد تا عملیات فایل را سریع، ایمن و قابل اطمینان انجام دهید. دیگر چه نیازداریم؟ :-)

    آنچه برای این کار لازم است

    برای اینکه در مورد نسخه های NFS و پشتیبانی از آنها در کرنل های مختلف برای مدت طولانی حرف نزنیم، بلافاصله فرض می کنیم که نسخه هسته شما حداقل 2.2.18 باشد. در مستندات رسمی، توسعه دهندگان قول پشتیبانی کامل از عملکرد NFS نسخه 3 در این هسته و نسخه های بعدی را داده اند.

    نصب و راه اندازی

    برای اجرای یک سرور NFS در اوبونتو 7.10 - Gutsy Gibbon، باید بسته های nfs-common و nfs-kernel-server را نصب کنم. اگر فقط به کلاینت NFS نیاز است، nfs-kernel-server نیازی به نصب ندارد.

    تنظیم سرور

    پس از اینکه همه بسته ها با موفقیت نصب شدند، باید بررسی کنید که آیا شبح NFS در حال اجرا است:

    /etc/init.d/nfs-kernel-server status

    اگر دیمون در حال اجرا نیست، باید با دستور شروع شود

    /etc/init.d/nfs-kernel-server start

    پس از اینکه همه چیز با موفقیت شروع شد، می توانید فایل سیستم را صادر کنید. این فرآیند به خودی خود بسیار ساده است و حداقل زمان می برد.

    فایل اصلی پیکربندی سرور NFS در /etc/exports قرار دارد و دارای فرمت زیر است:

    فهرست ماشین 1 (گزینه 11، گزینه 12) ماشین 2 (گزینه 21، گزینه 22)

    فهرست راهنمامسیر مطلقبه دایرکتوری سرور FS که می خواهید به آن دسترسی داشته باشید

    machineX- نام DNS یا آدرس IP رایانه مشتری که دسترسی از آن مجاز است

    گزینهXX- پارامترهای صادرات FS، رایج ترین آنها:

    • ro- دسترسی به فایل ها فقط برای خواندن مجاز است
    • rw- دسترسی برای خواندن / نوشتن داده شده است
    • no_root_squash- به‌طور پیش‌فرض، اگر به منبع NFS به‌عنوان روت وصل شوید، سرور به‌خاطر ایمنی، از طرف کاربر هیچ‌کس به فایل‌های سمت خود دسترسی خواهد داشت. با این حال، اگر این گزینه را فعال کنید، فایل های سمت سرور به صورت روت قابل دسترسی خواهند بود. مراقب این گزینه باشید.
    • no_subtree_check- به طور پیش فرض، اگر نه کل پارتیشن را روی سرور، بلکه فقط بخشی از سیستم فایل را صادر کنید، دیمون بررسی می کند که آیا فایل درخواستی به صورت فیزیکی در همان پارتیشن قرار دارد یا خیر. اگر کل پارتیشن را صادر می کنید یا نقطه اتصال FS صادر شده بر روی فایل های دیگر حجم های فیزیکی تأثیر نمی گذارد، می توانید این گزینه را فعال کنید. این باعث افزایش سرعت سرور می شود.
    • همگام سازی- در صورت وجود احتمال قطع ناگهانی یا قطع برق سرور، این گزینه را فعال کنید. اگر این گزینه فعال نباشد، خطر از دست رفتن داده ها هنگام توقف ناگهانی سرور NFS بسیار افزایش می یابد.

    بنابراین، فرض کنید می‌خواهیم به رایانه رومیزی ashep به فهرست /var/backups در رایانه لپ‌تاپ asep دسترسی دهیم. برای کپی کردن فایل‌های پشتیبان‌گیری شده از asep-desktop، دسترسی به دایرکتوری لازم است. فایل من به این صورت است:

    /var/backups ashep-desktop(rw,no_subtree_check,sync)

    پس از افزودن یک خط به /etc/exports، باید سرور NFS را مجددا راه اندازی کنید تا تغییرات اعمال شوند.

    /etc/init.d/nfs-kernel-server راه اندازی مجدد

    همین. می توانید اتصال FS صادر شده را در رایانه مشتری شروع کنید.

    راه اندازی مشتری

    در سمت کلاینت، یک سیستم فایل راه دور به همان روشی که سایر سیستم ها نصب می شود - با دستور mount. همچنین، در صورت نیاز به اتصال خودکار فایل سیستم هنگام بوت شدن سیستم عامل، هیچ کس شما را از استفاده از /etc/fstab منع نمی کند. بنابراین، گزینه mount به صورت زیر خواهد بود:

    Mount -t nfs asep-laptop:/var/backups/ /mnt/ashep-laptop/backups/

    اگر همه چیز به خوبی پیش رفت و باید در هنگام بوت به طور خودکار به یک فایل سیستم از راه دور متصل شوید، فقط یک خط به /etc/fstab اضافه کنید:

    Ashep-laptop:/var/backups /mnt/ashep-laptop/backups nfs auto 0 0

    چه چیز دیگری

    بنابراین ما یک نمای کلی کاربردی و کوچک از امکانات NFS به دست آوردیم. البته این تنها بخش کوچکی از کاری است که NFS می تواند انجام دهد. این برای استفاده در خانه یا در یک دفتر کوچک کافی است. اگر این برای شما کافی نیست، توصیه می کنم ابتدا بخوانید

    #image.jpg وقت بخیر خوانندگان و مهمانان وبلاگ من. یک وقفه بسیار طولانی بین پست ها وجود داشت، اما من به نبرد برگشتم). در مقاله امروز، من نگاهی به عملکرد پروتکل NFS، و راه اندازی سرور NFS و سرویس گیرنده NFS در لینوکس.

    مقدمه ای بر NFS

    NFS (سیستم فایل شبکه- سیستم فایل شبکه) به نظر من - راه حل کاملدر یک شبکه محلی که در آن به سرعت (سریعتر از SAMBA و منابع کمتر در مقایسه با سیستم های فایل راه دور با رمزگذاری - sshfs، SFTP، و غیره...) نیاز دارید، تبادل داده و امنیت اطلاعات ارسال شده در خط مقدم نیست. پروتکل NFSبه شما این امکان را می دهد که سیستم های فایل راه دور را روی شبکه در یک درخت فهرست محلی مانند یک سیستم فایل دیسک سوار کنید.

    بنابراین، برنامه های محلی می توانند با سیستم فایل راه دور مانند سیستم محلی کار کنند. اما باید مراقب (!) باشید پیکربندی NFS، زیرا با یک پیکربندی خاص، می توانید سیستم عامل مشتری را در انتظار I/O بی پایان معلق کنید.

    پروتکل NFSبر اساس کار پروتکل RPC، که هنوز از درک من خارج است)) بنابراین مطالب موجود در مقاله کمی مبهم خواهد بود ... قبل از اینکه بتوانید از NFS استفاده کنید، چه سرور و چه مشتری، باید مطمئن شوید که هسته شما از فایل NFS پشتیبانی می کند. سیستم. می توانید با جستجوی خطوط مربوطه در فایل /proc/filesystems بررسی کنید که آیا هسته از سیستم فایل NFS پشتیبانی می کند یا خیر:

    ARCHIV ~ # grep nfs /proc/filesystems nodev nfs nodev nfs4 nodev nfsd

    اگر هیچ خط مشخصی در فایل /proc/filesystems وجود ندارد، باید بسته‌های توضیح داده شده در زیر را نصب کنید. این به احتمال زیاد به ماژول های هسته وابسته اجازه می دهد تا برای پشتیبانی از فایل سیستم های مناسب نصب شوند.

    اگر پس از نصب بسته ها، پشتیبانی NFS در فایل تعیین شده نمایش داده نمی شود، برای فعال کردن این ویژگی لازم است که هسته را مجددا کامپایل کنید.

    داستان سیستم فایل شبکه

    پروتکل NFSتوسط Sun Microsystems توسعه یافته و در تاریخچه خود چهار نسخه دارد. NFSv1 در سال 1989 توسعه یافت و آزمایشی بود و بر روی پروتکل UDP اجرا می شد. نسخه یک در RFC 1094 توضیح داده شده است.

    NFSv2 در همان سال 1989 منتشر شد، توسط همان RFC1094 توصیف شد و همچنین بر اساس پروتکل UDP بود، در حالی که اجازه می داد حداقل 2 گیگابایت از یک فایل خوانده شود. NFSv3 در سال 1995 نهایی شد و در RFC 1813 شرح داده شد.

    نوآوری اصلی نسخه سوم پشتیبانی از فایل ها بود سایز بزرگ، پشتیبانی از پروتکل TCP و بسته های بزرگ TCP اضافه شده است که عملکرد فناوری را به طور قابل توجهی تسریع می کند. NFSv4 در سال 2000 نهایی شد و در RFC 3010 شرح داده شد، در سال 2030 تجدید نظر شد و در RFC 3530 شرح داده شد.

    نسخه چهارم شامل بهبود عملکرد، پشتیبانی از ابزارهای مختلف احراز هویت (به طور خاص، Kerberos و LIPKEY با اجرای پروتکل RPCSEC GSS) و لیست های کنترل دسترسی (هر دو نوع POSIX و Windows) بود. نسخه NFS v4.1 در سال 2010 توسط IESG تایید شد و RFC 5661 را دریافت کرد.

    نوآوری اصلی نسخه 4.1 مشخصات pNFS - موازی NFS، مکانیزمی برای دسترسی موازی یک کلاینت NFS به داده های چندین سرور NFS توزیع شده است. وجود چنین مکانیزمی در یک سیستم فایل شبکه نمونه به ایجاد سیستم های ذخیره سازی و اطلاعاتی توزیع شده "ابر" ("ابر") کمک می کند.

    سرور NFS

    از آنجایی که داریم NFS- این شبکهفایل سیستم، باید پیکربندی کنید خالصدر لینوکس (همچنین می توانید مقاله مفاهیم اصلی شبکه ها را مطالعه کنید). در مرحله بعد، باید بسته مناسب را نصب کنید. در دبیان این بسته‌های nfs-kernel-server و nfs-common است، در RedHat بسته‌های nfs-utils است.

    و همچنین، لازم است اجازه راه اندازی شیطان را در سطوح اجرای مناسب داده شود (دستور در RedHat /sbin/chkconfig nfs روشن است، در Debian - /usr/sbin/update-rc.d پیش فرض های nfs-kernel-server).

    بسته های نصب شده در دبیان به ترتیب زیر اجرا می شوند:

    بایگانی ~ # ls -la /etc/rc2.d/ | grep nfs lrwxrwxrwx ریشه تک ریشه 20 اکتبر 18 15:02 S15nfs-common -> ../init.d/nfs-common lrwxrwxrwx ریشه تک ریشه 20 هفت اکتبر 20 دو 01:23 - S16-S16. .d/nfs-kernel-server

    به عبارت دیگر ابتدا اجرا کنید nfs-common، بعداً خود سرور nfs-kernel-server.

    در RedHat وضعیت مشابه است، با تنها استثنا که اسکریپت 1 فراخوانی می شود nfslock، و سرور به سادگی نامیده می شود nfs. حرفه ای nfs-commonسایت دبیان به معنای واقعی کلمه موارد زیر را به ما می گوید: فایل های به اشتراک گذاشته شدهبرای یک سرویس گیرنده و سرور NFS، این بسته باید روی دستگاهی نصب شود که به عنوان یک سرویس گیرنده یا سرور NFS عمل می کند.

    این بسته شامل برنامه های lockd، statd، showmount، nfsstat، gssd و idmapd می باشد. پس از بررسی محتویات اسکریپت راه اندازی /etc/init.d/nfs-common، می توانید دنباله کار زیر را ردیابی کنید: اسکریپت وجود فایل باینری قابل اجرا /sbin/rpc.statd را بررسی می کند، وجود را بررسی می کند. در فایل‌های /etc/default/nfs-common، /etc/fstab و /etc/exports ویژگی‌هایی که برای اجرا به imps نیاز دارند. idmapdو gssd، دیمون را شروع می کند /sbin/rpc.statd، سپس قبل از شروع /usr/sbin/rpc.idmapd و /usr/sbin/rpc.gssd وجود این باینری های اجرایی را بررسی می کند، سپس برای شیطان /usr/sbin/rpc.idmapd وجود sunrpc، nfs را بررسی می کند. و ماژول های هسته nfsd و همچنین پشتیبانی از سیستم فایل rpc_pipefs در هسته (به عبارت دیگر وجود آن در فایل /proc/filesystems)، اگر همه چیز موفقیت آمیز باشد، راه اندازی می شود. /usr/sbin/rpc.idmapd. علاوه بر این، برای یک شیطان /usr/sbin/rpc.gssdماژول هسته rpcsec_gss_krb5 را بررسی می کند و imp را شروع می کند.

    در صورت مشاهده مطالب اسکریپت راه اندازی سرور NFSدر دبیان (/etc/init.d/nfs-kernel-server)، دنباله زیر قابل ردیابی است: هنگام راه اندازی، اسکریپت وجود فایل /etc/exports را بررسی می کند، وجود ماژول هسته nfsd، وجود پشتیبانی از سیستم فایل NFS در هسته لینوکس (کلمات دیگر در فایل /proc/filesystems)، اگر همه چیز سر جای خود باشد، شیطان شروع می شود /usr/sbin/rpc.nfsd، سپس بررسی می کند که آیا پارامتر NEED_SVCGSSD تنظیم شده است (در فایل گزینه های سرور /etc/default/nfs-kernel-server تنظیم شده است) و در صورت تنظیم، شیطان را راه اندازی می کند. /usr/sbin/rpc.svcgssd، آخرین بار شیطان را راه اندازی می کند /usr/sbin/rpc.mountd. این اسکریپت این را نشان می دهد عملکرد یک سرور NFS شامل: Demons rpc.nfsd، rpc.mountd و اگر از احراز هویت Kerberos استفاده می شود، شیطان rcp.svcgssd نیز استفاده می شود. شیطان rpc.rquotad و nfslogd هنوز در کلاه قرمزی در حال اجرا هستند (در دبیان به دلایلی اطلاعاتی در مورد این شیطان و دلایل عدم حضور آن پیدا نکردم، ظاهراً حذف شده است ...).

    از اینجا معلوم می شود که سرور سیستم فایل شبکه از فرآیندهای زیر تشکیل شده است (خواندن - شیاطین)واقع در دایرکتوری های /sbin و /usr/sbin:

    • rpc.statd- باید وضعیت شبکه را نظارت کنید (با نام مستعار مانیتور وضعیت شبکه، با نام مستعار NSM). این به شما امکان می دهد پس از خرابی / راه اندازی مجدد قفل را به درستی لغو کنید. از برنامه /usr/sbin/sm-notify برای اطلاع رسانی در مورد تخلفات استفاده می کند. Bes statd هم روی سرورها و هم روی کلاینت ها کار می کند. قبلاً این سرور برای کار کردن rpc.lockd مورد نیاز بود، اما اکنون هسته مسئولیت قفل ها را بر عهده دارد (توجه: اگر اشتباه نکنم #image.jpg). (برنامه RPC 100 هزار 20 یک و 100 هزار 20 چهار - در نسخه های جدید)
    • rpc.lockd- Bes lockd lockd (معروف به مدیر قفل NFS (NLM)) درخواست‌های قفل کردن فایل‌ها را مدیریت می‌کند. Bes blocking هم روی سرورها و هم روی کلاینت ها کار می کند. مشتریان درخواست قفل فایل را می دهند و سرورها آن را اعطا می کنند. (منسوخ شده و در توزیع های جدید به عنوان شیطان استفاده نمی شود. عملکردهای آن در توزیع های مدرن (با هسته قدیمی تر از 2.2.18) توسط هسته، به طور دقیق تر توسط ماژول هسته (قفل شده) انجام می شود.) (برنامه RPC 100024)
    • rpc.nfsd- دیو اصلی سرور NFS nfsd است (در نسخه های جدید گاهی اوقات به آن گفته می شود nfsd4). این imp درخواست های مشتریان NFS را ارائه می دهد. گزینه RPCNFSDCOUNT در فایل /etc/default/nfs-kernel-server در دبیان و NFSDCOUNT در فایل /etc/sysconfig/nfs در RedHat تعداد imps های شروع را تعیین می کند (پیش فرض 8 است). (برنامه RPC 100003)
    • rpc.mountd- NFS mountd mount درخواست های کلاینت را برای نصب دایرکتوری ها کنترل می کند. Bes mountd روی سرورهای NFS کار می کند. (برنامه RPC 100005)
    • rpc.idmapd- idmapd برای NFSv4 bes روی سرور، uid/gid محلی کاربران را به فرمت name@domain، و سرویس روی کلاینت، نام کاربران/گروه‌های فرم name@domain را به شناسه‌های کاربر و گروه محلی تبدیل می‌کند. با توجه به فایل پیکربندی /etc/idmapd.conf، برای جزئیات بیشتر به man idmapd.conf مراجعه کنید:.
    • علاوه بر این، imps در نسخه های قدیمی NFS استفاده می شد: nfslogd- شیطان گزارش NFS فعالیت را برای فایل سیستم های صادر شده ضبط می کند، روی سرورهای NFS کار می کند و سهمیه- سرور سهمیه راه دور اطلاعاتی در مورد سهمیه های کاربر در سیستم های فایل راه دور ارائه می دهد، می تواند هم بر روی سرورها و هم بر روی کلاینت ها کار کند (برنامه RPC 100011)

    در NFSv4، هنگام استفاده از Kerberos، شیاطین نیز راه اندازی می شوند:

    • rpc.gssd- Bes NFSv4 روش های احراز هویت را از طریق GSS-API (احراز هویت Kerberos) ارائه می دهد. روی کلاینت و سرور کار می کند.
    • rpc.svcgssd- سرور NFSv4 که احراز هویت مشتری سمت سرور را فراهم می کند.

    پورت مپ و پروتکل RPC (Sun RPC)

    به غیر از بسته های فوق، NFSv2 و v3 برای درست کار کردن به یک بسته اضافی نیاز دارند پورت مپ(در توزیع های جدیدتر با تغییر نام به rpcbind). این بسته معمولاً به صورت خودکار با NFS به عنوان وابستگی نصب می شود و کار سرور RPC را پیاده سازی می کند، به عبارت دیگر وظیفه انتساب پورت پویا را برای برخی از سرویس های ثبت شده در سرور RPC بر عهده دارد.

    به معنای واقعی کلمه، طبق مستندات، این سروری است که اعداد برنامه RPC (تماس رویه از راه دور) را به شماره پورت TCP / UDP تبدیل می کند. portmap بر روی چندین نهاد عمل می کند: تماس ها یا درخواست های RPC، پورت های TCP/UDP، نسخه پروتکل (tcp یا udp)، شماره برنامه ها و نسخه های برنامه. portmap bes توسط اسکریپت /etc/init.d/portmap قبل از شروع خدمات NFS شروع می شود.

    به طور خلاصه، وظیفه یک سرور RPC (تماس رویه از راه دور) پردازش تماس های RPC (به اصطلاح رویه های RPC) از فرآیندهای محلی و راه دور است.

    با استفاده از تماس‌های RPC، سرویس‌ها ثبت نام می‌کنند یا خود را به/از نگاشت پورت می‌برند (با نام مستعار portmapper، aka portmap، aka portmapper، با نام مستعار، در نسخه‌های جدید، rpcbind)، و کلاینت‌هایی که از تماس‌های RPC استفاده می‌کنند، درخواست‌ها را به پورت مپر هدایت می‌کنند. نام کاربرپسند سرویس های برنامه و اعداد مربوط به آنها در فایل /etc/rpc تعریف شده است.

    از آنجایی که برخی از سرویس ها درخواست مربوطه را ارسال کرده و خود را با سرور RPC در نگاشت پورت ثبت می کنند، سرور RPC نقشه ها را اختصاص می دهد. سرویس TCPو پورت های UDP که سرویس بر روی آنها شروع شده است و اطلاعات مربوط به سرویس در حال اجرا (در مورد نام)، شماره منحصر به فرد سرویس (در توافق با /etc/rpc)، در مورد پروتکل و پورتی که در آن سرویس در حال اجرا و در مورد نسخه سرویس است و در صورت درخواست، اطلاعات مشخص شده را در اختیار مشتریان قرار می دهد. خود مبدل پورت دارای شماره برنامه (100000)، شماره نسخه 2، پورت TCP 100 یازده و پورت UDP 111 است.

    در بالا، هنگام تعیین ترکیب شیاطین سرور NFS، شماره های اصلی برنامه RPC را نشان دادم. احتمالاً من شما را کمی با این پاراگراف اشتباه گرفته ام، بنابراین عبارت اصلی را می گویم که باید روشن شود: عملکرد اصلی پورت نگاشت این است که پورتی را که برنامه درخواستی در آن اجرا می شود به او (کلاینت) برگرداند. بر این اساس، اگر مشتری نیاز به تماس با RPC با شماره برنامه خاصی داشته باشد، ابتدا باید با فرآیند portmap در دستگاه سرور تماس گرفته و شماره پورت را جستجو کند تا با سرویس RPC مورد نیاز خود ارتباط برقرار کند.

    عملکرد سرور RPC را می توان با مراحل زیر نشان داد:

    ابزار rpcinfo برای دریافت اطلاعات از سرور RPC استفاده می شود. هنگام تعیین صفات -p برنامه میزبانهمه برنامه‌های RPC ثبت‌شده را فهرست می‌کند میزبان. بدون تعیین میزبان، برنامه خدمات را در لوکال هاست نمایش می دهد. مثال:

    بایگانی ~ # برنامه rpcinfo -p نسخه پروتو پورت 100k دو tcp 100 eleven portmapper 100k دو udp 100 eleven portmapper 100k 20 چهار یک udp 50 ninek چهارصد 50 یک وضعیت 100k 20 چهار دو و یک tcp وضعیت 100k 100 40 fourk سیصد 10 nlockmgr 100k 20 one Three udp 40 fourk سیصد 10 nlockmgr 100k 20 one Four udp 40 fourk سیصد 10 nlockmgr 100k 20 یک یک tcp 40 fourk 10th nlockmgr 50 eg درست صد 50 یک nlockmgr 100 هزار 20 یک چهار tcp 40 چهار هزار و هشتصد 50 یک nlockmgr 100 هزار سه دو tcp دو هزار و 40 نه nfs 100 هزار سه سه tcp دو هزار و 40 نه nfs 100 هزار سه چهار tcp 10 هزار سه دو udp دو هزار 40 نه nfs 100 هزار سه سه udp دو هزار 40 نه nfs 100 هزار سه چهار udp دو هزار و 40 نه nfs 100 هزار 5 یک udp 50 یک هزار و سیصد 6 mountd 100 هزار 5 یک هزار tcp 40 5 مونتد 100 هزار 5 دو udp 50 هزار و سیصد 6 سوار 100 هزار 5 دو تی سی پی 40 هزار و چهارصد 5 سوار 100 هزار 5 سه یو پی 50 هزار و سیصد 6 سوار 100 هزار 5 سه تی سی پی 40 هزار و چهارصد 5 سوار

    همانطور که می بینید، rpcinfo شماره برنامه ثبت شده، نسخه، پروتکل، پورت و نام را (در ستون هایی از چپ به راست) فهرست می کند.

    با rpcinfo می توانید ثبت یک برنامه را حذف کنید یا اطلاعاتی در مورد یک سرویس RPC خاص دریافت کنید (گزینه های بیشتر در man rpcinfo). همانطور که می بینید، نسخه portmapper دو شیاطین در پورت های udp و tcp، rpc.statd نسخه یک در پورت های udp و tcp، قفل NFS ثبت شده اند. مدیر نسخه 1،3،4، سرور demon nfs نسخه 2،3،4، و همچنین demon mount نسخه های 1،2،3.

    سرور NFS (به طور دقیق تر demon rpc.nfsd) درخواست ها را از مشتری به شکل دیتاگرام های UDP در پورت 2049 دریافت می کند. علیرغم این واقعیت که NFS با یک مبدل پورت کار می کند، که به سرور اجازه می دهد از پورت های اختصاص داده شده به صورت پویا استفاده کند، پورت UDP 2000 40 9 در اکثر پیاده سازی ها با NFS کدگذاری شده است.

    عملکرد پروتکل سیستم فایل شبکه

    نصب از راه دور NFS

    فرآیند نصب یک فایل سیستم NFS راه دور را می توان به صورت زیر نشان داد:

    شرح پروتکل NFS هنگام نصب دایرکتوری راه دور:

    1. یک سرور RPC روی سرور و کلاینت (معمولاً در هنگام بوت) راه اندازی می شود، توسط فرآیند portmapper نگهداری می شود و در پورت های tcp/111 و udp/111 ثبت می شود.
    2. خدماتی راه اندازی می شوند (rpc.nfsd، rpc.statd و غیره)، که در سرور RPC ثبت می شوند و در پورت های شبکه تصادفی ثبت می شوند (اگر یک پورت ثابت در تنظیمات سرویس مشخص نشده باشد).
    3. دستور mount در رایانه مشتری، درخواستی را برای مونت کردن دایرکتوری شبکه به هسته ارسال می کند که نوع سیستم فایل، میزبان و در واقع دایرکتوری را نشان می دهد، هسته یک درخواست RPC را به فرآیند portmap در سرور NFS در udp/111 ارسال می کند. پورت (اگر کلاینت عملکردی برای کار از طریق tcp نداشته باشد)
    4. هسته سرور NFS از RPC برای وجود rpc.mountd پرس و جو می کند و پورت شبکه ای را که imp در حال اجرا است به هسته مشتری باز می گرداند.
    5. mount یک درخواست RPC را به درگاهی که rpc.mountd در آن اجرا می شود ارسال می کند. در حال حاضر، سرور NFS می تواند یک کلاینت را بر اساس آدرس IP و شماره پورت آن اعتبارسنجی کند تا ببیند آیا آن کلاینت می تواند سیستم فایل تعیین شده را نصب کند یا خیر.
    6. mount imp شرحی از سیستم فایل درخواستی را برمی‌گرداند.
    7. دستور mount کلاینت یک فراخوانی سیستم mount صادر می کند تا توصیفگر فایل بدست آمده در مرحله 5 را با یک نقطه اتصال محلی در میزبان مشتری مرتبط کند. توصیفگر فایل در کد سرویس گیرنده NFS ذخیره می شود و از آن نقطه به بعد، هرگونه دسترسی توسط پردازش های کاربر به فایل های موجود در سیستم فایل سرور، از توصیف کننده فایل به عنوان نقطه شروع استفاده می کند.

    تبادل داده بین کلاینت و سرور NFS

    دسترسی معمولی به یک فایل سیستم راه دور را می توان با طرح زیر توصیف کرد:

    شرح فرآیند دسترسی به فایلی که در سرور NFS قرار دارد:

    راه اندازی سرور NFS

    تنظیم سروراساساً در مورد تعیین دایرکتوری های محلی است که مجاز به نصب توسط سیستم های راه دور در فایل /etc/exports هستند. این عمل نامیده می شود صادرات سلسله مراتب دایرکتوری. منابع اصلی اطلاعات در مورد دایرکتوری های صادر شده فایل های زیر هستند:

    • /etc/exports- فایل پیکربندی اصلی که پیکربندی دایرکتوری های صادر شده را ذخیره می کند. هنگام راه اندازی NFS و استفاده از ابزار exportfs استفاده می شود.
    • /var/lib/nfs/xtab- حاوی لیستی از دایرکتوری های نصب شده توسط کلاینت های راه دور است. هنگامی که یک کلاینت سعی می کند یک سلسله مراتب را نصب کند (یک ورودی mount ایجاد می شود) توسط شیطان rpc.mountd استفاده می شود.
    • /var/lib/nfs/etab- فهرستی از دایرکتوری‌هایی که می‌توانند توسط سیستم‌های راه دور نصب شوند که تمام ویژگی‌های فهرست‌های صادر شده را نشان می‌دهد.
    • /var/lib/nfs/rmtab- فهرست دایرکتوری هایی که در حال حاضر صادر نشده اند.
    • /proc/fs/nfsd- یک سیستم فایل ویژه (هسته 2.6) برای مدیریت یک سرور NFS.
      • صادرات- فهرست سلسله مراتب های صادر شده فعال و مشتریانی که به آنها صادر شده اند، همچنین دارایی ها. هسته دریافت می کند این اطلاعاتاز /var/lib/nfs/xtab.
      • موضوعات- شامل تعداد رشته ها (همچنین قابل تغییر است)
      • با استفاده از filehandle می توانید یک اشاره گر به یک فایل دریافت کنید
      • و غیره...
    • /proc/net/rpc- حاوی آمار "خام" (خام) است که می توان با استفاده از nfsstat و همچنین کش های مختلف به دست آورد.
    • /var/run/portmap_mapping- اطلاعات مربوط به خدمات ثبت شده در RPC

    توجه داشته باشید:به طور کلی، تفاسیر و فرمول‌بندی‌های زیادی در مورد هدف فایل‌های xtab، etab، rmtab در اینترنت وجود دارد، نمی‌دانم چه کسی را باور کنم #image.jpg حتی در http://nfs.sourceforge.net/ تفسیر بدون ابهام نیست

    پیکربندی فایل /etc/exports

    به طور معمول، فایل /etc/exports تنها فایلی است که برای عملکرد سرور NFS باید ویرایش شود. این فایلویژگی های زیر را کنترل می کند:

    • کدام مشتریانمی تواند به فایل های روی سرور دسترسی داشته باشد
    • کدام سلسله مراتب؟دایرکتوری های روی سرور برای هر مشتری قابل دسترسی است
    • نام مشتریان سفارشی چگونه خواهد بود نمایش دادهبه نام های کاربری محلی

    فرقی نمی کند که کدام خط از فایل صادراتی فرمت زیر را داشته باشد:

    exportpoint client1 (توابع) [client2 (توابع) ...]

    جایی که export_pointمسیر مطلق سلسله مراتب دایرکتوری صادر شده، مشتری 1 - nنام 1 یا چند کلاینت یا آدرس IP که با فاصله از هم جدا شده اند و مجاز به نصب هستند export_point. کارکردقوانین mount را برای کلاینت که قبل از گزینه ها نشان داده شده است، ترسیم کنید.

    اینجا معمولی است نمونه پیکربندی فایل exports:

    ARCHIV ~ # cat /etc/exports /archiv1 files(rw, sync) 10.0.0.1 (ro, sync) 10.0.230.1/24 (ro, sync)

    در این مثال، فایل‌ها و رایانه‌های 10.0.0.1 اجازه دسترسی به نقطه صادرات /archiv1 دارند، در حالی که میزبان فایل‌ها خواندن/نوشتن است و میزبان 10.0.0.1 و زیرشبکه 10.0.230.1/24 دسترسی فقط خواندنی دارند.

    توضیحات میزبان در /etc/exports در قالب زیر مجاز است:

    • نام گره‌ها به‌عنوان فایل یا فایل توصیف می‌شوند.DOMAIN.local.
    • شرح ماسک دامنه در انجام شده است فرمت زیر: *DOMAIN.local شامل تمام گره های دامنه DOMAIN.local است.
    • زیرشبکه ها به عنوان جفت آدرس IP/ماسک مشخص می شوند. به عنوان مثال: 10.0.0.0/255.255.255.0 شامل تمام هاست هایی است که آدرس آنها با 10.0.0 شروع می شود.
    • تعیین نام گروه شبکه @myclients که به منبع دسترسی دارد (هنگام استفاده از سرور NIS)

    توابع عمومی برای صدور سلسله مراتب کاتالوگ

    توابع رایج زیر در فایل صادرات استفاده می شود(اول، توابع استفاده شده به طور پیش فرض در اکثر سیستم ها نشان داده شده اند، توابع غیر پیش فرض در پرانتز):

    • auth_nlm (no_auth_nlm)یا safe_locks (insecure_locks)- مشخص می کند که سرور باید به دنبال احراز هویت درخواست های قفل (با استفاده از پروتکل NFS Lock Manager) باشد.
    • پنهان کردن (پنهان کردن)- اگر سرور دو سلسله مراتب دایرکتوری را صادر کند که یکی در دیگری تودرتو (نصب شده) است. البته کلاینت باید سلسله مراتب دوم (فرزند) را mount کند، در غیر این صورت نقطه اتصال سلسله مراتب فرزند مانند یک دایرکتوری خالی به نظر می رسد. تابع nohide منجر به سلسله‌مراتب دایرکتوری دوم بدون نصب ساده می‌شود. (توجه: من نتوانستم این گزینه را مجبور به کار کنم ...)
    • ro(rw)- فقط به درخواست های خواندنی (نوشتن) اجازه می دهد. (در نهایت، خواندن/نوشتن یا عدم خواندن آن بر اساس مجوزهای سیستم فایل تعیین می شود، در حالی که سرور قادر به تشخیص درخواست خواندن فایل و درخواست اجرا نیست، بنابراین در صورتی که کاربر خوانده یا اجرا کرده باشد، امکان خواندن را فراهم می کند. مجوزها.)
    • امن (ناامن)- درخواست هایی مبنی بر اینکه درخواست های NFS از پورت های امن می آیند (< 1024), чтобы программа без прав root не могла монтировать иерархию каталогов.
    • subtree_check (no_subtree_check)- اگر یک زیر شاخه از سیستم فایل صادر شده باشد، اما نه کل فایل سیستم، سرور بررسی می کند که آیا فایل درخواستی در زیر شاخه صادر شده است یا خیر. غیرفعال کردن تأیید امنیت را کاهش می دهد اما سرعت انتقال داده را افزایش می دهد.
    • همگام سازی (ناهمگام)- مشخص می کند که سرور باید تنها پس از اینکه تنظیمات انجام شده توسط آن درخواست ها روی دیسک نوشته شده است به درخواست ها پاسخ دهد. تابع async به سرور دستور می دهد که منتظر نوشتن اطلاعات روی دیسک نماند، که باعث افزایش عملکرد اما کاهش قابلیت اطمینان می شود. در صورت قطع اتصال یا خرابی تجهیزات، اطلاعات ممکن است از دست بروند.
    • wdelay (no_wdelay)- به سرور دستور می دهد اگر درخواست نوشتن بعدی در انتظار است، اجرای درخواست های نوشتن را به تاخیر بیاندازد و داده ها را در بلوک های بزرگتر بنویسد. این باعث بهبود عملکرد هنگام ارسال صف های بزرگ دستورات نوشتن می شود. no_wdelay تعیین می‌کند که اجرای دستور نوشتن به تأخیر نیفتد، که اگر سرور تعداد نامحدودی از دستورات نامرتبط را دریافت کند، می‌تواند مفید باشد.

    لینک های نمادین و فایل های دستگاه را صادر کنید.هنگام صادرات سلسله مراتبی از دایرکتوری های حاوی پیوندهای نمادین، شی پیوند باید در دسترس سیستم مشتری (راه دور) باشد، به عبارت دیگر، یکی از قوانین زیر باید درست باشد:

    • شی پیوند باید در سیستم فایل مشتری وجود داشته باشد
    • شما باید شی پیوند را صادر و سوار کنید

    فایل دستگاه به رابط اشاره دارد هسته های لینوکس. هنگامی که یک فایل دستگاه را صادر می کنید، این رابط صادر می شود. اگر سیستم مشتری دستگاهی از همان نوع نداشته باشد، دستگاه صادر شده کار نخواهد کرد.

    در سیستم مشتری، هنگام نصب اشیاء NFS، می توان از گزینه nodev استفاده کرد تا از فایل های دستگاه در دایرکتوری های نصب شده استفاده نشود.

    توابع پیش فرض در سیستم های مختلف ممکن است متفاوت باشد، آنها را می توان در فایل /var/lib/nfs/etab یافت. پس از توصیف دایرکتوری صادر شده در /etc/exports و راه اندازی مجدد سرور NFS، تمام توابع از دست رفته (خواندن: توابع پیش فرض) در فایل /var/lib/nfs/etab منعکس خواهند شد.

    توابع برای نمایش (تطبیق) شناسه های کاربر

    برای درک بهتر موارد زیر به شما توصیه می کنم مقاله مدیریت کاربران لینوکس را مطالعه کنید. هر کاربر لینوکس UID و GID اصلی خود را دارد که در فایل های /etc/passwd و /etc/group توضیح داده شده است.

    سرور NFS فرض می کند که سیستم عامل میزبان راه دور کاربران را احراز هویت کرده و UID و GID صحیح را به آنها اختصاص داده است. صادرات فایل ها به کاربران سیستم کلاینت همان دسترسی را به آن فایل ها می دهد که گویی مستقیماً به سرور وارد می شوند. بر این اساس، هنگامی که یک سرویس گیرنده NFS درخواستی را به یک سرور ارسال می کند، سرور از UID و GID برای شناسایی کاربر استفاده می کند. سیستم محلی، که می تواند منجر به برخی مشکلات شود:


    توابع زیر قوانینی را برای نمایش کاربران راه دور در کاربران محلی تنظیم می کنند:

    نمونه ای از استفاده از فایل نگاشت کاربر:

    بایگانی ~ # cat /etc/file_maps_users # کاربران نقشه برداری # راه دور اظهار نظر محلی 0-50 هزار و دو # کاربر نقشه برداری با UID راه دور 0-50 به UID محلی هزار و دو gid 0-50 هزار و دو # کاربران نقشه برداری با /span GID 0-50 از راه دور به GID 1002 محلی

    مدیریت سرور NFS

    سرور NFS با استفاده از ابزارهای زیر مدیریت می شود:

    • nfsstat
    • showmssecur (ناامن) unt
    • صادرات

    nfsstat: آمار NFS و RPC

    ابزار nfsstat به شما امکان می دهد آمار سرورهای RPC و NFS را مشاهده کنید. توابع فرمان را می توان در man nfsstat مشاهده کرد.

    showmount: نمایش اطلاعات در مورد وضعیت NFS

    ابزار showmount rpc.mountd imp را در میزبان راه دور برای فایل سیستم های نصب شده جستجو می کند. به طور پیش فرض، یک لیست مرتب شده از مشتریان برگردانده می شود. کلیدها:

    • --همه- لیستی از کلاینت ها و نقاط نصب داده می شود که نشان می دهد مشتری دایرکتوری را کجا نصب کرده است. این اطلاعات ممکن است قابل اعتماد نباشد.
    • -- دایرکتوری ها- لیست نقاط سوار شدن
    • -- صادرات- لیستی از سیستم های فایل صادر شده بر اساس اعتقادات nfsd ارائه شده است

    اجرای showmount بدون آرگومان، اطلاعات سیستم‌هایی را که مجاز به نصب هستند در کنسول چاپ می‌کند محلیمجموعه ها. به عنوان مثال، میزبان ARCHIV لیستی از دایرکتوری های صادر شده با آدرس های IP میزبان هایی که مجاز به نصب مجموعه های تعیین شده هستند را در اختیار ما قرار می دهد:

    FILES ~ # showmount --exports بایگانی صادر کردن لیست برای بایگانی: /archiv-big 10.0.0.2 /archiv-small 10.0.0.2

    اگر یک نام میزبان / IP را در آرگومان مشخص کنید، اطلاعات مربوط به این میزبان نمایش داده می شود:

    ARCHIV ~ # فایل های showmount clnt_create: RPC: برنامه ثبت نشده است # این پیام به ما می گوید که شیطان NFSd در فایل های میزبان اجرا نمی شود

    exportfs: مدیریت دایرکتوری های صادراتی

    این دستور مجموعه های صادر شده، داده ها را در یک فایل ارائه می دهد /etc/exports، دقیق تر است که بنویسیم سرویس نمی دهد، اما با فایل همگام می شود /var/lib/nfs/xtabو موارد موجود را از xtab حذف می کند. exportfs زمانی انجام می شود که شیطان nfsd را با آرگومان -r شروع می کند. ابزار exportfs در حالت هسته 2.6 از طریق فایل‌های موجود در فهرست /var/lib/nfs/ با شیطان rpc.mountd صحبت می‌کند و مستقیماً با هسته صحبت نمی‌کند. بدون صفات، لیستی از فایل سیستم های صادر شده در حال حاضر را ارائه می دهد.

    خواص exportfs:

    • [client:dirname] - سیستم فایل مشخص شده را برای مشتری مشخص شده اضافه یا حذف کنید)
    • -v - نمایش اطلاعات بیشتر
    • -r - همه مجموعه ها را دوباره صادر کنید (همگام سازی /etc/exports و /var/lib/nfs/xtab)
    • -u - از لیست صادرات حذف شود
    • -a - همه سیستم های فایل را اضافه یا حذف کنید
    • -o - توابع جدا شده با کاما (شبیه به گزینه های استفاده شده در /etc/exports؛ بنابراین، می توانید توابع فایل سیستم های نصب شده را تغییر دهید)
    • -i - هنگام اضافه کردن از /etc/exports استفاده نکنید، فقط از خصوصیات خط فرمان فعلی استفاده کنید
    • -f - لیست سیستم های صادر شده در هسته 2.6 را بازنشانی کنید.

    مشتری NFS

    قبل از دسترسی به یک فایل در یک سیستم فایل راه دور، کلاینت(های) باید آن را سوار کنیدو از سرور دریافت کنید اشاره به آن. نصب NFSمی توان با استفاده از دستورات mountیا با کمک یکی از مونترهای خودکار تخم ریزی (amd، autofs، automount، supermount، superpupermount). فرآیند نصب کاملاً در تصویر بالا نشان داده شده است.

    بر مشتریان NFSهیچ شیطانی نیازی به دویدن ندارد، توابع مشتریماژول کرنل kernel/fs/nfs/nfs.ko را می سازد که هنگام نصب یک فایل سیستم از راه دور استفاده می شود. مجموعه های صادر شده از سرور را می توان به روش های زیر بر روی مشتری نصب کرد:

    • به صورت دستی با استفاده از دستور mount
    • به طور خودکار در هنگام بوت، هنگام نصب فایل سیستم های مشخص شده در /etc/fstab
    • به طور خودکار با استفاده از شیطان autofs

    روش سوم با autofs را در این مقاله به دلیل حجم بالای اطلاعات آن در نظر نخواهم گرفت. شاید در مقالات بعدی توضیحات جداگانه ای وجود داشته باشد.

    نصب سیستم فایل شبکه با دستور mount

    نمونه ای از استفاده از دستور mount در دستورات مدیریت دستگاه Block post ارائه شده است. در اینجا من به نمونه ای از دستور mount برای نصب یک فایل سیستم NFS نگاه می کنم:

    FILES ~ # mount -t nfs archiv:/archiv-small /archivs/archiv-small FILES ~ # mount -t nfs -o ro archiv:/archiv-big /archivs/archiv-big FILES ~ # mount ..... .. بایگانی:/archiv-small در /archivs/archiv-small type nfs (rw,addr=10.0.0.6) archiv:/archiv-big در /archivs/archiv-big نوع nfs (ro,addr=10.0.0.6)

    دستور اول دایرکتوری صادر شده /archiv-small را در سرور بایگانی به نقطه مونت محلی /archivs/archiv-small با گزینه های پیش فرض (به عبارت دیگر خواندن/نوشتن) سوار می کند.

    با اينكه دستور mountدر توزیع‌های اخیر، می‌تواند به این فکر کند که چه نوع سیستم فایلی بدون مشخص کردن نوع آن استفاده می‌شود، اما مشخص کردن گزینه -t nfs بهتر است. فرمان دوم دایرکتوری صادراتی /archiv-big را روی سرور بایگانی به دایرکتوری محلی /archivs/archiv-big با گزینه فقط خواندنی (ro) سوار می کند. دستور mountبدون صفات به وضوح نتیجه کوه را به ما نشان می دهد. به غیر از تابع فقط خواندنی (ro)، ممکن است بتوان تابع دیگری را نیز مشخص کرد عملکردهای اصلی هنگام نصب NFS:

    • نوسوید - این تابعاجرای برنامه های setuid از پوشه نصب شده را ممنوع می کند.
    • nodev(بدون دستگاه - نه یک دستگاه) - این عملکرد استفاده از کاراکتر و مسدود کردن فایل های خاص را به عنوان دستگاه ممنوع می کند.
    • قفل (بدون قفل)- قفل NFS (پیش‌فرض) را فعال می‌کند. nolock قفل NFS را غیرفعال می کند (دیو قفل شده را راه اندازی نمی کند) و با سرورهای قدیمی که از قفل NFS پشتیبانی نمی کنند راحت است.
    • mounthost=نام- نام میزبانی که NFS بدون نصب را اجرا می کند، mountd است.
    • mountport=n -پورت مورد استفاده توسط mountd imp.
    • port=n- پورتی که برای اتصال به سرور NFS استفاده می شود (اگر شیطان rpc.nfsd در سرور RPC ثبت نشده باشد، پیش فرض 2049 است). اگر n=0 (پیش‌فرض)، NFS درخواستی را برای یافتن پورت به پورت مپ روی سرور ارسال می‌کند.
    • اندازه = n(اندازه بلوک خواندن - اندازه بلوک خواندن) - تعداد بایت های خوانده شده در یک زمان از سرور NFS. پیش فرض 4096 است.
    • wsize=n(اندازه بلوک نوشتن - اندازه بلوک نوشتن) - تعداد بایت هایی که در یک زمان روی سرور NFS نوشته شده است. پیش فرض 4096 است.
    • tcpیا udp- برای نصب از NFS استفاده کنید پروتکل TCPیا UDP به ترتیب.
    • bg- اگر دسترسی به سرور را از دست دادید، پروب ها را در پس زمینه تکرار کنید تا فرآیند بوت سیستم را مسدود نکنید.
    • fg- اگر دسترسی به سرور را از دست دادید، پروب ها را در حالت اولویت تکرار کنید. این پارامترمی تواند فرآیند بوت سیستم را با تلاش مجدد برای نصب مسدود کند. به همین دلیل، پارامتر fg عمدتا برای اهداف اشکال زدایی استفاده می شود.

    ویژگی‌هایی که بر ذخیره ویژگی‌ها در مانت‌های NFS تأثیر می‌گذارند

    ویژگی های فایل، ذخیره شده در inods (inode)، مانند زمان اصلاح، اندازه، پیوندهای سخت، مالک، معمولاً گهگاه برای فایل های معمولی و حتی کمتر برای دایرکتوری ها تغییر می کنند. بسیاری از برنامه‌ها، مانند ls، به فایل‌های فقط خواندنی دسترسی دارند و ویژگی‌ها یا محتوای فایل را تغییر نمی‌دهند، اما منابع سیستم را در عملیات گران‌قیمت شبکه تلف می‌کنند.

    برای جلوگیری از سربار غیر ضروری منابع، می توانید ویژگی های داده های کش. هسته از زمان اصلاح یک فایل استفاده می کند تا با مقایسه زمان اصلاح در حافظه پنهان و زمان اصلاح خود فایل، بفهمد که آیا حافظه نهان قدیمی است یا خیر. کش ویژگی به طور دوره ای با توجه به این پارامترها به روز می شود:

    • ac (noac)(حافظه پنهان ویژگی - کش ویژگی) - ذخیره ویژگی (پیش فرض) را فعال می کند. اگرچه ویژگی noac سرعت سرور را کند می کند، اما از پیر شدن ویژگی ها در زمانی که چندین مشتری به طور فعال در حال نوشتن اطلاعات در یک سلسله مراتب مشترک هستند جلوگیری می کند.
    • acdirmax=n(حداکثر فایل دایرکتوری کش ویژگی - حداکثر ذخیره ویژگی برای فایل دایرکتوری) - بیشترین تعدادثانیه‌هایی که NFS قبل از به‌روزرسانی ویژگی‌های دایرکتوری منتظر می‌ماند (پیش‌فرض شصت ثانیه است)
    • acdirmin=n(حداقل فایل دایرکتوری کش ویژگی - حداقل ذخیره ویژگی برای فایل فهرست) - تعداد کمی از ثانیه هایی که NFS قبل از به روز رسانی ویژگی های دایرکتوری منتظر می ماند (30 ثانیه به طور پیش فرض)
    • accregmax=n(حداکثر ویژگی cache regular file - حداکثر ذخیره ویژگی برای یک فایل معمولی) - حداکثر تعداد ثانیه‌هایی که NFS قبل از به‌روزرسانی ویژگی‌های یک فایل معمولی منتظر می‌ماند (پیش‌فرض شصت ثانیه است)
    • aregmin=n(حداقل فایل کش معمولی ویژگی) - تعداد کمی از ثانیه هایی که NFS قبل از به روز رسانی ویژگی های یک فایل معمولی منتظر می ماند (پیش فرض سه ثانیه است)
    • actimeo=n(ویژگی زمان کش) - مقادیر همه گزینه های بالا را لغو می کند. اگر Actimeo تنظیم نشده باشد، مقادیر بالا به طور پیش فرض است.

    توابع مدیریت خطا NFS

    توابع زیر کنترل می کنند که NFS در صورت عدم پاسخگویی از طرف سرور یا زمانی که خطاهای I/O رخ می دهد، انجام می دهد:

    • fg (bg)(پیش زمینه - پیش زمینه، پس زمینه - پس زمینه) - پروب های نصب NFS ناموفق را در پیش زمینه/پس زمینه ایجاد کنید.
    • سخت نرم)- پیام "سرور پاسخ نمی دهد" را در کنسول چاپ می کند که به مهلت باز می رسد و پروب های نصب را ادامه می دهد. با این تابع نرم- on timeout، یک خطای I/O را به برنامه ای که عملیات را فراخوانی کرده گزارش می دهد. (توصیه می شود از گزینه نرم استفاده نکنید)
    • nointr(intr)(بدون وقفه - قطع نشوید) - به سیگنال ها اجازه قطع شدن نمی دهد عملیات فایلدر یک سلسله مراتب دایرکتوری که به سختی نصب شده است، زمانی که به یک بازه زمانی بزرگ می رسد. داخلی- فعال کردن وقفه
    • retrans=n(مقدار ارسال مجدد) - پس از n وقفه زمانی کوچک، NFS یک مهلت زمانی بزرگ ایجاد می کند (پیش فرض 3). بسته به اینکه عملکرد سخت/نرم مشخص شده باشد، یک مهلت زمانی بزرگ، عملیات را خاتمه می دهد یا یک پیام "سرور پاسخ نمی دهد" را در کنسول چاپ می کند.
    • امتحان مجدد=n(مقدار امتحان مجدد) - تعداد دقیقه‌هایی که NFS قبل از تسلیم شدن دوباره بارگذاری می‌شود (پیش‌فرض 10000).
    • timeo=n(مقدار مهلت زمانی) - تعداد 10 ثانیه ای که سرویس NFS قبل از ارسال مجدد در صورت RPC یا وقفه کم (پیش فرض 7) منتظر می ماند. این مقدار با هر وقفه تا یک مقدار بزرگتر از شصت ثانیه یا تا زمانی که یک مهلت زمانی بزرگ رخ می دهد افزایش می یابد. اگر شبکه مشغول است، سرور کند است، یا درخواست از چندین روتر یا دروازه عبور می کند، افزایش این مقدار می تواند عملکرد را بهبود بخشد.

    نصب خودکار NFS در هنگام بوت (توضیح فایل سیستم ها در /etc/fstab)

    توضیحات فایل /etc/fstab را در مقاله مربوطه ذکر کردم. در مثال فعلی، من به چند نمونه از نصب سیستم فایل NFS با توضیح گزینه ها نگاه خواهم کرد:

    FILES ~ # cat /etc/fstab | بایگانی grep nfs:/archiv-small /archivs/archiv-small nfs rw,timeo=4,rsize=16384,wsize=16384 null null nfs-server:/archiv-big /archivs/archiv-big nfs rw,timeo=5 ,سخت,fg صفر 0

    مثال اول فایل سیستم /archiv-small را از بایگانی میزبان به نقطه مونت /archivs/archiv-small مانت می کند، نوع سیستم فایل nfs است (همیشه باید برای این نوع مشخص شود)، سیستم فایل با گزینه سوار می شود. خواندن، نوشتن (rw) .

    میزبان آرشیو از طریق یک پیوند محلی سریع متصل است، بنابراین پارامتر timeo کاهش یافته است و مقادیر rsize و wsize به طور قابل توجهی برای بهبود عملکرد افزایش یافته است. فیلدهای برنامه‌های dump و fsck روی صفر تنظیم شده‌اند تا از استفاده این برنامه‌ها از یک سیستم فایل نصب‌شده با NFS جلوگیری شود.

    مثال دوم فایل سیستم /archiv-big را از میزبان nfs-server مانت می کند. زیرا ما از طریق یک اتصال آهسته به میزبان nfs-server متصل هستیم، پارامتر timeo به 5 ثانیه (50 10 ثانیه) افزایش می یابد، و پارامتر سخت نیز به صورت سخت کدگذاری می شود تا NFS پس از مدت زمان طولانی به نصب مجدد سیستم فایل ادامه دهد. ، پارامتر fg نیز تنظیم شده است، به طوری که وقتی سیستم بوت می شود و میزبان nfs-server در دسترس نیست، هنگ نمی کند.

    قبل از ذخیره تنظیمات در /etc/fstab، حتما نصب دستی را امتحان کنید و مطمئن شوید که همه چیز کار می کند!!!

    بهبود عملکرد NFS

    چندین چیز می تواند عملکرد NFS را تحت تاثیر قرار دهد، به خصوص هنگام کار بر روی اتصالات کند. هنگام کار با اتصالات کند و پر بار بهتر است از پارامتر سخت استفاده کنید تا تایم اوت باعث توقف کار برنامه ها نشود. اما باید در نظر داشته باشید که اگر سیستم فایل را از طریق NFS با گزینه سخت از طریق fstab مونت کنید و هاست راه دور در دسترس نباشد، سیستم هنگام بوت شدن هنگ می کند.

    همچنین، یکی از ساده ترین راه ها برای بهبود عملکرد NFS، افزایش تعداد بایت های منتقل شده در یک زمان است. اندازه چهار هزار و نود و شش ب برای مدرن بسیار کوچک است اتصالات سریع، با افزایش این مقدار به هشت هزار و 100 نود و دو یا بیشتر، می توانید به طور تجربی بهترین سرعت را پیدا کنید.

    همچنین غافل نشوید توابع تایم اوت. NFS منتظر پاسخ می ماند تا داده ها را در بازه زمانی مشخص شده در تابع timeo ارسال کند، اگر در این مدت پاسخی دریافت نشد، انتقال مجدد انجام می شود.

    اما در اتصالات شلوغ و کند، این زمان می تواند کمتر از زمان پاسخگویی سرور و ظرفیت کانال های ارتباطی باشد و در نهایت منجر به ارسال مجدد غیرضروری می شود که سرعت کار را کاهش می دهد.به طور پیش فرض، تایمو 0.7 ثانیه (700 میلی ثانیه) است. پس از عدم پاسخگویی در عرض 700 میلی ثانیه، سرور مجدداً ارسال می‌کند و تایم اوت را دو برابر می‌کند و به 1.4 ثانیه می‌رساند، تایمو همچنان به مقدار بزرگ‌تر 60 ثانیه افزایش می‌یابد. علاوه بر این، بسته به پارامتر سخت / نرم، برخی اقدامات انجام می شود (به بالا مراجعه کنید).

    با استفاده از دستور ping می توانید بهترین زمان را برای مقدار خاصی از بسته ارسالی (مقادیر rsize / wsize) انتخاب کنید:

    FILES ~ # ping -s 30 دو هزار و هفتصد و شصت و هشت آرشیو PING archiv.DOMAIN.local (10.0.0.6) 32768 (32796) بایت داده. 30 دو هزار و هفتصد و 70 6 بایت از archiv.domain.local (10.0.0.6): icmp_req=1 ttl=64 time=0.931 ms 30 دو هزار و هفتصد و 70 6 بایت از archiv.domain.local (10.0.0.6): icmp_req= 2 ttl=64 time=0.958 ms 30 دو هزار و هفتصد و 70 6 بایت از archiv.domain.local (10.0.0.6): icmp_req=3 ttl=64 time=1.03 ms 30 دو هزار و هفتصد و 70 6 بایت از archiv دامنه ^C --- archive.DOMAIN.local statistics ping --- 5 بسته ارسال شده، 5 بسته، 0% از دست دادن بسته، زمان 4006ms rtt min/avg/max/mdev = 0.931/1.002/1.083/0.061 ms

    همانطور که مشاهده می کنید، هنگام ارسال یک بسته به اندازه 30 دو هزار و هفتصد و شصت و هشت (32 کیلوبایت)، زمان سفر آن از مشتری به سرور و برگشت حدود یک میلی ثانیه شناور است. اگر این زمان برای 200 میلی‌ثانیه از مقیاس خارج شد، باید به افزایش مقدار timeo فکر کنید تا از ارزش تبادل سه تا چهار برابر بیشتر شود. بر این اساس، این آزمایش به بهترین وجه در هنگام بارگذاری سنگین شبکه انجام می شود.

    راه اندازی NFS و پیکربندی فایروال

    یادداشت از وبلاگ http://bog.pp.ru/work/NFS.html کپی شده است که با تشکر فراوان از او!!!

    سرور NFS، mount، قفل، سهمیه و وضعیت را با پورت های "صحیح" (برای فایروال) راه اندازی کنید.

    • بهتر است تمام منابع را از قبل روی کلاینت ها unmount کنید
    • در صورتی که NFSv4 برنامه ریزی نشده باشد، راه اندازی rpcidmapd را متوقف و غیرفعال کنید: chkconfig --level Trista 40 5 rpcidmapd خاموش سرویس rpcidmapd توقف
    • در صورت لزوم، خدمات portmap، nfs و nfslock را برای شروع فعال کنید: chkconfig --levels Trista 40 5 portmap/rpcbind در chkconfig --levels Trista 40 5 nfs در chkconfig --levels Trista 40 5 nfslock در
    • در صورت لزوم، سرویس‌های nfslock و nfs را متوقف کنید، portmap/rpcbind را شروع کنید، ماژول‌ها را بارگیری کنید که باید اجرا شوند.
    • باز کردن پورت ها در iptables
      • برای RPC: UDP/111، TCP/111
      • برای NFS: UDP/2049، TCP/2049
      • برای rpc.statd: UDP/4000، TCP/4000
      • برای قفل: UDP/4001، TCP/4001
      • برای نصب: UDP/4002، TCP/4002
      • برای rpc.rquota: UDP/4003، TCP/4003
    • برای سرور rpc.nfsd، خط RPCNFSDARGS="--port 2049" را به /etc/sysconfig/nfs اضافه کنید.
    • برای سرور mount، خط MOUNTD_PORT=4002 را به /etc/sysconfig/nfs اضافه کنید
    • برای تابع rpc.rquota برای نسخه های جدید، باید خط RQUOTAD_PORT=4003 را به /etc/sysconfig/nfs اضافه کنید.
    • برای تابع rpc.rquota برای نسخه‌های قدیمی‌تر لازم است (در نهایت، شما باید بسته سهمیه 3.08 یا جدیدتر را داشته باشید) به /etc/services rquotad 4003/tcp rquotad 4003/udp اضافه کنید.
    • /etc/exports را برای اعتبار بررسی کنید
    • سرویس‌های rpc.nfsd، mountd و rpc.rquota را شروع کنید (همزمان rpcsvcgssd و rpc.idmapd شروع می‌شوند اگر فراموش کنید آنها را حذف کنید) سرویس nfsd start یا در نسخه‌های جدیدتر سرویس nfs start
    • برای سرور قفل سیستم های جدید، خطوط LOCKD_TCPPORT=4001 LOCKD_UDPPORT=4001 را به /etc/sysconfig/nfs اضافه کنید.
    • برای سرور قفل برای سیستم‌های قدیمی‌تر مستقیماً به /etc/modprobe[.conf] اضافه کنید: گزینه‌های قفل شده nlm_udpport=4001 nlm_tcpport=4001
    • سرور وضعیت rpc.statd را به پورت 4000 متصل کنید (برای سیستم‌های قدیمی‌تر rpc.statd را با -p 4000 در /etc/init.d/nfslock اجرا کنید) STATD_PORT=4000
    • start lockd و rpc services.statd service nfslock start
    • مطمئن شوید که همه پورت‌ها به درستی با "lsof -i -n -P" و "netstat -a -n" پیوند شده‌اند (بعضی از پورت‌ها توسط ماژول‌های هسته استفاده می‌شوند که lsof آنها را نمی‌بیند)
    • اگر قبل از "بازسازی" سرور توسط کلاینت‌ها استفاده می‌شد و نمی‌توان آن‌ها را از حالت نصب خارج کرد، باید خدمات نصب خودکار روی کلاینت‌ها (am-utils، autofs) را مجددا راه‌اندازی کنید.

    مثال پیکربندی سرور NFS و سرویس گیرنده

    پیکربندی سرور

    اگر می خواهید فهرست پارتیشن بندی شده NFS خود را باز و قابل نوشتن کنید، می توانید از گزینه all_squash در ترکیب با گزینه های anonuid و anongid استفاده کنید. به عنوان مثال، برای تنظیم مجوز برای کاربر "nobody" در گروه "nobody"، می توانید موارد زیر را انجام دهید:

    بایگانی ~ # cat /etc/exports # دسترسی خواندن/نوشتن برای کلاینت در 192.168.0.100، با دسترسی rw برای کاربر نود و نه با gid نود و نه / فایل 192.168.0.100 (rw, sync,all_squash,anongid=9 = 99)) # دسترسی خواندن و نوشتن برای مشتری در 192.168.0.100، با دسترسی rw برای کاربر نود و نه با gid نود و نه / فایل‌ها 192.168.0.100 (rw, sync, all_squash,anonuid=99,anongid=99)

    این همچنین به این معنی است که اگر می‌خواهید اجازه دسترسی به دایرکتوری تعیین‌شده را بدهید، nobody.nobody باید مالک دایرکتوری مشترک باشد:

    # chown -R nobody.nobody /files

    پیکربندی مشتری

    در کلاینت، باید دایرکتوری راه دور را به روشی مناسب، به عنوان مثال، با دستور mount سوار کنید:

    FILES ~ # mount -t nfs archive:/files /archivs/files

    خلاصه

    فیو... مقاله تکمیل شد. در حال حاضر ما مطالعه کرده ایم سیستم فایل شبکه چیستو اینکه با چه چیزی خورده می شود، در مقاله بعدی سعی خواهم کرد یک HOWTO با احراز هویت Kerberos ایجاد کنم. امیدوارم مطالب قابل فهم و ضروری باشد.

    خوشحال میشم نظرات و اضافات شما رو جلب کنم

    NFS HOWTO، nfs.sourceforge، man nfs؟ انسان سوار، انسان صادرات

    RFC هزار و نود و چهار - NFSv1، v2
    RFC 1813 - NFSv3
    RFC سه هزار و 500 30 - NFSv4
    RFC 5 هزار و 600 شصت و یک - NFSv4.1
    NFS HOWTO
    nfs.sourceforge.net
    سوار مرد
    صادرات انسان

    همه با پروتکل های انتقال داده آشنا نیستند. اما بسیاری دوست دارند رایانه های خود را به یک شبکه متصل کنند یا از یک سرور برای ذخیره فایل ها استفاده کنند. یکی از راه های انجام این کار NFS است. نحوه راه اندازی یک سرور NFS در اوبونتو - ادامه مطلب.

    با پیکربندی صحیح NFS، می توانید رایانه های موجود در سیستم عامل های مختلف را در یک شبکه ترکیب کنید.

    سیستم فایل شبکه - پروتکل دسترسی شبکهبه فایل ها طبق معمول از دو بخش تشکیل شده است. یک - کلاینت، که روی رایانه ای قرار دارد که داده های راه دور از آن مشاهده می شود. دیگری - سرور - در رایانه ای قرار دارد که این داده ها در آن ذخیره می شوند. استفاده از فضای اضافی دیسک، به خصوص در شبکه محلی، بسیار مفید است. و اگر در مورد برخی از رایانه های شخصی شرکتی صحبت می کنیم، این به سادگی ضروری است.

    تفاوت در چیست؟

    امروزه تعداد زیادی پروتکل و نرم افزارهای متنوعی وجود دارد که عملکردهای مشابهی را انجام می دهند. چه چیزی NFS را متمایز می کند؟

    • امکان اتصال در یک شبکه از کامپیوترها بر روی سیستم عامل های مختلف. اتصال سیستم عامل ویندوز از طریق NFS به یک سیستم یونیکس، به عنوان مثال، اوبونتو، اغلب راحت است. Samba وجود دارد و برای همان اهداف استفاده می شود، اما NFS سبک تر، ساده تر و سریعتر از این برنامه است، زیرا در سطح هسته پیاده سازی می شود. بنابراین، تنظیم دسترسی از طریق آن، به عنوان یک قاعده، آسان تر خواهد بود.
    • NFS فراهم می کند دسترسی شفافبه فایل ها این بدان معنی است که تمام فایل های راه دور دقیقاً مانند فایل های محلی پخش می شوند. برای پخش هر فایلی که روی سرور قرار دارد، برنامه ها نیازی به ارتقا ندارند.
    • NFS فقط قسمت درخواستی فایل را ارسال می کند نه کل فایل را.

    برای کار کامل، باید Network File System را بر روی حداقل دو رایانه نصب کنید: سرور و مشتری. به طور طبیعی، یک مبتدی باید بیشتر از همه در قسمت سرور عرق کند، زیرا در آنجا است که باید پوشه ها را "اشتراک گذاری" (دسترسی باز) انجام دهید. با این حال، انجام این همه نسبتاً آسان است.

    مانند بسیاری از پروتکل های انتقال داده، NFS چیزی جز جوان است. در سال 1984 توسعه یافت و برای سیستم های یونیکس در نظر گرفته شد. این هنوز نقش اصلی NFS است، اما بسیاری دریافته‌اند که استفاده از آن برای اتصال کامپیوترهای ویندوزی به لینوکس بسیار راحت است. علاوه بر این، NFS برای پخش محتوای چندرسانه ای از طریق یک شبکه خانگی محلی عالی است. سامبا در این نقش اغلب آویزان و کند می شود.

    نصب باطن NFS

    ما بخش سرور پروتکل را در اوبونتو 16.04 نصب خواهیم کرد. به طور طبیعی، اگر نسخه سرور را دارید، فرآیند به هیچ وجه متفاوت نیست. فقط در نسخه سنتی اوبونتو، برخی از اقدامات را می توان با استفاده از یک رابط گرافیکی انجام داد.

    ما برنامه را نصب می کنیم. برای این کار می توانید از مرکز دانلود اپلیکیشن استفاده کنید یا به سادگی می توانید دستور زیر را وارد کنید:

    sudo apt نصب nfs-kernel-server

    پس از آن، بررسی صحت نصب مفید خواهد بود. لازم نیست این کار را انجام دهید، اما به هر حال بررسی می کنیم. دستور را وارد می کنیم:

    پورت باید همه جا 2049 باشد.

    اکنون بررسی می کنیم که آیا هسته از NFS پشتیبانی می کند یا خیر. برای این کار وارد کنید:

    cat /proc/filesystems | grep nfs

    مقدار به دست آمده باید مانند این باشد: nodev nfsd

    این بدان معنی است که همه چیز به درستی کار می کند. اگر نه، دستور را وارد کنید:

    با آن ماژول کرنل را خودمان نصب می کنیم.

    اضافه کردن پروتکل به autorun انجام این کار ضروری نیست، اما هر بار روشن کردن آن بسیار ناخوشایند است. می توانید دوباره با استفاده از آن اضافه کنید مورد خاصمنو در تنظیمات، یا می توانید خودتان با استفاده از دستور این کار را انجام دهید:

    sudo systemctl nfs را فعال می کند

    بنابراین، ما قسمت سرور را نصب کرده ایم، باقی مانده است که آن را به درستی پیکربندی کنیم و به قسمت مشتری بروید.

    تنظیمات

    راه اندازی NFS در اوبونتو شامل اشتراک گذاری پوشه های خاصی است.

    علاوه بر باز کردن دسترسی ساده، باید پارامترهای تعیین کننده قابلیت های کاربر در رابطه با این پوشه را نیز مشخص کنید.

    • rw - خواندن و نوشتن این گزینه امکان خواندن و نوشتن فایل ها را در پوشه فراهم می کند.
    • ro - فقط خواندن - فقط خواندن پوشه را امکان پذیر می کند.
    • همگام سازی (پیش فرض) - پارامتر قابلیت اطمینان انتقال را تضمین می کند. اگر فعال باشد، انتقال چندین فایل به طور همزمان یا به رایانه های مختلف امکان پذیر نخواهد بود. این تنظیم از پاسخگویی به درخواست های دیگر جلوگیری می کند. از دست دادن داده ها جلوگیری می کند، اما انتقال ممکن است کندتر باشد.
    • async - معکوس پارامتر قبلی. انتقال سریعتر است، اما خطر از دست دادن اطلاعات وجود دارد.
    • امن - این گزینه فقط از پورت های زیر 1024 استفاده می کند. به طور پیش فرض فعال است.
    • ناامن - امکان استفاده از هر پورت را فراهم می کند.
    • nohide - اگر چندین دایرکتوری را سوار کنید، که در میان آنها دایرکتوری های تودرتو وجود دارد، آن ها دایرکتوری های تودرتو، بر خلاف والد، خالی نمایش داده می شوند. پارامتر به رفع این مشکل کمک می کند.
    • anonuid - uid را برای ناشناس مشخص می کند. این یک شناسه کاربری ویژه است.
    • anongid - gid را برای ناشناس مشخص می کند. GID (شناسه گروه) - شناسه کاربری دیگر.
    • no_subtree_check - تابع بررسی زیردرخت را غیرفعال می کند. واقعیت این است که بدون آن، NFS علاوه بر این بررسی می کند که کاربران فقط به بخش های ضروری دایرکتوری دسترسی دارند. این کارها را کند می کند. این پارامتر به شما امکان می دهد سرعت آن را افزایش دهید، اما امنیت را کاهش می دهد.

    بسته به آنچه در یک موقعیت خاص مورد نیاز است از آنها استفاده خواهیم کرد.

    بیایید ایجاد کنیم پوشه جدید. می توانید از جدید نیز استفاده کنید. پوشه ما /var/network خواهد بود.

    حال باید این پوشه را به فایل /etc/exports اضافه کنیم. تمام فایل ها و پوشه های با دسترسی به شبکه باز در آنجا ذخیره می شوند. ورودی باید به این شکل باشد:

    /var/network168.1.1(rw,async,no_subtree_check)

    192.168.1.1 IP است که ما از طریق آن ارسال می کنیم. حتما آن را مشخص کنید.

    جدول صادرات را به روز کنید:

    حالا بیایید سعی کنیم از سمت کلاینت به پوشه دسترسی پیدا کنیم.

    نصب و پیکربندی کلاینت NFS

    اوبونتو

    اتصال یک سرور پیکربندی شده به اوبونتو دشوار نیست. این فقط در چند دستور انجام می شود.

    بسته مشتری ویژه را نصب کنید:

    sudo apt نصب nfs-common

    sudo mount 192.168.1.1:/var/network/ /mnt/

    پوشه شبکه متصل است. با استفاده از df، می توانید تمام پوشه های شبکه متصل را بررسی کنید:

    همچنین می توانید سطح دسترسی خود را با یک دستور خاص بررسی کنید:

    فایل سیستم را به صورت زیر جدا کنید:

    دستور mount تقریبا در همه جا استفاده می شود. این وظیفه فرآیند نصب، یعنی آماده سازی فضای روی هارد دیسک برای استفاده توسط سیستم عامل را بر عهده دارد. پیچیده به نظر می رسد، اما اگر آن را ساده کنیم، معلوم می شود که به سادگی فایل های شبکه را در یک پوشه جدید به رایانه خود منتقل می کنیم. در اینجا به آن /mnt/ می گویند.

    پنجره ها

    با ویندوز، به عنوان یک قاعده، همه چیز بسیار پیچیده تر است. کلاینت NFS را می توان بر روی تمامی ویندوزهای سرور بدون هیچ مشکلی اجرا کرد. از استاندارد موجود است در:

    • Windows 7 Ultimate/Enterprise
    • Windows 8/8.1 Enterprise
    • Windows 10 Enterprise

    هیچ جای دیگری پیدا نمی شود. اگر یکی از این نسخه ها را دارید، موارد زیر را انجام دهید:

    1. منوی "برنامه ها و ویژگی ها" را باز کنید.
    2. روی "افزودن اجزا" کلیک کنید.
    3. ما NFS را در آنجا پیدا می کنیم و فقط "Client for NFS" را تنظیم می کنیم، ما به مؤلفه دیگری نیاز نداریم.

    پس از اتصال، همه چیز با همان دستور سوار می شود:

    mount 192.168.1.1:/var/network/ /mnt/

    می توانید آن را به این صورت جدا کنید:

    دستورات وارد خط فرمانی می شوند که به عنوان مدیر اجرا می شود. پس از آن، با استفاده از Explorer به راحتی می توانید درایو شبکه مورد نظر را پیدا کنید.

    اما اگر کلاینت برای NFS روی کامپیوتر وجود نداشته باشد چه؟ می توانید نرم افزار را از طریق وب سایت مایکروسافت یا از منابع شخص ثالث دانلود کنید. این امکان وجود دارد که دستورات یا اقدامات دیگری در اینجا مورد نیاز باشد.

    اکنون درک اولیه ای از نحوه استفاده از NFC و راه اندازی ساده دارید. این دانش برای ایجاد دسترسی از یک کامپیوتر به کامپیوتر دیگر کافی است. علاوه بر این، یک رایانه شخصی ویندوزی نیز می تواند به عنوان مشتری عمل کند.