20170810 高級文件系統管理

  • 文件系統配額管理
  • RAID
  • LVM邏輯卷管理器

一、文件系統配額管理

  • 文件系統配額:在內核中啟用,以文件系統為管理單位,對不同的用戶和用戶組設置不同的配額管理策略,配額限制單位為節點和塊

  • 軟限制 (soft limit):超出軟限制報警,但不會禁止繼續占用文件系統空間

  • 硬限制 (hard limit):超出硬限制直接禁止繼續占用文件系統空間

  • 初始化:

    • 分區掛載選項:
      編輯/etc/fstab文件,分區掛載選項增加usrquota(用戶配額), grpquota(用戶組配額)
    • 初始化數據庫:quotacheck命令
  • 執行

    • 開啟、取消配額:quotaon, quotaoff
    • 編輯配額 edquota
  • 實驗:實現在/home分區對用戶hellopeiyang的磁盤配額,達到80M時報警,最多只能使用100M磁盤空間
    命令:

// step1
vim /etc/fstab    
// step 2
mount -o remount /home
// step 3
setenforce 0
quotacheck -cug /home
// step 4
quotaon /home
quotaon -p /home
edquota hellopeiyang
// step 5
su - hellopeiyang
dd if=/dev/zero of=file001 bs=1M count=81
dd if=/dev/zero of=file001 bs=1M count=150

第1步,修改/etc/fstab文件掛載點為/home的條目的掛載選項,將"defaults"改為"usrquota,grpquota",表示掛載時開啟對用戶、用戶組的磁盤配額選項

第2步,重新掛載后可以看到,掛載選項新增了usrquota和grpquota選項

第3步,首先用setenforce 0命令禁用會影響磁盤配額操作的SELinux,然后初始化數據庫,成功后可以看到/home目錄下新增加的兩個數據文件

第4步,開啟配額,按照要求配置hellopeiyang用戶的配額,注意單位為KB。

第5步,切換至hellopeiyang用戶,在用戶家目錄下測試配額是否測試成功。可以看到創建文件總容量超出80M時有報警信息,創建文件總容量超出100M時文件寫入失敗,最多只能達到配額設置的最大值。

二、RAID

(一)RAID基本概念

1. 定義:

RAID(Redundant Arrays of Independent Disks) 獨立磁盤冗余陣列,多個磁盤合成一個陣列來提供更好的性能、冗余

2. 功能:

通過磁盤并行讀寫提高IO能力,通過磁盤冗余提高耐用性

3. 實現方式:
  • 外接式RAID:通過擴展卡提供能力
  • 內接式RAID:主板集成RAID控制器,安裝OS前在BIOS中設置
  • 軟件式RAID:通過OS實現
4. RAID級別:多塊磁盤組織在一起的不同工作方式

主要應用的RAID級別:

  • RAID 0 ,又稱條帶卷
    磁盤組織方式:

(1)讀、寫性能提升;
(2)可用空間:N*min(S1,S2,...)
(3)無容錯能力
(4)最少磁盤數:2

  • RAID 1 ,又稱鏡像卷
    磁盤組織方式:

(1)讀性能提升、寫性能略有下降;
(2)可用空間:1*min(S1,S2,...)
(3)有冗余能力
(4)最少磁盤數:2

  • RAID 4
    磁盤組織方式:

(1)讀、寫性能提升;
(2)可用空間:(N-1)*min(S1,S2,...)
(3)有容錯能力:允許最多1塊磁盤損壞,但由于校驗盤故障率遠高于其他磁盤,已被RAID5取代
(4)最少磁盤數:3

  • RAID 5
    磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:(N-1)*min(S1,S2,...)
(3)有容錯能力:允許最多1塊磁盤損壞
(4)最少磁盤數:3

  • RAID 6
    磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:(N-2)*min(S1,S2,...)
(3)有容錯能力:允許最多2塊磁盤損壞
(4)最少磁盤數:4

  • RAID 10
    磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:N*min(S1,S2,...)/2
(3)有容錯能力:每組鏡像最多只能壞一塊
(4)最少磁盤數:4

  • RAID 01
    磁盤組織方式:

(1)讀、寫性能提升
(2)可用空間:N*min(S1,S2,...)/2
(3)有容錯能力:容錯能力不及RAID10
(4)最少磁盤數:4

(二)軟件RAID

1、RAID設備命名規則:

/dev/md#,#指數字,如/dev/md0, /dev/md1, /dev/md2

2、軟件RAID實現
  • mdadm 工具介紹:
    Linux軟件RAID管理工具,支持的RAID級別:
    RAID0, RAID1, RAID4, RAID5, RAID6, RAID10

  • mdadm 語法格式:
    mdadm [mode] <raiddevice> [options] <component-devices>

  • mode 模式:
    創建(Create)、裝配(Assemble)、監控(Monitor)、管理(Manage)

  • <raiddevice> : 設備名,如/dev/md1

  • <component-devices>: 任意塊設備,可以是磁盤或磁盤分區

  • 創建模式-C

-n #            //使用#個塊設備來創建此RAID
-l #            //指明要創建的RAID的級別
-a {yes|no}     //自動創建目標RAID設備的設備文件
-c CHUNK_SIZE   //指明塊大小
-x #            //指明空閑盤的個數
  • 顯示RAID詳細信息-D,語法:mdadm -D /dev/md#

  • 管理模式

-f     //標記指定磁盤損壞
-a     //添加磁盤
-r     //移除磁盤
  • 觀察md狀態:cat /proc/mdstat

  • 生成配置文件:mdadm -D -s >> /etc/mdadm.conf

  • 停止設備:mdadm -S /dev/md0

  • 激活設備:mdadm -A -s /dev/md0

  • 強制啟動:mdadm -R /dev/md0

  • 刪除raid信息:mdadm --zero-superblock /dev/sdb1

3、實驗:軟件RAID基本操作
  • 現有5塊硬盤/dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf,大小均為20G。
    (1)將五塊硬盤分別分出1個1G大小的分區,先將前四塊硬盤的第一個分區構建RAID5,命名為/dev/md0,其中第四塊硬盤作為空閑硬盤。建立后,對RAID設備建立ext4文件系統。
fdisk /dev/sdb   fdisk /dev/sdc...    //分區時注意一定要改變system id為fd
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
// 含義:-C指創建,-a yes指自動創建RAID設備文件,-l 5指RAID級別為5,-n 3指活動設備數為3,
         -x 1指空閑設備數為1

(2)檢查RAID設備情況,并將配置文件保存到/etc/mdadm.conf

mdadm -D /dev/md0
mdadm -D -s >> /etc/mdadm.conf

紅框標注中分別表示了RAID級別,活動、空閑設備數量,chunk的默認大小,每個磁盤設備的具體狀態

(3)將第五塊硬盤的第一個分區加入到/dev/md0上

mdadm –G /dev/md0 –n4 -a /dev/sdf1     
//-G 指改變活動磁盤陣列的大小,-n4 指活動設備數為4,-a指添加磁盤

(4)模擬第一塊硬盤出現故障,查看第四塊硬盤的分區是否自動頂替故障設備

mdadm /dev/md0  -f /dev/sdb1
mdadm -D /dev/md0

紅框中顯示/dev/sdb1已經發生故障,而之前空閑的/dev/sde1自動頂替/dev/sdb1的位置

(5)移除故障設備

mdadm /dev/md0 -r /dev/sdb1
mdadm -D /dev/md0

紅框顯示故障設備/dev/sdb1已經被移除

(6)停止RAID設備

mdadm -S /dev/md0

三、LVM 邏輯卷管理器

(一)LVM邏輯卷管理器的基本概念

  • LVM是在磁盤分區和文件系統之間添加的一個邏輯層,來為文件系統屏蔽下層磁盤分區布局,提供一個抽象的存儲卷,在存儲卷上建立文件系統

  • LVM允許在多個物理設備間重新組織文件系統,創建邏輯卷的大體過程如下:

    • 將設備指定為物理卷PV(Physical Volumes)
    • 物理卷用固定大小的物理區域PE(Physical Extent)定義
    • 將一個或多個物理卷創建成為卷組VG(Volumes Group)
    • 在卷組上建立的邏輯卷LV(Logical Volumes)由PE構成
    • 在邏輯卷上建立文件系統
  • LVM彈性更改邏輯卷容量原理:
    通過交換PE實現彈性更改容量,將邏輯卷的PE轉移到其他邏輯卷中以降低容量,從其他邏輯卷轉移PE到邏輯卷以增加容量

(二)LVM邏輯卷管理器實現

  • 物理卷PV管理工具

    • 顯示pv信息
      pvs:簡要顯示pv信息
      pvdisplay:詳細顯示pv信息
    • 創建pv
      pvcreate /dev/DEVICE
  • 卷組VG管理工具

    • 顯示卷組
      vgs:簡要顯示vg信息
      vgdisplay:詳細顯示vg信息
    • 創建卷組
      vgcreate [-s #UNIT] VG /dev/DEVICE
    • 管理卷組
      vgextend VG /dev/DEVICE 擴充卷組
      vgreduce VG /dev/DEVICE 壓縮卷組
    • 刪除卷組
      vgremove
  • 邏輯卷LV管理工具

    • 顯示邏輯卷
      lvs:簡要顯示lv信息
      lvdisplay:詳細顯示lv信息
    • 創建邏輯卷
      lvcreate -L #[UNIT] -n NAME VG: -L指定大小
      lvcreate -l #%{FREE | VG} -n NAME VG :-l指定百分比,后跟VG指卷組總容量,FREE指卷組未用容量
    • 管理邏輯卷
      lvextend -L [+]#[UNIT] /dev/VG_NAME/LV_NAME
      lvreduce -L [-]#[UNIT] /dev/VG_NAME/LV_NAME
    • 刪除邏輯卷
      lvremove /dev/VG_NAME/LV_NAME
    • 重設文件系統大小
      fsadm [options] resize device [new_size[UNIT]]
      resize2fs [options] device [new_size]:僅用于ext2, ext3, ext4
  • 實驗3-1:實現邏輯卷:
    有三塊硬盤/dev/sdb(20GB), /dev/sdc(10GB), /dev/sdd(5GB)
    (1)創建分區/dev/sdb1(1GB), /dev/sdc1(2GB)
    (2)將/dev/sdb1, /dev/sdc1和/dev/sdd創建為物理卷
    (3)將三個物理卷創建為卷組vg0
    (4)在卷組vg0上創建兩個邏輯卷:第一個邏輯卷/dev/vg0/lv0(2GB),第二個邏輯卷/dev/vg0/lv1,其大小為卷組剩余空間的50%
    (5)給兩個邏輯卷創建文件系統,均為ext4

fdisk /dev/sdb   fdisk /dev/sdc               //分區時注意一定要改變system id為8e
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd         //創建物理卷
vgcreate vg0 /dev/sdb1 /dev/sdc1 /dev/sdd     //創建卷組vg0
lvcreate -L 2G -n lv0 vg0          //創建邏輯卷lv0
lvcreate -l 50%FREE -n lv1 vg0     //創建邏輯卷lv1
mkfs -t ext4 /dev/vg0/lv0          //建立邏輯卷lv0的文件系統
mkfs -t ext4 /dev/vg0/lv1          //建立邏輯卷lv1的文件系統
  • 實驗3-2:擴展邏輯卷:
    接實驗3-1,現在邏輯卷大小:/dev/vg0/lv0為2GB,/dev/vg0/lv1為3GB。現在需要將/dev/vg0/lv0擴展至3GB,/dev/vg0/lv1擴展至6GB。當前卷組vg0大小為8GB,無法直接擴展兩個邏輯卷。另有未創建文件系統的磁盤分區/dev/sde1,大小為2GB。
    (1)將/dev/sde1加入到卷組vg0中
    (2)拓展邏輯卷lv0,并且擴展lv0的文件系統
    (3)一條命令實現拓展邏輯卷lv1和其文件系統
vgdisplay                          //查看當前卷組容量是否滿足邏輯卷擴展要求
fdisk /dev/sde1                    //改變system id為8e
pvcreate /dev/sde1                 //將/dev/sde1創建為物理卷
vgextend vg0 /dev/sde1             //將/dev/sde1添加到卷組vg0中
lvextend -L +1G /dev/vg0/lv0       //將邏輯卷lv0大小添加1GB至3GB
resize2fs /dev/vg0/lv0 3G          //將邏輯卷lv0的文件系統擴展大小至3GB
lvextend -r -L 6G /dev/vg0/lv1     //將邏輯卷lv1和其文件系統一并擴展至6GB,
                                   -r選項指同步擴展文件系統大小
  • 實驗3-3:縮減邏輯卷:
    接實驗3-2,將邏輯卷lv1的大小縮減至5GB
fsck -f /dev/vg0/lv1            //縮減邏輯卷前必須檢查磁盤,-f指強制執行
resize2fs /dev/vg0/lv1 5G       //縮減邏輯卷文件系統大小
lvreduce -L 5G /dev/vg0/lv1     //縮減邏輯卷大小
  • 實驗3-4:從邏輯卷中刪除正在使用的物理分區(或磁盤):
    接實驗3-3,當前邏輯卷lv0大小3GB、邏輯卷lv1大小5GB,卷組vg0大小10GB,卷組空閑容量2GB。物理卷/dev/sdc1大小2GB,可以直接在邏輯卷管理中刪除此分區。
vgdisplay                  //查看卷組空間情況
pvdisplay                  //查看邏輯卷空間情況
pvmove /dev/sdc1     
//雖然卷組空間滿足刪除/dev/sdc1的要求,但/dev/sdc1的PE已經占滿,所以需要將數據移動至其他物理卷
vgreduce vg0 /dev/sdc1     //卷組中刪除物理卷/dev/sdc1
pvremove /dev/sdc1         //將物理卷/dev/sdc1刪除

紅框中顯示/dev/sdc1的PE已經全部占滿,需要先做數據遷移,才能從卷組中刪除

  • 實驗3-5:遷移邏輯卷:
    接實驗3-4,將邏輯卷/dev/vg0/lv1和/dev/vg0/lv2遷移至另一個服務器系統中
    (1)為了防止出現重名,將卷組改名為newvg0
    (2)將邏輯卷改名:lv0改為newlv0,lv1改為newlv1
    (3)凍結卷組newvg0
    (4)將卷組導出,拆除硬盤,安裝到新的服務器中
    (5)將卷組導入到新的服務器中
    (6)啟用卷組newvg
vgrename vg0 newvg0                 //卷組改名
lvrename /dev/newvg0/lv0 newlv0     //邏輯卷改名
lvrename /dev/newvg0/lv1 newlv1     //邏輯卷改名
vgchange -an newvg0                 //凍結卷組
vgexport newvg0                     //導出
------拆除硬盤,安裝至新的服務器(虛擬機以虛擬磁盤文件的剪切粘貼實現)------
pvscan                              //掃描物理卷
vgimport newvg0                     //導入卷組
vgchange -ay newvg0                 //啟用卷組
  • 特別注意:以上實驗均未涉及掛載過程,實際工作中邏輯卷必須掛載才能夠正常使用,所以涉及邏輯卷擴展、縮減、刪除、遷移操作前必須先卸載邏輯卷,待設置完成后再進行掛載操作,否則會導致嚴重的后果。

(三)LVM邏輯卷管理器快照

  • 快照是特殊的邏輯卷

  • 快照的工作邏輯:

    • 生成快照時只是給快照分配一定的空間,所以快照建立時間很快
    • 當原邏輯卷的內容有改變時,將舊數據復制進快照中
    • 建立的快照大小達到原邏輯卷大小的15-20%即可
  • 快照必須與原邏輯卷同在一個卷組VG

  • 實驗3-6:邏輯卷快照的建立和恢復

1.為現有邏輯卷創建快照

lvcreate -L 300M -s -n snap-lv0 -p r /dev/vg0/lv0

2.掛載快照

mkdir -p /mnt/snap
mount -o ro /dev/vg0/snap-lv0 /mnt/snap

3.恢復快照

umount /dev/vg0/snap-lv0
umount /dev/vg0/lv0
lvconvert --merge /dev/vg0/snap-lv0

第一個紅框顯示的是邏輯卷lv0內文件file原內容,之后對邏輯卷lv0進行了快照操作,然后對file文件進行了修改,第二個紅框顯示的是修改后的file文件內容,此時恢復快照,第三個紅框顯示file文件內容恢復至快照前的樣子。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容