20170810 高級文件系統(tǒng)管理

  • 文件系統(tǒng)配額管理
  • RAID
  • LVM邏輯卷管理器

一、文件系統(tǒng)配額管理

  • 文件系統(tǒng)配額:在內(nèi)核中啟用,以文件系統(tǒng)為管理單位,對不同的用戶和用戶組設(shè)置不同的配額管理策略,配額限制單位為節(jié)點和塊

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

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

  • 初始化:

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

    • 開啟、取消配額:quotaon, quotaoff
    • 編輯配額 edquota
  • 實驗:實現(xiàn)在/home分區(qū)對用戶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,然后初始化數(shù)據(jù)庫,成功后可以看到/home目錄下新增加的兩個數(shù)據(jù)文件

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

第5步,切換至hellopeiyang用戶,在用戶家目錄下測試配額是否測試成功??梢钥吹絼?chuàng)建文件總?cè)萘砍?0M時有報警信息,創(chuàng)建文件總?cè)萘砍?00M時文件寫入失敗,最多只能達到配額設(shè)置的最大值。

二、RAID

(一)RAID基本概念

1. 定義:

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

2. 功能:

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

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

主要應(yīng)用的RAID級別:

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

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

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

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

  • RAID 4
    磁盤組織方式:

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

  • RAID 5
    磁盤組織方式:

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

  • RAID 6
    磁盤組織方式:

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

  • RAID 10
    磁盤組織方式:

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

  • RAID 01
    磁盤組織方式:

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

(二)軟件RAID

1、RAID設(shè)備命名規(guī)則:

/dev/md#,#指數(shù)字,如/dev/md0, /dev/md1, /dev/md2

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

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

  • mode 模式:
    創(chuàng)建(Create)、裝配(Assemble)、監(jiān)控(Monitor)、管理(Manage)

  • <raiddevice> : 設(shè)備名,如/dev/md1

  • <component-devices>: 任意塊設(shè)備,可以是磁盤或磁盤分區(qū)

  • 創(chuàng)建模式-C

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

  • 管理模式

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

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

  • 停止設(shè)備:mdadm -S /dev/md0

  • 激活設(shè)備:mdadm -A -s /dev/md0

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

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

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

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

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

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

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

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

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

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

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

(5)移除故障設(shè)備

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

紅框顯示故障設(shè)備/dev/sdb1已經(jīng)被移除

(6)停止RAID設(shè)備

mdadm -S /dev/md0

三、LVM 邏輯卷管理器

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

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

  • LVM允許在多個物理設(shè)備間重新組織文件系統(tǒng),創(chuàng)建邏輯卷的大體過程如下:

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

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

  • 物理卷PV管理工具

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

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

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

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

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

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

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

  • 快照是特殊的邏輯卷

  • 快照的工作邏輯:

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

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

1.為現(xiàn)有邏輯卷創(chuàng)建快照

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.恢復(fù)快照

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容