Linux之高級文件系統管理

 

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

(0)
dengjiandengjian
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • 07程序包管理器簡介

    源代碼命名方式,name-version.tar.gz|bz2|xz,    –>version:major.minor.release 要將一個源代碼程序安裝到Linux系統上,一般有兩個方法。 1、找到源代碼,手動編譯安裝。解壓,./configure  –> make –&g…

    Linux干貨 2016-11-03
  • 學習linux命令和幫助

    一、初級命令: 命令的語法通用格式:  #COMMAND OPTIONS ARGUMRNTS OPTIONS:制定命令的運行特性 選項有兩種表現形式:    段選項: -c    短選項:–word 例如 –help –human-readable ARGUM…

    Linux干貨 2016-10-30
  • Linux yum客戶端的配置及yum命令

    一、什么是yum我們在Linux系統上安裝處理軟件,一般是使用RPM,它是通過預先編譯完成并且把軟件打包為RPM文件格式后,再加以安裝的一種方式,使用者只要拿到這個打包好的軟件,然后將里頭的文件放置到應該擺放的目錄,這樣就完成了安裝。但是,由于有些軟件是有依賴于其他軟件的,當你要安裝某個RPM類型的軟件時,RPM會檢驗RPM軟件數據庫,它所依賴的相關軟件包是…

    2017-06-11
  • LVS入門

    隨著互聯網進入尋常百姓家,網絡流量愈來愈大,大規模的網路訪問如果都使用一個服務器提供服務,那么網絡通訊注定會擁堵不堪。為了解決這些問題,達到使網絡流量均衡地分散到各個服務器上的目的,一些技術大牛發明了LVS負載均衡技術。   LVS簡介   LVS(Linux Virtual Server)即為Linux虛擬服務器,使由章文嵩博士主導開發…

    Linux干貨 2017-05-09
  • Linux ansible 服務

                      Linux ansible 服務 Ansible:    運維工具的分類: agent:基于專用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ss…

    系統運維 2016-11-19
  • 推薦-LVS原理詳解

    LVS原理詳解 LVS原理詳解 LVS簡介 LVS結構與工作原理 一.LVS的結構 二.LVS內核模型 三.LVS的包轉發模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的調度算法 LVS的調度算法分為靜態與動態兩類。 1.靜態算法(4種):只根據算法進行調度 而不考慮后端服務器的實際連接情況和負載情況 2.動態算法(6種):前端的調度器…

    Linux干貨 2016-03-27
欧美性久久久久