2018-05-25 《鳥哥的Linux私房菜 基礎學習篇(第四版)》 第14章 磁盤配額(Quota)與進階文件系統管理 筆記

磁盤配額(Quota)與進階文件系統管理

 

1、磁盤配額(Quota)

1.一、quota 針對網絡服務的設計:node

  • 針對 WWW server ,例如:每一個人的網頁空間的容量限制!
  • 針對 mail server,例如:每一個人的郵件空間限制。
  • 針對 file server,例如:每一個人最大的可用網絡硬盤空間 (教學環境中最多見!)

1.二、quota針對 Linux 系統主機上面的設定:docker

  • 限制某一羣組所能使用的最大磁盤配額 (使用羣組限制):你能夠將你的主機上的用戶分門別類,有點像是目前很流行的付費與免付費會員制的狀況, 你比較喜愛的那一羣的使用配額就能夠給高一些!呵呵! ^_^...
  • 限制某一用戶的最大磁盤配額 (使用用戶限制):在限制了羣組以後,你也能夠再繼續針對我的來進行限制,使得同一羣組之下還能夠有更公平的分配!
  • 限制某一目錄 (directory, project) 的最大磁盤配額:在舊版的 CentOS 當中,使用的預設文件系統爲 EXT 家族,這種文件系統的磁盤配額主要是針對整個文件系統來處理,因此大多針對『掛載點』進行設計。 新的 xfs 可使用 project 這種模式,就可以針對個別的目錄 (非文件系統喔) 來設計磁盤配額耶!超棒的!

二、quota使用上的限制:centos

  • 在 EXT 文件系統家族僅能針對整個 filesystem:
    • EXT 文件系統家族在進行 quota 限制的時候,它僅能針對整個文件系統來進行設計,沒法針對某個單一的目錄來設計它的磁盤配額。 所以,若是你想要使用不一樣的文件系統進行 quota 時,請先搞清楚該文件系統支持的狀況喔!由於 XFS 已經可使用 project 模式來設計不一樣目錄的磁盤配額。
  • 核心必須支持 quota :
    • Linux 核心必須有支持 quota 這個功能才行:若是你是使用 CentOS 7.x 的預設核心, 嘿嘿!那恭喜你了,你的系統已經默認有支持 quota 這個功能囉!若是你是自行編譯核心的, 那麼請特別留意你是否已經『真的』開啓了 quota 這個功能?不然底下的功夫將所有都視爲『白工』。
  • 只對通常身份使用者有效:
    • 並非全部在 Linux 上面的帳號均可以設定 quota 呢,例如 root 就不能設定 quota , 由於整個系統全部的數據幾乎都是他的啊! ^_^
  • 若啓用 SELinux,非全部目錄都可設定 quota :
    • 新版的 CentOS 預設都有啓用 SELinux 這個核心功能,該功能會增強某些細部的權限控制!因爲擔憂管理員不當心設定錯誤,所以預設的狀況下, quota 彷佛僅能針對 /home 進行設定而已~所以,若是你要針對其餘不一樣的目錄進行設定,請參考到後續章節查閱解開 SELinux 限制的方法喔! 這就不是 quota 的問題了...

三、quota 針對 XFS filesystem 的限制:網絡

分別針對用戶、羣組或個別目錄 (user, group & project) XFS 文件系統的 quota 限制中,主要是針對羣組、我的或單獨的目錄進行磁盤使用率的限制!  
容量限制或文件數量限制 (block 或 inode) 咱們在第七章談到文件系統中,說到文件系統主要規劃爲存放屬性的 inode 與實際文件數據的block 區塊,Quota 既然是管理文件系統,因此固然也能夠管理 inode 或 block 囉! 這兩個管理的功能爲: 限制 inode 用量:能夠管理使用者能夠創建的『文件數量』
限制 block 用量:管理用戶磁盤容量的限制,較常見爲這種方式
柔性勸導與硬性規定 (soft/hard) 既然是規範,固然就有限制值。不論是 inode/block ,限制值都有兩個,分別是 soft 與 hard。 一般 hard 限制值要比 soft 還要高。舉例來講,若限制項目爲 block ,能夠限制 hard 爲 500MBytes而 soft 爲 400MBytes。這兩個限值的意義爲: hard:表示使用者的用量絕對不會超過這個限制值,以上面的設定爲例, 用戶所能使用的磁盤容量絕對不會超過 500Mbytes ,若超過這個值則系統會鎖住該用戶的磁盤使用權
soft:表示使用者在低於 soft 限值時 (此例中爲 400Mbytes),能夠正常使用磁盤,但若超過 soft 且低於 hard的限值 (介於 400~500Mbytes 之間時),每次用戶登入系統時,系統會主動發出磁盤即將爆滿的警告訊息, 且會給予一個寬限時間 (grace time)。不過,若使用者在寬限時間倒數期間就將容量再次下降於 soft 限值之下,則寬限時間會中止
會倒數計時的寬限時間 (grace time) 剛剛上面就談到寬限時間了!這個寬限時間只有在用戶的磁盤用量介於 soft 到 hard 之間時,纔會出現且會倒數的一個咚咚! 因爲達到 hard 限值時,用戶的磁盤使用權可能會被鎖住。爲了擔憂用戶沒有注意到這個磁盤配額的問題, 所以設計了 soft 。當你的磁盤用量即將到達 hard 且超過 soft 時,系統會給予警告,但也會給一段時間讓用戶自行管理磁盤。 通常預設的寬限時間爲七天,若是七天內你都不進行任何磁盤管理,那麼 soft 限制值會即刻取代 hard 限值來做爲 quota的限制  

 

[root@study ~]# xfs_quota -x -c "指令" [掛載點]
選項與參數:app

  • -x :專家模式,後續纔可以加入 -c 的指令參數喔!
  • -c :後面加的就是指令,這個小節咱們先來談談數據回報的指令

指令:spa

  • print :單純的列出目前主機內的文件系統參數等資料
  • df:與本來的 df 同樣的功能,能夠加上 -b (block) -i (inode) -h (加上單位) 等
  • report:列出目前的 quota 項目,有 -ugr (user/group/project) 及 -bi 等資料
  • state :說明目前支持 quota 的文件系統的信息,有沒有起動相關項目等

 

[root@study ~]# xfs_quota -x -c "limit [-ug] b[soft|hard]=N i[soft|hard]=N name"
[root@study ~]# xfs_quota -x -c "timer [-ug] [-bir] Ndays"
選項與參數:設計

  • limit :實際限制的項目,能夠針對 user/group 來限制,限制的項目有
  • bsoft/bhard : block 的 soft/hard 限制值,能夠加單位
  • isoft/ihard : inode 的 soft/hard 限制值
  • name: 就是用戶/羣組的名稱啊!
  • timer :用來設定 grace time 的項目喔,也是能夠針對 user/group 以及 block/inode 設定

 

書上命令3d

[root@study ~]# umount /home
實操命令server

[root@localhost lib]# umount /home
報錯
umount: /home:目標忙。
        (有些狀況下經過 lsof(8) 或 fuser(1) 能夠
         找到有關使用該設備的進程的有用信息)
解決辦法:重啓電腦

書上命令
[root@study ~]# xfs_quota -x -c "timer -ug -b 14days" /home
報錯
timer [-bir] [-g|-p|-u] value -- set quota enforcement timeouts
解決辦法:u和g參數分開寫:
[root@study ~]# xfs_quota -x -c "timer -u -b 14days" /home
[root@study ~]# xfs_quota -x -c "timer -g -b 14days" /homeblog

 

2、軟件磁盤陣列 (Software RAID)

 磁盤陣列全名是『 Redundant Arrays of Inexpensive Disks, RAID 』,英翻中的意思是:容錯式廉價磁盤陣列。 RAID 能夠透過一個技術(軟件或硬件),將多個較小的磁盤整合成爲一個較大的磁盤裝置;而這個較大的磁盤功能可不止是儲存而已,他還具備數據保護的功能呢。

 

3、邏輯卷管理器 (LVM,Logical Volume Manager)

LVM 的重點在於能夠彈性的調整 filesystem 的容量!

Physical Volume, PV, 物理卷

Volume Group, VG, 卷用戶組

Physical Extent, PE, 物理擴展區

Logical Volume, LV, 邏輯卷。爲了方便用戶利用 LVM 來管理其系統,所以 LV 的裝置文件名一般指定爲『 /dev/vgname/lvname 』的樣式。

 圖:PE 與 VG 的相關性圖示

 

fdisk  分區

 任務 PV 階段 VG 階段 LV 階段 filesystem
XFS
EXT4
搜尋(scan) pvscan vgscan lvscan lsblk, blkid
創建(create) pvcreate vgcreate lvcreate mkfs.xfs mkfs.ext4
列出(display) pvdisplay vgdisplay lvdisplay df, mount
增長(extend)   vgextend lvextend (lvresize) xfs_growfs resize2fs
減小(reduce)   vgreduce lvreduce (lvresize) 不支援 resize2fs
刪除(remove) pvremove vgremove lvremove umount, 從新格式化
改變容量(resize)     lvresize xfs_growfs resize2fs
改變屬性(attribute) pvchange vgchange lvchange /etc/fstab, remount

 LVM 必須要核心有支持且須要安裝 lvm2 這個軟件,好佳在的是, CentOS 與其餘較新的distributions 已經預設將 lvm 的支持與軟件都安裝穩當了!

實做 LVM

書上要求:

  • 使用 4 個 partition ,每一個 partition 的容量均爲 1GB 左右,且 system ID 須要爲 8e;
  • 所有的 partition 整合成爲一個 VG,VG 名稱設定爲 vbirdvg;
  • PE 的大小爲 16MB;
  • 創建一個名爲 vbirdlv 的 LV,容量大約 2G ;
  • 最終這個 LV 格式化爲 xfs 的文件系統,且掛載在 /srv/lvm 中

 rhsca7 d4:請按照如下要求調整本地邏輯卷lv0的容量:

  • 邏輯卷及文件系統大小爲290MiB
  • 確保文件系統中已存在的內容不能被破壞
  • 容量可能出現偏差,只要在270MiB - 320MiB之間都是容許的
  • 保證其掛載目錄不改變,文件系統完成。

[root@localhost ~]# df
文件系統                    1K-塊     已用      可用 已用% 掛載點
/dev/mapper/centos-root  52403200 27212792  25190408   52% /
devtmpfs                  3834528        0   3834528    0% /dev
tmpfs                     3852172    31628   3820544    1% /dev/shm
tmpfs                     3852172     1292   3850880    1% /run
tmpfs                     3852172        0   3852172    0% /sys/fs/cgroup
/dev/sda2                 1038336   181036    857300   18% /boot
/dev/sda1                  204580     9956    194624    5% /boot/efi
/dev/mapper/centos-home 914628260  2193560 912434700    1% /home
tmpfs                      770436       56    770380    1% /run/user/1000
overlay                  52403200 27212792  25190408   52% /var/lib/docker/overlay2/c673328bd7e692ab454f85be98e8fe5c9fcbf07444e8092e5239faeda5f3dab8/merged
shm                         65536        0     65536    0% /var/lib/docker/containers/468e1aeb6353ad39a5651f64e6d632190f6a4f8e3345b5dd8180f37c30777931/mounts/shm
tmpfs                     3852172        8   3852164    1% /var/lib/docker/containers/468e1aeb6353ad39a5651f64e6d632190f6a4f8e3345b5dd8180f37c30777931/mounts/secrets

哪些須要刪除,和能刪除?

重裝系統後:

[weis@study ~]$ df
文件系統                   1K-塊    已用    可用 已用% 掛載點
/dev/mapper/centos-root 10475520 4741544 5733976   46% /
devtmpfs                 3916960       0 3916960    0% /dev
tmpfs                    3934604   12448 3922156    1% /dev/shm
tmpfs                    3934604    9452 3925152    1% /run
tmpfs                    3934604       0 3934604    0% /sys/fs/cgroup
/dev/sda2                1038336  160604  877732   16% /boot
/dev/mapper/centos-home  5232640  876772 4355868   17% /home
/dev/sda1                  51082    9928   41154   20% /boot/efi
tmpfs                     786924       4  786920    1% /run/user/42
tmpfs                     786924      44  786880    1% /run/user/1000

用 fdisk /dev/sda仍是gdisk /dev/sda?

解決辦法:

[root@localhost ~]# lsblk    #列出本系統下的全部磁盤與磁盤內的分區信息
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda               8:0    0 931.5G  0 disk
├─sda1            8:1    0   200M  0 part /boot/efi
├─sda2            8:2    0     1G  0 part /boot
└─sda3            8:3    0 930.3G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   7.6G  0 lvm  [SWAP]
  └─centos-home 253:2    0 872.7G  0 lvm  /home
[root@localhost ~]# parted /dev/sda print
Model: ATA TOSHIBA MQ01ABD1 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt    #對應gdisk分區命令
Disk Flags:

Number  Start   End     Size    File system  Name                  標誌
 1      1049kB  211MB   210MB   fat16        EFI System Partition  啓動
 2      211MB   1285MB  1074MB  xfs
 3      1285MB  1000GB  999GB                                      lvm

分區:

    1  parted /dev/sda print
    2  gdisk /dev/sda

n  回車  回車  +1G  8e00  重複4次建立4個分區  p  w  y
    3  partprobe -s
    4  df
    5  lsblk
    6  gdisk -l /dev/sda

LV的建立:
    7  pvscan
    8  pvcreate /dev/sda{4,5,6,7}
    9  pvscan
   10  pvdisplay /dev/sda3
   11  pvdisplay /dev/sda4
   12  vgcreate -s 16M vbirdvg14-3-2 /dev/sda{4,5,6}
   13  vgscan
   14  pvscan
   15  vgdisplay vbirdvg14-3-2
   16  lvcreate -L 2G -n vbirdlv14-3-2 vbirdvg14-3-2
   17  lvscan
   18  lvdisplay /dev/vbirdvg14-3-2/vbirdlv14-3-2

掛載LV:
   19  mkfs.xfs /dev/vbirdvg14-3-2/vbirdlv14-3-2
   20  mkdir /srv/lvm
   21  mount /dev/vbirdvg14-3-2/vbirdlv14-3-2 /srv/lvm
   22  df -Th /srv/lvm/
   23  cp -a /etc /var/log /srv/lvm
   24  df -Th /srv/lvm/
   25  rm -rf /srv/lvm/etc
   26  rm -rf /srv/lvm/log
   27  ll /srv/lvm/

嘗試減小LV容量:
lvresize -L -1760M /dev/vbirdvg14-3-2/vbirdlv14-3-2
lvdisplay /dev/vbirdvg14-3-2/vbirdlv14-3-2
df -Th /srv/lvm
xfs_info /srv/lvm/
xfs_growfs /srv/lvm/
xfs_info /srv/lvm/
df -Th /srv/lvm  #容量仍是2.0G,未減小。目前的 XFS 文件系統中,並無縮小文件系統容量的設計!也就是說,文件系統只能放大不能縮小喔!
刪除LV從新建立新的LV,從新掛載:

umount /dev/vbirdvg14-3-2/vbirdlv14-3-2
lvremove /dev/vbirdvg14-3-2/vbirdlv14-3-2
lvcreate -L 290M -n vbirdlv14-3-2_2 vbirdvg14-3-2
lvdisplay
mkfs.xfs /dev/vbirdvg14-3-2/vbirdlv14-3-2_2
mount /dev/vbirdvg14-3-2/vbirdlv14-3-2_2 /srv/lvm/

df -Th /srv/lvm/

echo 「# Device                Mount point             filesystem parameters   dump fsck」 >> /etc/fstab

echo 「/dev/vbirdvg14-3-2/vbirdlv14-3-2_2 /srv/lvm     xfs     defaults        0 0」 >> /etc/fstab



 

 

 

沒有將 LVM 關閉就直接將那些 partition 刪除或轉爲其餘用途的話,系統是會發生很大的問題的。LVM刪除流程:

1. 先卸除系統上面的 LVM 文件系統 (包括快照與全部 LV);
2. 使用 lvremove 移除 LV ;
3. 使用 vgchange -a n VGname 讓 VGname 這個 VG 不具備 Active 的標誌;
4. 使用 vgremove 移除 VG:
5. 使用 pvremove 移除 PV;
6. 最後,使用 fdisk 修改 ID 回來啊!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

疑問:

系統時別碼

統配符中大括號的使用

ll命令中->是鏈接符嗎

/dev/mapper

普通賬號如何使用sudo。解決辦法:

$ su -

# visudo

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL  以後插入:
weis    ALL=(ALL)       ALL

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息