EXT家族支持度最廣,但
創建文件系統慢
修復慢
存儲容量有限
XFS同樣是日志文件系統:
容量大,支持大存儲
高性能,創建/修復文件系統快
inode與block都是系統需要用到時,才動態配置產生
基本分區(靜態)
7*24小時
不能隨意重裝系統,裝系統時,必須提前規划好
動態磁盤
RAID介紹
什么是raid
raid是廉價冗余磁盤陣列(Redundant Arrays of Independent Drives,RAID)的簡稱,有時候也簡稱磁盤陣列(Disk Array)
raid是一種把多塊獨立的物理磁盤按不同的技術方式組合起來形成一個磁盤組,在邏輯上(做完RAID,裝系統后)看起來就是
一塊大的磁盤,從而提供比單個物理磁盤更大的存儲容量或更高的存儲性能,同時又提供不同級別數據冗余備份的一種技術。
RAID級別介紹
把多個物理磁盤通過不同技術方式組成磁盤陣列,這個不同的技術方式就被稱為RAID級別
RAID級別一般Raid0、Raid1、Raid2、Raid3、Raid4、Raid5、Raid6、Raid7、Raid0+1(也稱為raid10)、Raid53等
生產環境常用的Raid級別為:Raid0、Raid1、Raid5、Raid10
Raid級別 關鍵優點 關鍵缺點 實際應用場景 0 讀寫速度最快 沒有任何冗余 MySQL Slave,集群的節點RS 1 100%冗余,鏡像 讀寫性能一般,成本高 單獨的,數據重要,且不能宕機的業務。監控、系統盤 5 具備一定性能和冗余可以 寫入性能不高 一般的業務都可以用 壞一塊盤。讀性能不錯 10 讀寫速度很快,百分百 成本高 性能和冗余要求都很好的業務 冗余 數據庫主庫和存儲的主節點
下表提供了7級RAID的簡單定義
Raid技術分類
常見Raid技術分為兩種
基於硬件的Riad技術和基於軟件的Raid技術
1.軟raid技術
只有Windows2000/2003、Win9x/WinMe/Linux系統支持
需要CPU配合,性能相對較低
安全性不好,當有一塊硬盤損壞時,它不能實現重建的功能
通過在硬盤中模擬實現,成本較低
2.硬raid技術
所有系統都支持。
從硬件直接支持RAIN,不需要額外性能
當有硬盤丟失時,它可以實現重建,以及如果RAID卡損壞時,它可以通過更換RAID卡,實現不丟失數據的功能
需要相應的硬件設備支持,成本較高
互聯網公司首選dell服務器,默認的就會支持raid0和raid1,如果需要raid5、raid10就需要買raid卡
RAID和LVM的區別
LVM源於HP,是LINUX平台下的一種綜合存儲解決方案。算是RAID的一個超集。不但實現了主流的RAID功能(span/stripe/mirror
/stripemirror/RAID 4/RAID 5/RAID 6),而且還有快照和存儲池支持;同時還支持在線數據遷移和卷級別的尺寸變動等功能。
算是一種相當優秀的解決方案。當然,缺點跟軟件RAID一樣,需要占用CPU。
LVM:靈活的管理磁盤的容量,有一定的冗余和性能功能,但很弱。
RAID:更側重性能和數據安全
為什么使用RAID
1.提高數據安全性
2.提升數據讀寫性能
3.提供更大的單一邏輯磁盤數據容量存儲
raid5案例:3+1(熱備)
1.准備四塊硬盤 [root@xiaoming ~]# lsblk | grep sd[d-g] sdd 8:48 0 5G 0 disk sde 8:64 0 5G 0 disk sdf 8:80 0 5G 0 disk sdg 8:96 0 5G 0 disk
2.創建raid5 [root@xiaoming ~]# yum install -y mdadm [root@xiaoming ~]# mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[d-g] mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. \\相關選項解釋 -C 創建RAID /dev/md0 第一個raid設備 -l5 Raid5 -n3 raid成員三塊硬盤 -x1 熱備磁盤一塊硬盤
3.格式化 [root@xiaoming ~]# mkfs.xfs /dev/md0 4.掛載 [root@xiaoming ~]# mkdir /mnt/raid5 [root@xiaoming ~]# mount /dev/md0 /m
5.查看raid信息 [root@xiaoming ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Mon Dec 30 12:10:14 2019 Raid Level : raid5 Array Size : 10475520 (9.99 GiB 10.73 GB) Used Dev Size : 5237760 (5.00 GiB 5.36 GB) Raid Devices : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Mon Dec 30 12:17:13 2019 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : resync Name : xiaoming:0 (local to host xiaoming) UUID : 5f80c18b:d803af9e:5b002baa:06c7dedf Events : 18 Number Major Minor RaidDevice State 0 8 48 0 active sync /dev/sdd 1 8 64 1 active sync /dev/sde 4 8 80 2 active sync /dev/sdf 3 8 96 - spare /dev/sdg
6.模擬一塊硬盤錯誤 開兩個終端 一個監控RAID信息 一個模擬磁盤故障 [root@xiaoming raid5]# mdadm /dev/md0 -f /dev/sde -r /dev/sde mdadm: set /dev/sde faulty in /dev/md0 mdadm: hot removed /dev/sde from /dev/md0 //-f fail //-r remove 觀察RAID卷的變化 ...
LVM簡介
logical volume manager
實現動態分區
CentOS6/7默認都是lvm分區
物理卷(PV):把常規的塊設備(硬盤、分區等可以讀寫數據的設備)通過PVcreate命令對其進行初始化,就成了物理卷
卷組(VG):把多個物理卷的容量組成一個邏輯整體,可以從里面靈活分配容量
邏輯卷(LV):從卷組中划分部分空間成為一個可以讀寫數據的邏輯單元。需要對其格式化然后掛載使用
案例:基於RAID5的lvm
1.創建過程:
1)創建物理卷,添加物理磁盤
2)創建卷組,添加物理卷加入該卷組
3)在卷組中划分邏輯卷
1.准備物理磁盤
/dev/md0
2.創建物理卷PV 查看物理卷 pvs pvscan pvdisplay [root@xiaoming ~]# yum install -y lvm2 [root@xiaoming ~]# pvcreate /dev/md0 Physical volume "/dev/md0" successfully created. [root@xiaoming ~]# pvs PV VG Fmt Attr PSize PFree /dev/md0 lvm2 --- 9.99g 9.99g /dev/sda2 centos lvm2 a-- <19.00g 0
3.創建卷組 查看卷組 vgs vgscan vgdisplay [root@xiaoming ~]# vgcreate datavg /dev/md0 Volume group "datavg" successfully created [root@xiaoming ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 datavg 1 0 0 wz--n- <9.99g <9.99g
4.創建邏輯卷LV 查看邏輯卷 lvs lvscan lvdisplay [root@xiaoming ~]# lvcreate -L 2G -n lv1 datavg Logical volume "lv1" created. [root@xiaoming ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g lv1 datavg -wi-a----- 2.00g
5.創建文件系統(格式化) mkfs.ext4 /dev/datavg/lv1 mkfs.xfs /dev/datavg/lv2mkfs.xfs lv的寫法 /dev/mapper/datavg-lv1 /dev/mapper/lv1 UUID 6.掛載並使用 [root@xiaoming ~]# mkdir /mnt/lv1 [root@xiaoming ~]# mount /dev/datavg/lv1 /mnt/lv1/
數據遷移卷組VG,同一卷組的磁盤才可以進行在線遷移
1.檢查當前邏輯卷的使用情況 [root@xiaoming ~]# pvs PV VG Fmt Attr PSize PFree /dev/md0 datavg lvm2 a-- <9.99g <5.99g /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdc datavg lvm2 a-- <5.00g <5.00g 2.pvmove在線數據遷移至其他pv [root@xiaoming ~]# pvmove /dev/md0 /dev/md0: Moved: 5.86% /dev/md0: Moved: 50.00% [root@xiaoming ~]# pvs PV VG Fmt Attr PSize PFree /dev/md0 datavg lvm2 a-- <9.99g <9.99g /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdc datavg lvm2 a-- <5.00g 1020.00m
擴容邏輯卷lv
邏輯卷的擴展,取決於vg卷中剩余多少容量。
[root@xiaoming ~]# lvextend -L +2G /dev/datavg/lv1 Size of logical volume datavg/lv1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents). Logical volume datavg/lv1 successfully resized. [root@xiaoming ~]# lvextend -l +50%FREE /dev/datavg/lv2 Size of logical volume datavg/lv2 changed from 2.00 GiB (512 extents) to 6.49 GiB (1662 extents). Logical volume datavg/lv2 successfully resized. 注意:必須使用下面的方式,更新擴展之后的lv //xfs擴容 [root@xiaoming ~]# xfs_growfs /dev/datavg/lv1 //ext擴容 [root@xiaoming ~]# resize2fs /dev/datavg/lv2
縮小邏輯卷
1.如果已經掛載,先卸載需要縮容的lv [root@xiaoming ~]# umount /dev/datavg/lv1 2.檢測文件系統 //ext檢測 [root@xiaoming ~]# fsck /dev/datavg/lv1 fsck,來自 util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/datavg-lv1: clean, 11/262144 files, 34894/1048576 blocks //xfs檢測 [root@xiaoming ~]# xfs_repair /dev/datavg/lv2 注意:必須先卸載lv 3.定義裁剪容量(ext4) [root@xiaoming ~]# resize2fs /dev/datavg/lv2 1G resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/datavg/lv2 Couldn't find valid filesystem superblock. [root@xiaoming ~]# resize2fs /dev/datavg/lv1 1G resize2fs 1.42.9 (28-Dec-2013) Please run 'e2fsck -f /dev/datavg/lv1' first. 注意:如果不成功,根據提示信息輸入下面的命令 [root@xiaoming ~]# e2fsck -f /dev/datavg/lv1 [root@xiaoming ~]# resize2fs /dev/datavg/lv1 1G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/datavg/lv1 to 262144 (4k) blocks. The filesystem on /dev/datavg/lv1 is now 262144 blocks long. [root@xiaoming ~]# fsck /dev/datavg/lv1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/datavg-lv1: clean, 11/262144 files, 34894/1048576 blocks //裁剪容量(擴展,慎重) [root@xiaoming ~]# lvreduce -L 1G /dev/datavg/lv1 WARNING: Reducing active logical volume to 1.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce datavg/lv1? [y/n]: y Size of logical volume datavg/lv1 changed from 4.00 GiB (1024 extents) to 1.00 GiB (256 extents). Logical volume datavg/lv1 successfully resized. [root@xiaoming ~]fsck -f /dev/datavg/lv1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/mapper/datavg-lv1: 11/65536 files (0.0% non-contiguous), 21787/262144 blocks 5.再次檢測文件系統 [root@xiaoming ~]# fsck /dev/datavg/lv1 fsck from util-linux 2.23.2 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/datavg-lv1: clean, 11/65536 files, 21787/262144 blocks 6.掛載測試 如果能夠掛載,一般說明裁剪成功,文件系統沒有損壞
刪除LV邏輯卷
刪除使用lv-vg-pv,保證都沒使用
//邏輯卷 [root@xiaoming ~]# umount /dev/datavg/lv1 [root@xiaoming ~]# lvremove /dev/datavg/lv1 Do you really want to remove active logical volume datavg/lv1? [y/n]: y Logical volume "lv1" successfully removed //卷組 [root@xiaoming ~]# vgremove /dev/datavg Do you really want to remove volume group "datavg" containing 1 logical volumes? [y/n]: y Do you really want to remove active logical volume datavg/lv2? [y/n]: y Logical volume "lv2" successfully removed Volume group "datavg" successfully removed //物理卷 [root@xiaoming ~]# pvremove /dev/md0 /dev/sdc Labels on physical volume "/dev/md0" successfully wiped. Labels on physical volume "/dev/sdc" successfully wiped.
總結
RAID *****
企業使用的硬件RAID(raid卡),保障磁盤的可靠性,提高磁盤的性能
LVM ***
針對分區實現動態擴容
pv vg lv
磁盤分區企業應用:數據遷移
常規生產環境分區一個/
問題:/home /var /usr等目錄數據增長較快
解決方案:
1、將新加的硬盤(RAID)分區格式化掛載
2、cp(mv) -rpf /home/* 新分區掛載點
3、mount 新分區 /home,寫入/etc/fstab
創建 查看 擴展 刪除
pv pvcreate pvs pvremove
pvscan
pvdisplay
vg vgcreate vgs vgextend vgremove
vgscan
vgdisplay
lv lvcreate lvs lvextend lvremove
lvscan
lvdisplay