訪問網絡附存儲
NFS(網絡文件系統)是Linux、unix及類似操作系統使用的互聯網標準協議,可作爲本地網絡文件系統系統,也可以支持本地Linux權限和文件系統功能。
RHEL 8.0默認NFS爲4.2。NFSv4僅使用TCP協議與服務器進行通信。
NFS服務器導出共享(目錄)。NFS客戶端將導出的共享掛載到本地掛載點(目錄),掛載點必須已存在。有多種方式掛載NFS共享:
- mount 命令掛載
- /etc/fstab中添加條目,持久掛載。
- 按需掛載:使用autofs服務或systemd.automount功能。
掛載NFS共享的三個步驟:
- 識別。NFS服務器的管理員可以提供導出詳細信息,包括安全性要求。或者客戶端管理員可以通過掛載NFS服務器的根目錄並瀏覽已導出目錄來識別NFSv4共享(以root身份執行本操作)。
- 使用mkdir在合適的位置創建掛載點。
- 以超級用戶執行命令操作:
- mount 臨時掛載NFS共享。示例: sudo mount -t nfs -o rw,sync serverb:/share mountpoint。 -t nfs 選項是NFS共享的文件系統類型。-o sync選項使用mount立即與NFS服務器同步寫操作(默認爲異步)。
- 持久掛載,在/ect/fatab中添加條目, 條目示例: serverb:/share /mountpoint nfs rw,soft 0 0 然後sudo mount/mountpoint
卸載nfs共享,也需要root權限。示例:sudo umonut mountpoint。持久掛載的需要在/etc/fatab中刪除相關條目。
nfsconf 工具用於管理NFSv4與NFSv3下的NFS客戶端和服務器配置文件。使用/ect/nfs.conf 配置nfsconf工具。nfsconf工具用來獲取、設置或取消NFS配置參數。
nfsconf --set section key value 設置指定部分的鍵值。示例:
sudo nfsconf --set nfsd vers4.2 y
nfsconf --get section key 來檢索指定部分的鍵值:
sudo nfsconf --get nfsd vers4.2
nfsconf --unset section key 取消設置指定部分的鍵值:
sudo nfsconf --unset nfsd vers4.2
配置一個僅限使用NFSv4的客戶端
在/etc/nfs.conf配置文件中修改設置來達到目的。
首先禁用UDP以及其他與NFSv2和NFSv3有關的鍵:
- sudo nfsconf --set nfsd udp n
- sudo nfsconf --set nfsd vers2 n
- sudo nfsconf --set nfsd vers3 n
啓用TCP和NFSv4相關鍵
- sudo nfsconf --set nfsd tcp y
- sudo nfsconf --set nfsd vers4 y
- sudo nfsconf --set nfsd vers4.0 y
- sudo nfsconf --set nfsd vers4.1 y
- sudo nfsconf --set nfsd vers4.2 y
執行這些命令/etc/nfs.conf配置文件中會顯示所做的更改。
使用自動掛載器掛載NFS共享
自動掛載器是一種服務(autofs),可以根據需要自動掛載NFS共享,並在不再使用這些共享時卸載這些共享。
創建自動掛載:
- 安裝autofs軟件包。
- 向/etc/auto.master.d添加一個主映射文件。此文件用於確定掛載點的基礎目錄,並用於創建自動掛載映射文件。必須以.autofs作爲擴展名。
- 創建映射文件。每個映射文件確定一組自動掛載的掛載點、掛載選項以及掛載的源位置。映射文件的命名規則是/etc/auto.name,name反映了映射內容。
- 啓動並啓用自動掛載器服務。 systemctl enable --now autofs
直接映射,用於將NFS共享映射到現有的絕對路徑掛載點。
RHEl8.0啓動過程
啓動過程:
- 計算機已接通電源。系統固件(UEFI,舊的爲BIOS)運行開機自檢(POST),並開始初始化部分硬件。
- 系統固件搜索可啓動設備,可能是在UEFI啓動固件中配置的,也可能安裝BIOS中配置的順序搜索所有磁盤上的主動啓動記錄(MBR)。
- 系統固件從磁盤讀取啓動加載器,然後將系統控制權交給啓動加載器。RHEL8.0 啓動加載器爲GRUB2。
- GRUB2將從/boot/grub2/grub.cfg文件加載配置並顯示一個菜單,從中選擇要啓動的內核。
- 選定內核後,啓動加載器會從磁盤中加載內核和initramfs,並將它們放入內存中。initramfs包含啓動時所有必要硬件的內核模塊、初始化腳本等等。RHEL8 中,initramfs包含自身可用的整個系統。
- 啓動加載器將控制權交給內核,從而傳遞啓動加載器的內核命令行中指定的任何選項,以及initramfs在內存中的位置。
- 對於內核可在initramfs中找到驅動程序的所有硬件,內核會初始化這些硬件然後作爲PID1從initramfs執行/sbin/init。/sbin/init是一個指向systemd的鏈接。
- initramfs中的systemd實例會執行initrd。target目標的所有單元。包括將磁盤上的root文件系統掛載於/sysroot目錄。
- 內核將root文件系統從initramfs切換爲/sysroot中的文件系統。隨後systemd會使用磁盤中安裝的systemd副本來自行重新執行。
- systemd會查找從內核命令行傳遞或系統中配置的默認目標,然後啓動或停止單元,以符合目標的配置,從而自動解決單元間的依賴關係,本質上systemd目標是一組系統應激活以達到所需狀態的單元。
systemctl poweroff 會停止所有運行的服務,卸載所有文件系統,然後關閉系統。
systemctl reboot 停止所有運行的服務,卸載所有文件系統,然後重新啓動系統。
簡短版本poweroff reboot 和上面的命令效果一樣。
systemd常用目標
目標 | 用途 |
---|---|
graphical.target | 系統支持多用戶、圖形和基於文本的登錄 |
multi-user.target | 系統僅支持多用戶、基於文本的登錄。 |
rescue.target | sulogin提示,表示基本系統初始化已完成。 |
emergency.target | sulogin提示,表示initramfs迴轉完成,且系統root以只讀形式掛載於/上。 |
systemctl isolate 命令切換到其他目標。示例:
systemctl isolate multi-user.target
systemd會激活default.target目標。/etc/systemd/system中的默認目標是指向graphical.target 或multi-user.target 符號鏈接。systemctl get-default 和systemctl set-default 用於管理該符號鏈接。示例:
systemctl set-default graphical.target
在啓動時選擇其他目標,從啓動加載器將systemd.unit=target.target選項附加到內核命令行。選擇其他目標的方法,請執行以下步驟:
- 啓動或重啓系統。
- 按除Enter外的任意鍵,中斷啓動加載器菜單倒計時。
- 將光標移動到要啓動的內核條目。
- 按e編輯當前條目。
- 將光標移動到以Linux開頭的行。此爲內核命令行。
- 附加systemd.unit=target.target。如systemd.unit=emergency.target。
- 按Ctrl +x 使用這些更改進行啓動。
從啓動加載器重置root密碼
- 重新啓動系統。
- 按除Enter外的任意鍵,中斷啓動加載器菜單倒計時。
- 將光標移動到要啓動的內核條目。
- 按e編輯當前條目。
- 將光標移動到以Linux開頭的行。此爲內核命令行。
- 附加rd.break。利用該選項,就在系統從initramfs向實際系統移交控制權前,系統將會中斷。
- 按Ctrl +x 使用這些更改進行啓動。
- 然後重置root密碼,使用一下步驟:
- 以讀/寫形式重新掛載/sysrooot。 switch_root:/# mount -o remount,rw /sysroot
- 切換爲chroot存放位置,其中/syroot被視爲文件系統數的根。 switch_root:/# chroot /sysroot
- 設置新root密碼。 sh-4.4# passwd root
- 確保所有未標記的文件(包括/etc/shadow)在啓動過程中都會重新獲得標記。 sh-4.4# touch /.authorelabel
- 鍵入exit兩次。第一次退出chroot存放位置,第二次退出initramfs調試shell。
修復systemd啓動問題,RHEL8.0提供了一下工具:
- 啓動早期調試shell。systemctl enable debug-shell.service 啓用debug-shell服務,系統會於啓動序列早期在TTY9(Ctrl+Alt+F9)上生成一個root shell。會自動作爲root登錄,然後管理員可以在操作系統仍在啓動時對系統進行調試。
- 從啓動加載器將systemd.unti=rescue.target 或systemd.unit=emergency.target附加到內核命令行,系統將生成救援或緊急情況sell,需要提供root密碼。
systemctl list-jobs命令可以檢查當前作業列表。
修復在啓動時出現的文件系統問題
問題 | 結果 |
---|---|
損壞文件系統 | systemd嘗試修復文件系統。如果問題過於嚴重,無法進行自動修復,系統會將用戶將至緊急shell。 |
/etc/fstab中引用的設備/UUID不存在 | systemd將等待一段時間,等設備變得可用。如果設備未變得可用,則將系統在超時後將用戶將至緊急shell。 |
/etc/fstab中的掛載點不存在 | 系統將用戶降至緊急shell。 |
/etc/fstab中指定的掛載點錯誤。 | 系統將用戶降至緊急shell。 |