一、fstab文件
fstab文件為存放文件系統(tǒng)的靜態(tài)信息文件,同時也是系統(tǒng)啟動時必須要 讀取的一種配置文件,存放于/etc目錄下。
當系統(tǒng)啟動時,讀取這個配置文件中的信息,然后將指定的文件系統(tǒng)掛載到指定的目錄下,此文件錯誤可能會導致系統(tǒng)開啟失敗。
-
etc/fstab 文件包含了<file system> <dir> <type> <options> <dump> <pass>等幾個字段,字段直接通過空格或 Tab 分隔。
<file systems>: 要掛載的分區(qū)或存儲設備 <dir> :掛載點 <type> :要掛載設備或是分區(qū)的文件系統(tǒng)類型,支持文件系統(tǒng)類型有:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。 設置成auto類型,mount 命令會自動匹配文件系統(tǒng)類型 <options>:掛載時經常使用的參數,但有些mount 參數是特定文件系統(tǒng)才有的。一些比較常用的參數有: auto:在啟動時或鍵入了 mount -a 命令時自動掛載 noauto:關閉自動掛載 exec:允許執(zhí)行此文件系統(tǒng)上的二進制文件 noexec:不允許執(zhí)行文件系統(tǒng)上的二進制文件 ro:以只讀模式掛載文件系統(tǒng) rw: 以讀寫模式掛載文件系統(tǒng) user: 允許任意用戶掛載此文件系統(tǒng),若無顯示定義,隱含啟用noexec, nosuid, nodev 參數 users:允許所有 users 組中的用戶掛載文件系統(tǒng) nouser: 只能被 root 掛載 owner:允許設備所有者掛載 sync : I/O 同步進行 async:I/O 異步進行 dev:解析文件系統(tǒng)上的塊特殊設備 nodev:不解析文件系統(tǒng)上的塊特殊設備 suid:允許 suid 操作和設定 sgid 位。這一參數通常用于一些特殊任務,使一般用戶運行程序時臨時提升權限 nosuid:禁止 suid 操作和設定 sgid 位 atime/noatime :更新/不更新訪問時間,包含目錄和文件 diratime/nodiratime :目錄的訪問時間戳 relatime:實時更新 inode access 記錄。只有在記錄中的訪問時間早于當前訪問才會被更新。(與 noatime 相似,但不會打斷如 mutt 或其它程序探測文件在上次訪問后是否被修改的進程),可以提升性能(參見 atime 參數) flush :vfat 的選項,更頻繁的刷新數據,復制對話框或進度條在全部數據都寫入后才消失 loop:使用loop設備 defaults:使用文件系統(tǒng)的默認掛載參數,例如 ext4 的默認參數為:rw, suid, dev, exec, auto, nouser, async <dump> :dump 工具通過它決定何時作備份,dump 會檢查其內容,并用數字來決定是否對這個文件系統(tǒng)進行備份。 允許的數字是 0 和 1 。0 表示忽略, 1 則進行備份 <pass> fsck 讀取 <pass> 的數值來決定需要檢查的文件系統(tǒng)的檢查順序。允許的數字是0, 1, 和2。 根目錄應當獲得最高的優(yōu)先權 1, 其它所有需要被檢查的設備設置為 2. 0 表示設備不會被 fsck 所檢查
文件系統(tǒng)標識
在 /etc/fstab配置文件中可以使用三種不同的方法表示文件系統(tǒng):掛載文件路徑和名稱、UUID 或者 label。使用 UUID 或是 label 的好處在于它們與磁盤順序無關。如果一些意外情況導致了磁盤順序的改變,就可能導致/目錄掛載磁盤找不到路徑,所以建議使用 UUID 或是 label 來表示。
-
fstab文件的幾種掛載格式
將/boot目錄掛載到/mnt/boot中 /boot /mnt/boot none bind 0 0 (none為沒有文件系統(tǒng)) 將/app/partfile掛載到/mnt/part文件中 /app/partfile /mnt/part ext4 loop 0 0 掛載win共享文件(192.168.198.1為win的IP,share為共享目錄) //192.168.198.1/share /mnt/share cifs defaults 0 0 掛載swap分區(qū) /dev/sdb3 swap swap defaults 0 0 掛載磁盤分區(qū) /dev/sda2 / ext4 defaults 0 0 掛載nfs共享目錄 192.168.198.1:/share /mnt/share nfs defaults 0 0 掛載samba目錄 //172.16.30.130/common /tmp cifs multiuser, username=danran,password=danran,sec=ntlmssp 0 0
二、磁盤配額使用
隨著系統(tǒng)普通用戶的增加很可能導致/home目錄的空間使用率緊缺,作為系統(tǒng)管理員,有必要將/home目錄的空間使用對普通用戶做出一些限制,以免導致/home目錄空間不足而其他用戶不能正常使用,這就用到了我們今天所要說的磁盤及文件系統(tǒng)配額的管理。
磁盤及文件系統(tǒng)配額是根據塊或者節(jié)點數為界限對用戶及組進行限制使用,但是磁盤配額的使用必須在一個獨立分區(qū)上進行,故首先應將/home遷移到獨立分區(qū)上。
使用到的相關命令有如下幾個:
系統(tǒng)掛載選項
usrquota:對指定用戶限制
grpquota:對組進行限制
配額數據庫初始化:
quotackeck -cug /home 初始化/home目錄的用戶和組的配額數據庫
quotaon -p /home 查看/home目錄的配額數據庫是否開啟
quotaon /home 開啟/home的配額數據庫
edquota danran 編輯danran用戶的配額管理
edquota -p user1 user2 根據user1的配額生成user2的配額
quota uaername 查看uaername的配額空間
有一個空間大小為20G的分區(qū)sdb1,首先將跟目錄下面的/home遷移到/sdb1分區(qū)上,然后方可使用磁盤配額對/home目錄進行管理
-
將/home遷移到/dev/sdb1分區(qū)上
mkdir /mnt/home mount /dev/sdb1 /mnt/home 將sdb1分區(qū)掛載到/mnt/home目錄下 cp -av /home/* /mnt/home 拷貝原目錄下的所有數據到/dev/sdb1掛載點目錄/mnt/home上
如果直接掛載可能會把原來/home下的文件覆蓋,導致原有文件成為垃圾文件從而占用空間,若直接刪除/home下的文件,可能導致正在登陸的普通用戶不能正常使用,故切換到單用戶模式下刪除/home文件,因為單用戶模式下沒有其他用戶登錄不需擔心在刪除過程中對普通用戶造成影響。
init 1 切換進單用戶模式
du -sh /home /mnt/home 比較兩個home目錄是不是一致
blkid /dev/sdb1 可顯示/dev/sdb1分區(qū)的UUID號
vim /etc/fatab 將/dev/sdb1設備掛載到/home寫入fatab文件啟動掛載
UUID=b054a2ea-bdd4-4ae9-911a-a85bb102879d /home ext4 defaults 0 0
mount -a 將/dev/sdb1掛載到了/home目錄,即完成了家目錄遷移到/dev/sdb1分區(qū)下,而/dev/sdb1掛載點/mnt/home中的數據也同步到/home下
ls /home 查看/home下是否有數據,即/dev/sdb1是否掛載成功
umount /mnt/home 過度掛載點目錄此時已經可以卸載
-
將家目錄回遷到/目錄下 (此過程最好也在單用戶下進行)
init 1 mkdir /mnt/home mount /dev/sdb1 /mnt/home umount /home cp -av /mnt/home/* /home vim /etc/fstab 將UUID=b054a2ea-bdd4-4ae9-911a-a85bb102879d /home ext4 defaults 0 0 刪除 reboot
-
控制用戶danran和danran組使用/home空間的大小,/home必須為一個獨立的分區(qū)才能使用,/home掛載在/devsdb1分區(qū)上
blkid /dev/sdb1 顯示/dev/sdb1分區(qū)的UUID號 vim /etc/fstab 將/dev/sdb1掛載到/home下,usrquota啟用用戶配額功能,grpquota為啟用組配額功能 UUID=b054a2ea-bdd4-4ae9-911a-a85bb102879d /home ext4 usrquota,grpquota 0 0 mount -o remount /home 重新掛載/home
mount 查看/home是否已經啟用usrquota和grpquota配額特性
quotacheck -cug /home 初始化配額數據庫,u為初始化用戶數據庫,g為初始化組數據庫
setenforce 0 若數據庫初始化失敗則執(zhí)行這條命令,關閉SELinux功能
ls /home 檢查配額數據庫是否初始化成功 若有aquota.group和aquota.user兩個二進制文件生成表示數據庫初始化成功
quotaon -p /home 查看磁盤配額數據庫是否啟用
quotaon /home 開啟磁盤配額數據庫
quotaon -p /home
① 交互式編輯用戶磁盤配額:
edquota danran 編輯配置空間使用額度(以K為單位),soft為提醒狀態(tài),hard為強制報錯狀態(tài) inodes為節(jié)點數,后兩個soft和hard是控制文件格式,前兩個控制空間大小
限制danran用戶使用/home空間大小為80M,當使用超過50M時提醒用戶,當文件數超過100個時提醒用戶,但不強制報錯退出
su - danran 切換到danran用戶
dd if=/dev/zero of=110M bs=2M count=55 創(chuàng)建110M的f1文件
文件的所有者為danrna用戶,超出了danran用戶使用/home空間的限制,所以報錯退出,修改文件的所有者和所屬組,則danran用戶使用的空間恢復,由此得出結論為文件的配額限制是根據文件所有者和所屬組判斷的。
quota danrna 查看danran用戶的磁盤配額
repquota /home 顯示/home分區(qū)上的配額使用情況
Block grace time:7days 表示有效期7天,7天之后soft將變?yōu)閔ard使用
交互式編輯組空間配額
edquota -g danran 對danran組設置空間配額
usermod -G danran dan 將dan用戶添加進danran組中
id dan
su - dan 切換到dan用戶
dd if=/dev/zero of=f1 bs=2M count=50 發(fā)現沒有報錯空間限制
ll f1 列出f1文件的詳細信息,發(fā)現文件的所有者和所屬組都是dan用戶,而dan用戶和組沒有限制使用額度
id 發(fā)現danran僅是dan用戶的附加組,而不是所屬組
newgrp danran 臨時將dan用戶的所屬組更換為danran
id dan dan用戶的所屬組臨時更換為了danran
dd if=/dev/zero of=f2 bs=1M count=120 這次發(fā)現報錯,超出了block limit
ll f2 可以發(fā)現f2文件的所屬組為danran
由此發(fā)現,設置組的空間使用額度時表示的是所屬組而不是附加組
②非交互式設置空間配額
setquota danran 150000 200000 0 100 /home 非交互式配置danran用戶的使用/home的最大空間為200M,達到150M時提醒用戶,當文件數目達到100個時報錯退出,并且退出前不提醒用戶
quota danran 顯示danran用戶的空間配額
setquota -g danran 100000 150000 0 0 /home
edquota/quota -g danran 顯示danran組的空間配額
-
配置dan用戶的磁盤配額跟danran用戶一致
edquota -p danran dan quota/edquota dan