高級文件系統管理

磁盤配額:

        當我們在一個指定分區內有多個用戶使用時,為了保證磁盤空間的大小,我們可以限制某些用戶在該磁盤空間中的使用量,此種功能我們稱之為磁盤配額。

            初始化:

                    分區掛載選項:usrquota、grpquota

                    創建化數據庫:quotachek -c

            執行:

                    開啟或取消數據庫:quotaon、quotaoff

                    直接編輯配額選項:edquota  username

                    通過命令直接編輯:setquota usename 4096 5120 40 50 /foo

                    指定多個用戶:edquota -p user1 user2

            查看配置信息:

                    用戶調查:quota

                    配額概述:repquota

                    其他工具:warnquota

        舉例說明:限制wang用戶創建的文件總大小不能超過200M

                    1、fdisk /dev/sdd 創建一個1G的分區,格式化成ext4文件系統,創建一個目錄,將家目錄中的文件拷貝移動到該目錄中,然后掛載,掛載選項添加usrquota,grpquota,掛載成功后,將.quota目錄中的文件拷貝到/home路徑下。

mkdir /mnt/quota
cp -a /home/* /mnt/quota/
/dev/sdd1               /home             ext4    usrquota,grpquota       0       0
mount -a
mount -s
/dev/sdd1 on /home type ext4 (rw,usrquota,grpquota)
cp -a /mnt/quota/* /home/

                    2、創建配額數據庫

root@cenots6.8  ~ # quotacheck -cug /home
quotacheck: Cannot create new quotafile /home/aquota.user.new: 權限不夠
quotacheck: Cannot initialize IO on new quotafile: 權限不夠
quotacheck: Cannot create new quotafile /home/aquota.group.new: 權限不夠
quotacheck: Cannot initialize IO on new quotafile: 權限不夠
root@cenots6.8  ~ # setenforce 0   (centos6可能會報如上錯誤)
root@cenots6.8  ~ # quotacheck -cug /home

                    3、啟用數據庫

root@cenots6.8  ~ # quotaon -p /home            ###查看數據庫是否啟用
group quota on /home (/dev/sdd1) is off         ###off 沒有啟用
user quota on /home (/dev/sdd1) is off
root@cenots6.8  ~ # quotaon /home               ###啟用數據庫
root@cenots6.8  ~ # quotaon -p /home            ###查看數據庫是否啟用       
group quota on /home (/dev/sdd1) is on          ###on 啟用
user quota on /home (/dev/sdd1) is on

                    4、配置配額選項警告值為1,除了下面的方法也可以:setquota wang 102400 204800 0 0 /home 直接編輯。

root@cenots6.8  ~ # edquota wang
Disk quotas for user wang (uid 500):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdd1                        36       102400       204800            9        0        0
##                                     超過該值時警告  最大值(單位K)

                    5、分別創建三個90M的文件測試

wang@cenots6.8  ~ # dd if=/dev/zero of=f1 bs=1M count=90
記錄了90+0 的讀入
記錄了90+0 的寫出
94371840字節(94 MB)已復制,0.0834356 秒,1.1 GB/秒
wang@cenots6.8  ~ # dd if=/dev/zero of=f2 bs=1M count=90
sdd1: warning, user block quota exceeded.    ############已經警告了
記錄了90+0 的讀入
記錄了90+0 的寫出
94371840字節(94 MB)已復制,0.20327 秒,464 MB/秒
wang@cenots6.8  ~ # ll -lh
總用量 180M
-rw-rw-r--. 1 wang wang 90M 8月  29 23:42 f1
-rw-rw-r--. 1 wang wang 90M 8月  29 23:43 f2
wang@cenots6.8  ~ # dd if=/dev/zero of=f3 bs=1M count=90
sdd1: write failed, user block limit reached.
dd: 正在寫入"f3": 超出磁盤限額
記錄了20+0 的讀入
記錄了19+0 的寫出
20934656字節(21 MB)已復制,0.12074 秒,173 MB/秒
wang@cenots6.8  ~ # ll -lh
總用量 200M
-rw-rw-r--. 1 wang wang 90M 8月  29 23:42 f1
-rw-rw-r--. 1 wang wang 90M 8月  29 23:43 f2
-rw-rw-r--. 1 wang wang 20M 8月  29 23:44 f3   #####此處我們創建了90M的文件但是此處為20M,滿足我們設置的200M的需求

                    6、查看配置信息的命令

wang@cenots6.8  ~ # quota wang
Disk quotas for user wang (uid 500): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdd1  204800* 102400  204800   6days      12       0       0  

root@cenots6.8  ~ # repquota /home
*** Report for user quotas on device /dev/sdd1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      52       0       0             10     0     0       
wang      +-  204800  102400  204800  6days      12     0     0       
tom       --      32       0       0              8     0     0

RAID:

        raid磁盤冗余陣列作用:
                提供io能力:磁盤并行讀寫
                提供其耐用性:提供冗余能力
            級別:多塊磁盤組織在一起的工作方式有所不同。

        raid的實現方式:
                外界磁盤陣列:通過擴展卡提供適配能力
                內接式raid:主板集成raid控制器

        raid-0:
                至少需要2塊磁盤,A磁盤存放數據塊chunk1,B磁盤存放數據塊chunk2,同時寫入,同時讀出,這樣讀寫性能提升,每個磁盤塊存放的數據塊大小一致,所以磁盤空間以最小的為主。
                可用空間:N*min(s1,s2…..)
                無容錯能力
                最小磁盤數:2,2+

        raid-1:
                至少需要2塊磁盤,每塊磁盤同事存放同樣的數據,A磁盤存放數據塊1,B磁盤存放數據塊1,然后在同時存放數據塊2。
                可用空間:1*mi
                讀性能提升,寫性能下降
                有容錯能力
                最小磁盤數:2,2+

        raid-4:

                至少需要3塊磁盤,其中一塊A磁盤用于存放校驗碼,異或值,B磁盤存放數據塊chunk1,C磁盤存放數據塊chunk2,允許一塊磁盤損壞,此時的工作方式叫做降級模式,可以通過校驗和和另一個磁盤計算出壞磁盤中的數據,如果在有一塊損壞,那就不能工作了。
                讀寫性能提升
                有容錯能力
                可用空間(N-1)*min
                最小磁盤數:3,3+

        raid-5:
                至少需要3塊磁盤,第一個數據存第一塊盤上,第二個數據存第二塊盤上,校驗碼存第三塊盤上,下一次個數據存第三塊盤,第二個數據存第2塊盤,校驗碼存第一塊盤,第二塊盤存校驗碼,第二個數據放第一塊盤,三快盤輪流做校驗盤
                讀寫性能提升
                有容錯能力,允許壞一塊盤
                最少磁盤數:3,3+

        raid-6: 校驗碼存2次,校驗盤2塊
                讀寫性能提升
                可用空間:(N-2)*min
                有容錯能力,允許壞2塊盤
                最少磁盤數:4,4+

      raid-01:
                兩兩一組,組成raid0,然后將多個兩兩一組在組成raid1
                讀寫性能提升
                可用空間:N*min/2
                有容錯能力:每組壞一個該組就不能用了
                最少磁盤數:4

        raid-10
                兩兩一組,組成raid1,然后將多個兩兩一組在組成raid0
                讀寫性能提升
                可用空間:N*min/2
                有容錯能力:每組raid允許壞一個
                最少磁盤數:4

        raid7:

                可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式

        JBOD:
                功能:將多塊磁盤的空間合并一個大的連續空間使用;
                可用空間:sum(s1,s2,s3.。。)

        

        軟RAID

                生產環境中,主要使用硬raid,但是我們也可以通過軟raid 來模擬硬raid的工作方式。

                相關命令:

                    mdadm:模式化的工具
                    格式:mdadm [mode] <raiddevice> [options component-devices<>]
                                支持的raid級別:raid 0 1 4 5 6 10
                    mode:
                        創建:-C
                        裝配:-A
                        監控: -F
                        管理:-f,-r,-a
                 <raiddevice>:/dev/md# 任意塊設備
                    -C:創建模式;
                           -n #:使用#個塊設備來創建raid
                            -l #:指明要創建的raid級別
                            -a {yes|no}:是否自動創建目標raid的設備文件
                            -c CHUNK_SIZE:指明塊大小
                            -x #:指明空閑磁盤的個數

                    -D:顯示raid的詳細信息;
                            mdadm -D /dev/md#
                    管理模式:
                            -f: 標記指定磁盤為損壞
                            -a: 添加磁盤
                            -r: 移除磁盤
                    觀察md的狀態:
                            cat /proc/mdstat

                    生成配置文件:

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

                    停止md設備:
                            mdadm -S /dev/md#

                    激活:

                            mdadm -A -s /dev/md0

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

        應用舉例:創建一個可用空間為1G的RAID1設備,要求其chunk大小為128k,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄

                1、首先創建兩個1G大小的分區/dev/sdc{1,2},調整ID為fd。

                2、創建RAID1

mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdc{1,2}            ###創建raid1時,如果要使用備用硬盤,-n 2(此處不能選3) -x 1
root@cenots6.8  ~ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Aug 30 09:19:25 2016
     Raid Level : raid1
     Array Size : 1048704 (1024.13 MiB 1073.87 MB)
  Used Dev Size : 1048704 (1024.13 MiB 1073.87 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Tue Aug 30 09:19:32 2016
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : cenots6.8:0  (local to host cenots6.8)
           UUID : 7d304fed:b021d2d4:0cc8720b:af8683fb
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       34        1      active sync   /dev/sdc2

            3、格式化/dev/md0,并掛載

mkfs.ext4 /dev/md0
UUID=d5f1e3db-4f61-4651-9b7a-b2bf82446b59       /mnt/raid       ext4    defaults        0  0 
root@cenots6.8  ~ # mount -a
root@cenots6.8  ~ # mount -s
/dev/md0 on /mnt/raid type ext4 (rw)
root@cenots6.8  ~ # cd /mnt/raid/
root@cenots6.8  /mnt/raid # touch a
root@cenots6.8  /mnt/raid # echo bbbb > a
root@cenots6.8  /mnt/raid # cat a
bbbb

           4、生成配置文件

mdadm -Ds /dev/md0 > /etc/mdadm.conf

          5、測試模擬損壞sdc2,然后移除,重新添加,在原有兩塊raid盤的基礎上添加/dev/sdc3

root@cenots6.8  ~ # mdadm /dev/md0 -f /dev/sdc2            ###模擬損壞/dev/sdc2
mdadm: set /dev/sdc2 faulty in /dev/md0
root@cenots6.8  ~ # mdadm -D /dev/md0                      ### 查看狀態
    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       2       0        0        2      removed

       1       8       34        -      faulty   /dev/sdc2
root@cenots6.8  ~ # mdadm /dev/md0 -r /dev/sdc2            ###移除損壞硬盤
mdadm: hot removed /dev/sdc2 from /dev/md0
root@cenots6.8  ~ # mdadm -D /dev/md0                      ###查看狀態
   Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       2       0        0        2      removed
root@cenots6.8  ~ # mdadm /dev/md0 -a /dev/sdc2            ###重新添加新的硬盤
    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       2       8       34        1      active sync   /dev/sdc2
root@cenots6.8  ~ # mdadm -G /dev/md0 -n 3 -a /dev/sdc3         ###添加/dev/sdc3 到原有raid
mdadm: added /dev/sdc3
raid_disks for /dev/md0 set to 3
root@cenots6.8  ~ # mdadm -D /dev/md0 
    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       2       8       34        1      active sync   /dev/sdc2
       3       8       35        2      spare rebuilding   /dev/sdc3

            6、刪除raid

umount /mnt/raid
mdadm -S /dev/md0          ###停止raid
rm -f /etc/mdadm.conf
vi /etc/fstab              ###刪除掛載點
fdisk /dev/sda            ###刪除分區
mdadm --zero-superblock /dev/sdd1   ###清楚記錄

       

創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄

root@cenots6.8  ~ # mdadm -C /dev/md0 -l 5 -a yes -n 3 -x 1 -c 256 /dev/sdc{1,2,3,4}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
root@cenots6.8  ~ # mkfs.ext4 /dev/md0
root@cenots6.8  ~ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Aug 30 09:56:31 2016
     Raid Level : raid5
     Array Size : 2117632 (2.02 GiB 2.17 GB)
  Used Dev Size : 1058816 (1034.00 MiB 1084.23 MB)
   Raid Devices : 3
  Total Devices : 4

     Chunk Size : 256K

           Name : cenots6.8:0  (local to host cenots6.8)
           UUID : d1c039d1:44071753:bd67c401:7f2898af
         Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       34        1      active sync   /dev/sdc2
       4       8       35        2      active sync   /dev/sdc3

       3       8       36        -      spare   /dev/sdc4
       
root@cenots6.8  ~ # vim /etc/fstab 
UUID=d5f1e3db-4f61-4651-9b7a-b2bf82446b59       /mydata       ext4    defaults        0  0 
root@cenots6.8  ~ # mount -a

LVM邏輯卷管理器:

        lvm:logical volume manager邏輯卷管理器,通過DM模塊設備映射組件,能夠將一個或者多個底層的塊設備組織成一個邏輯設備的模塊。
            功能特點:可以動態的擴展和縮減而不影響磁盤中的數據內容。
            缺點:lv是通過軟件控制的,不是直接存儲在物理設備上面,如果有數據損壞不容易恢復,真正使用的時候應該放到有冗余的raid上面。

        lvm的創建過程:
                假如現在底層有一個硬盤設備或者一個分區,或者一個RAID在或者基于任何塊設備進行,現在把這個分區做成物理卷PV(能夠自我存儲設備),我們可以把PV當中所提供的存儲空間,在一個更低的單位上劃分多個獨立的存儲單元,并且把存儲把多個存儲單元合并在一個高層上形成一個組件,我們成為卷組VG,卷組可以包含多個物理卷,卷組所有可用的空間都是有物理卷PV提供的,卷組類似于擴展分區,不能直接使用,需要分區為邏輯分區,在格式化掛載使用,所以在VG的基礎上還要在創建LV組件,lV才是真正的邏輯卷,可以才格式化掛載使用的,lv可以跨越多個PV 可以擴展和縮減,這里也有一個塊的概念那就是PE,PE是在創建VG的時候創建的,且默認大小為4M,如果已經創建好了VG了,則不能修改PE的大小,只能重新創建VG修改PE,如果PE已經分配給LV使用,那么這里PE叫做LE。

        應用舉例:創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄

            1、通過fdisk 創建兩個10G的分區/dev/sdb1 、/dev/sdb2,調整分區ID 為8e。

            2、創建物理卷PV

                        pvcreate /dev/sdb{1,2}

                                pvs 或pvdispaly 可以查看物理卷信息

            3、創建卷組,指定PE大小為16M,注意:PE大小只能在此處指定。

                        vgcreate -s 16M testvg /dev/sdb{1,2}

                                vgs或vgdisplay 查看卷組VG的信息

            4、創建一個5G的邏輯卷LVM

                        lvcreate -L 5G -n testlv testvg

                                lvs或lvdisplay查看邏輯卷lvm的信息

                                ls /dev/mapper 查看testvg-testlv就存在了,可以格式化掛載使用了

            5、格式化掛載邏輯卷LVM,成功之后就可以使用了。   

                        mkfs.ext4 -L TESTLV /dev/testvg/testlv

                        vim /etc/fstab

                                UUID=5aae9d44-745c-46dc-9c6d-68fce7b159b3       /users          ext4 defaults   0    0
                        mount -a
                        mount -s
                                /dev/mapper/testvg-testlv on /users type ext4 (rw)

                         df -h
                                /dev/mapper/testvg-testlv  4.8G   10M  4.6G   1% /users         

            6、擴展卷組VG 和 邏輯卷lVM

                        pvcreate /dev/sdb3

                        vgextend testvg /dev/sdb3   如果此時卷組不夠用了,可以動態添加卷組VG

                                    vgs或vgdisplay 查看卷組VG的信息

                        lvextend -L 10G /dev/testvg/testlv  擴展到10G,但是由于擴展的5G沒有文件系統,所以df的時候發現,空間沒有變為10G,因此需要執行:

                        resize2fs /dev/testvg/testlv     擴展文件系統 resize2fs只能針對ext類型的文件系統進行擴展,因此在使用xfs 創建lvm時如需擴展要使用xfs_growfs                                                  

                                                          擴展所有空間:lvextend –r –l +100%FREE /dev/testvg/testlv    -r的作用可以替代resize2fs 的功能

                        df -h

                                    /dev/mapper/testvg-testlv  9.8G   12M  9.3G   1% /users

            7、邏輯卷lvm縮減

                         umount /users   

                         e2fsck -f /dev/testvg/testlv   強制檢測和修復

                       resize2fs /dev/testvg/testlv 3G        調整到3個G
                        lvreduce -L 3G /dev/testvg/testlv     減小到3個G
                        mount /dev/testvg/testlv /users        重新掛載

                         df -h
                            /dev/mapper/testvg-testlv   2.9G  7.5M  2.7G   1% /users

            8、創建快照

                        lvcreate -s -L 512M -n testlv-snap -p r /dev/testvg/testlv

                        mount /dev/testvg/testlv-snap /snap

            9、如果想移除PV可以做如下操作

                        pvmove /dev/sdb1 此時執行的操作是將sdb1上面的PE移動到其他物理卷上面

                        vgreduce testvg /dev/sdb1 

                        pvremove /dev/sdb1

            10、刪除快照

                        umount  /snap

                        lvremove /dev/testvg/testlv-snap

            11、刪除lv、vg、pv

                        umount /users

                        lvremove /dev/testvg/testlv

                        vgremove testvg

                        pvremove /dev/sdb{1,2,3}

        注意:注意快照也是一個邏輯卷,剛創建完成的時候是一個空的磁盤空間,當我們的源數據要修改時,我們就會把源數據拷貝到快照卷中,然后在修改源數據,如果源數據修改多少次,快照卷的文件也不會變化,只是保留創建快照卷之后,文件第一次變化之前的狀態,其他文件如果不修改,則不會備份到快照卷中,但是當我們創建完快照卷的時候,我們是可以看到里面是有文件存在的,這是因為里面的文件不是真正存儲在快照卷中,打開的時候里面的文件都在我們通過快照卷事實上是提供了訪問原卷的另外一個通路,且在設置快照卷大小時,原卷的數據量變化量不要超過快照卷大小。

                        

        

原創文章,作者:Naruto,如若轉載,請注明出處:http://www.www58058.com/42017

(0)
NarutoNaruto
上一篇 2016-08-30
下一篇 2016-08-30

相關推薦

  • 【N25第三周作業】用戶及權限管理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root     pts/0        2016-12-14&nb…

    Linux干貨 2016-12-14
  • 103-corosync-pacemaker-crmsh

    一、概述: 1.1 什么是AIS和OpenAIS?

    2016-11-26
  • 操作系統—Systemd

    Systemd 概述:       CentOS 6和之前版本采用SysVinit的系統啟動進程管理體系,一般用戶都可通過在/etc/inittab文件的配置,來個性化自己的系統啟動序列。但也經常會由于特殊環境的硬件等關系問題,造成其串行的啟動進程控制流,因為可能任務的阻塞而影響啟動過程。     &nbsp…

    Linux干貨 2016-09-24
  • linux中的權限和ACL

    linux中權限詳解和ACL

    2017-11-18
  • RHEL6.4 yum訪問HTTPS源時出錯

    在RHEL6.4上安裝OpenStack時,使用epel的源,但源是https的,進行安裝時,總報下面的錯誤。     https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/repodata/repomd.xml:  …

    Linux干貨 2016-02-28
  • DNS服務器搭建從協議到實現詳解

    一、域名和服務概述    1.FQDN:Fully Qualified Domain Name,完全限定域名,全局唯一           FQDN是指主機名加上全路徑,全路徑中列出了序列中所有域成員。全域名可以從邏輯上準確地表示…

    Linux干貨 2016-04-30
欧美性久久久久