Linux之高級文件系統管理
Linux高級文件系統管理包括以下內容
一, 磁盤配額quota管理
二, 磁盤陣列RAID管理
三, 邏輯磁盤LVM管理
四, 磁盤LVM快照管理
五, Btrfs文件系統管理
配置磁盤配額系統
在內核中執行
以文件系統為單位啟用
對不同組或者用戶的策略不同
根據塊或者節點進行限制
執行軟限制(soft limit)
硬限制(hard limit)
初始化
分區掛載選項:usrquota、grpquota
初始化數據庫:quotacheck
為用戶設定配額
執行
開啟或者取消配額:quotaon、quotaoff
直接編輯配額:edquota username
在shell中直接編輯:
setquota usename 4096 5120 40 50 /foo
定義原始標準用戶
edquota -p user1 user2
報告配額狀態
報告
用戶調查:quota
配額概述:repquota
其它工具:warnquota
磁盤陣列RAID管理
RAID:Redundant Arrays of Inexpensive(Independent)Disks
1988年由加利福尼亞大學伯克利分校(University of California-Berkeley)“A Case for Redundant Arrays of Inexpensive Disks”。
多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提供
RAID
提高IO能力:
磁盤并行讀寫
提高耐用性;
磁盤冗余來實現
級別:多塊磁盤組織在一起的工作方式有所不同
RAID實現的方式:
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
安裝OS前在BIOS里配置
Software RAID:
RAID級別
RAID-0:條帶卷,strip
RAID-1: 鏡像卷,mirror
RAID-2
..
RAID-5
RAID-6
RAID-10
RAID-01
RAID-0:
讀、寫性能提升;
可用空間:N*min(S1,S2,…)
無容錯能力
最少磁盤數:2, 2
RAID-1:
讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,…)
有冗余能力
最少磁盤數:2, 2N
RAID-4:
多塊數據盤異或運算值,存于專用校驗盤
RAID-5:
讀、寫性能提升
可用空間:(N-1)*min(S1,S2,…)
有容錯能力:允許最多1塊磁盤損壞
最少磁盤數:3, 3+
RAID-6:
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4, 4+
RAID混合類型級別
RAID-10:
讀、寫性能提升
可用空間:N*min(S1,S2,…)/2
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4, 4+
RAID-01、RAID-50
RAID7:可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,可以獨立運行,理論上性能最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:將多塊磁盤的空間合并一個大的連續空間使用
可用空間:sum(S1,S2,…)
常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
軟RAID
mdadm:為軟RAID提供管理界面
為空余磁盤添加冗余
結合內核中的md(multi devices)
RAID設備可命名為/dev/md0、/dev/md1、/dev/md2、/dev/md3等等
軟件RAID的實現
mdadm:模式化的工具
命令的語法格式:mdadm[mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
創建:-C
裝配: -A
監控: -F
管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意塊設備
-C: 創建模式
-n #: 使用#個塊設備來創建此RAID;
-l #:指明要創建的RAID的級別;
-a {yes|no}:自動創建目標RAID設備的設備文件;
-c CHUNK_SIZE: 指明塊大小;
-x #: 指明空閑盤的個數;
例如:創建一個10G可用空間的RAID5
-D:顯示raid的詳細信息;
mdadm-D /dev/md#
管理模式:
-f: 標記指定磁盤為損壞
-a: 添加磁盤
-r: 移除磁盤
觀察md的狀態:
cat /proc/mdstat
停止md設備:
mdadm-S /dev/md#
軟RAID配置實例
使用mdadm創建并定義RAID設備
#mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
用文件系統對每個RAID設備進行格式化
#mke2fs -j /dev/md0
測試RAID設備
mdadm允許檢查RAID設備的狀況
#mdadm –detail|D /dev/md0
增加新的成員
#mdadm –G /dev/md0 –n4 -a /dev/sdf1
軟RAID測試和修復
模擬磁盤故障
#mdadm /dev/md0 -f /dev/sda1
移除磁盤
#mdadm /dev/md0 –r /dev/sda1
從軟件RAID磁盤修復磁盤故障
替換出故障的磁盤然后開機
在備用驅動器上重建分區
#mdadm /dev/md0 -a /dev/sda1
mdadm、/proc/mdstat及系統日志信息
軟RAID管理
生成配置文件:mdadm –D –s >> /etc/mdadm.conf
停服務:mdadm –S /dev/md0
激活:mdadm –A –s /dev/md0 激活
刪除raid信息:mdadm –zero-superblock /dev/sdb1
邏輯卷管理器(LVM)
邏輯卷管理器(LVM)允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
允許在多個物理設備間重新組織文件系統
將設備指定為物理卷
用一個或者多個物理卷來創建一個卷組
物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的
在物理卷上創建的邏輯卷是由物理區域(PE)組成
可以在邏輯卷上創建文件系統
LVM介紹
LVM: Logical Volume Manager,Version: 2
dm: device mapper:將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備名:/dev/dm-#
軟鏈接:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
LVM更改文件系統的容量
LVM可以彈性的更改LVM的容量
通過交換PE來進行資料的轉換,將原來LV內的PE轉移到其他的設備中以降低LV的容量,或將其他設備中的PE加到LV中以加大容量
查看LVM的使用情況
點擊“系統”->“管理”->“邏輯卷管理器”
增大或減小邏輯卷
打開邏輯卷管理器后,點擊“編輯屬性”,打開LVM屬性對話框:
刪除邏輯卷
刪除邏輯卷必須先刪除LV,再刪除VG,最后刪除PV
點擊邏輯卷管理器的“卷組”->“邏輯視圖”的LV邏輯卷
點擊“移除選擇的邏輯卷”,再刪除VG,最后刪除PV。
pv管理工具
顯示pv信息
pvs:簡要pv信息顯示
pvdisplay
創建pv
pvcreate /dev/DEVICE
顯示卷組
vgs
vgdisplay
創建卷組
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
管理卷組
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath…]
刪除卷組
先做pvmove,再做vgremove
lv管理工具
顯示邏輯卷
lvs
Lvdisplay
創建邏輯卷
lvcreate-L #[mMgGtT] -n NAME VolumeGroup
刪除邏輯卷
lvremove/dev/VG_NAME/LV_NAME
重設文件系統大小
fsadm[options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]
擴展和縮減邏輯卷
擴展邏輯卷:
# lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME
縮減邏輯卷:
# umount/dev/VG_NAME/LV_NAME
# e2fsck -f /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
# lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
# mount
創建邏輯卷實例
創建物理卷
pvcreate /dev/sda3
為卷組分配物理卷
vgcreate vg0 /dev/sda3
從卷組創建邏輯卷
lvcreate -L 256M -n data vg0
mke2fs -j /dev/vg0/data
mount /dev/vg0/data /mnt/data
邏輯卷管理器快照
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
對于需要備份或者復制的現有數據集臨時拷貝以及其它操作來說,快照是最合適的選擇。
快照只有在它們和原來的邏輯卷不同時才會消耗空間。
在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者快照有所改變才會使用這些空間
當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中。
快照中只含有原來的邏輯卷中更改的數據或者自生成快照后的快照中更改的數據
建立快照的卷大小只需要原始邏輯卷的15%~20%就夠了。也可以使用lvextend放大快照。
快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據改動了,則原始數據會被移動到快照區,沒有改動的區域則由快照區和文件系統共享。
由于快照區與原本的LV共用很多PE的區塊,因此快照去與被快照的LV必須要要在同一個VG上!系統恢復的時候的文件數量不能高于快照區的實際容量。
使用LVM快照
為現有邏輯卷創建快照
#lvcreate -l 64 -s -n snap-data -p r /dev/vg0/data
掛載快照
#mkdir -p /mnt/snap
#mount -o ro /dev/vg0/snap-data /mnt/snap
刪除快照
#umount /mnt/databackup
#lvremove /dev/vg0/databackup
btrfs文件系統
技術預覽版
Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW
核心特性:
多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID,以及聯機“添加”、“移除”,“修改”
寫時復制更新機制(CoW):復制、更新及替換指針,而非“就地”更新
數據及元數據校驗碼:checksum
子卷:sub_volume
快照:支持快照的快照
透明壓縮
btrfs文件系統創建:
mkfs.btrfs
-L 'LABEL'
-d <type>: raid0, raid1, raid5, raid6, raid10, single
-m <profile>: raid0, raid1, raid5, raid6, raid10, single, dup
-O <feature>
-O list-all: 列出支持的所有feature
mkfs.btrfs-L mydata-f /dev/sdb/dev/sdc
屬性查看:
btrfsfilesystem show ; blkid
btrfs filesystem show –mounted|all-devices
掛載文件系統:
mount -t btrfs/dev/sdbMOUNT_POINT
透明壓縮機制:
mount -o compress={lzo|zlib} DEVICE MOUNT_POINT
在線修改文件系統大小
man btrfs
btrfsfilesystem resize -10G /mydata
btrfsfilesystem resize +5G /mydata
btrfsfilesystem resize max /mydata
查看
df–lh; btrfsfilesytemdf/mydata
添加設備:man btrfs-device
btrfsdevice add /dev/sdd/mydata
平衡數據:man btrfs-banlance
btrfs banlance status /mydata
btrfs banlance start /mydata
btrfs banlance pause /mydata
btrfs banlance cancel /mydata
btrfs banlance resume /mydata
刪除設備
btrfs device delete /dev/sdb /mydata
修改raid級別:注意raid對成員數量的要求
btrfs balance start -mconvert=raid1|raid0|raid5 /mydata
btrfs balance start -dconvert=raid1|raid0|raid5 /mydata
子卷管理:man btrfs-subvolume
btrfssubvolumelist /mydata 查看子卷ID等信息
btrfssubvolumecreate /mydata/subv1
umount/mydata
mount -o subvol=subv1 /dev/sdd/mnt/subv1
btrfssubvolumeshow /mnt/subv1
mount /dev/sdb/mydata掛父卷,子卷自動掛載
mount -o subvolid=### /dev/sdd/mnt/subv1
子卷管理
btrfssubvolumeshow /mnt/subv1
btrfssubvolumedelete /mydata/subv1
創建快照:
btrfssubvolumesnapshot /mydata/subv1 \/mydata/snapshot_subv1
btrfssubvolumelist /mydata
刪除快照
btrfssubvolumedelete /mydata/snapshot_subv1
對一個文件做快照(當前卷)
cd /mydata/subv1
cp–reflinktestfilesnapshot_testfile
練習
1:創建一個可用空間為1G的RAID1設備,要求其chunk大小為128k,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄
lsblk
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
partx -a /dev/sdb
partx -a /dev/sdc
partx -a /dev/sdd
lsblk
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 -c 128k /dev/sd{b,c,d}
mdadm -D /dev/md0
cat /proc/mdstat
mkfs.ext4 /dev/md0
vim /etc/fstab
:r! UUID="……" /backup ext4 defaults 0 0
mdadm -Ds /dev/md0 > /etc/mdadm.conf
mdadm -A /dev/md0
2:創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄
lsblk
fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
partx -a /dev/sdb
partx -a /dev/sdc
partx -a /dev/sdd
partx -a /dev/sde
lsblk
mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 -c 256k /dev/sd{b,c,d}
mdadm -D /dev/md0
cat /proc/mdstat
mkfs.ext4 /dev/md0
vim /etc/fstab
:r! UUID="……" /mydata ext4 defaults 0 0
mdadm -Ds /dev/md0 > /etc/mdadm.conf
mdadm -A /dev/md0
練習
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
2、新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
5、對testlv創建快照,并嘗試基于快照備份數據,驗正快照的功能
pvdisplay
pvcreate /dev/sdb
pvcreate /dev/sdc
pvdispaly
vgcreate testvg /dev/sdb /dev/sdc
vgdisplay
lvcreate -n testlv -L 5G testvg
lvdisplay
vim /etc/fstab
:r!blkid /dev/testlv UUID /users ext4 defaults 0 0
useradd archlinux -d /users/archlinux
su – archlinux
copy /etc/pam.d /home/archlinux/
lvextend -L 7G /dev/testvg/testlv
resize2fs /dev/testvg/testlv
lvdisplay
umount /users/testlv
e2fsck -f /dev/testvg/testlv
resize2fs /dev/testvg/testlv 3G
lvreduce -L 3G /dev/testvg/testlv
mount -a
lvcreant -n testlv-snapshot -s -p r -L 3G /dev/testvg/testlv
mkdir mnt/snapshot
mount /dev/testvg/testlv /mnt/snapshot
實驗ext4和btrfs互轉
btrfs balance start -dconvert=single /mydata
btrfs balance start -mconvert=raid1 /mydata
btrfs device delete /dev/sdd /mydata
fdisk /dev/sdd分區
mkfs.ext4 /dev/sdd1
mount /dev/sdd1 /mnt
cp /etc/fstab /mnt
umount /mnt/
fsck -f /dev/sdd1
btrfs-convert /dev/sdd1 轉化ext4為btrfs
btrfs fikesystem show
mount /dev/sdd1 /mnt
實驗ext4和btrfs互轉
btrfs轉化ext4文件系統
umount /mnt
btrfs-convert -r /dev/sdd1
blkid /dev/sdd1
再轉換成btrfs
btrfs-convert /dev/sdd1
原創文章,作者:dengjian,如若轉載,請注明出處:http://www.www58058.com/42748