linux系統用戶常遇到的一個問題就是如何精准的評估分區的大小,已分配合適的磁盤空間;普通的磁盤分區管理方式在邏輯分區划分好之后就無法改變其大小,當一個邏輯分區存放不下某個文件時,這個文件因為受上層文件系統的限制,也不能跨越多個分區來存放,所以也不能同時放到別的磁盤上。而遇到出現某個分區空間耗盡時,解決的方法通常是使用符號鏈接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。隨着Linux的邏輯卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方便地調整各個分區大小。(參考百度百科)
邏輯卷的缺點:
- 邏輯卷主要的作用就是動態管理分區的大小,但是現在市場上的磁盤已經很廉價了,我們完全可以分配合適的磁盤空間。
- 在磁盤直接分區是屬於直接在磁盤上建立文件系統,而邏輯卷是建立磁盤和文件系統之間的標識,所以當線上服務器的磁盤壞了,數據恢復有很大的風險
- 邏輯卷的數據讀寫的速度也是有些慢的
1、LVM常用的術語:
- 物理存儲介質(The physical media):LVM存儲介質可以是磁盤分區,整個磁盤,RAID陣列或SAN磁盤,設備必須初始化為LVM物理卷,才能與LVM結合使用;
- 物理卷PV(physical volume) :物理卷就是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數,創建物理卷它可以用硬盤分區,也可以用硬盤本身;
- 卷組VG(Volume Group) :一個LVM卷組由一個或多個物理卷組成;
- 邏輯卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系統;
- PE(physical extents) :PV物理卷中可以分配的最小存儲單元,PE的大小是可以指定的,默認為4MB;
- LE(logical extent) : LV邏輯卷中可以分配的最小存儲單元,在同一個卷組中,LE的大小和PE是相同的,並且一一對應;
2、常用的LVM部署命令
功能/命令 | 物理卷管理 | 卷組管理 | 邏輯卷管理 |
---|---|---|---|
掃描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
顯示 | pvdisplay | vgdisplay | lvdisplay |
刪除 | pvremove | vgremove | lvremove |
擴展 | vgextend | lvextend | |
縮小 | vgreduce | lvreduce |
xfs文件系統管理常用命令
命令 | 作用 |
---|---|
xfs_admin | 調整 xfs 文件系統的各種參數 |
xfs_copy | 拷貝 xfs 文件系統的內容到一個或多個目標系統(並行方式) |
xfs_db | 調試或檢測 xfs 文件系統(查看文件系統碎片等) |
xfs_check | 檢測 xfs 文件系統的完整性 |
xfs_bmap | 查看一個文件的塊映射 |
xfs_repair | 嘗試修復受損的 xfs 文件系統 |
xfs_fsr | 碎片整理 |
xfs_quota | 管理 xfs 文件系統的磁盤配額 |
xfs_metadump | 將 xfs 文件系統的元數據 (metadata) 拷貝到一個文件中 |
xfs_mdrestore | 從一個文件中將元數據 (metadata) 恢復到 xfs 文件系統 |
xfs_growfs | 調整一個 xfs 文件系統大小(只能擴展) |
xfs_freeze | 暫停(-f)和恢復(-u)xfs 文件系統 |
xfs_logprint | 打印xfs文件系統的日志 |
xfs_mkfile | 創建xfs文件系統 |
xfs_info | 查詢文件系統詳細信息 |
xfs_ncheck | generate pathnames from i-numbers for XFS |
xfs_rtcp | XFS實時拷貝命令 |
xfs_io | 調試xfs I/O路徑 |
3、LVM邏輯卷部署
物理卷 --> 卷組 --> 邏輯卷
①. 創建物理卷
pvcreate /dev/sd{b,c}
②. 創建卷組
vgcreate vg_du /dev/sd{b,c}
③. 創建邏輯卷
lvcreate -n lv_du -L 500M vg_ken
④. 格式化
mkfs.xfs /dev/vg_du/lv_du
⑥. 掛載使用
mount /dev/vg_du/lv_du /test
注意:卸載命令umount
后面跟掛載點或者磁盤都可以
LVM擴容
lvextend -L +300M /dev/vg_du/lv_du
lvextend -L 800M /dev/vg_du/lv_du
xfs_growfs /dev/vg_du/lv_du
演示:
#第一步:添加磁盤並查看
╭─root@localhost.localdomain ~
╰─➤ ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc
#第二步:創建物理卷
╭─root@localhost.localdomain ~
╰─➤ pvcreate /dev/sd{b,c} 5 ↵
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
#第三步:創建卷組
╭─root@localhost.localdomain ~
╰─➤ vgcreate vg_du /dev/sd{b,c}
Volume group "vg_du" successfully created
#第四步:創建邏輯卷並格式化邏輯卷
╭─root@localhost.localdomain ~
╰─➤ man lvcreate #開手冊查看用法,常用option:-l -L -n
╭─root@localhost.localdomain ~
╰─➤ lvcreate -L 1G -n lv_du1 vg_du #-L:size 大小 -n:name 名字
Logical volume "lv_du1" created.
╭─root@localhost.localdomain ~
╰─➤ mkfs.xfs /dev/vg_du/lv_du1
meta-data=/dev/vg_du/lv_du1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
╭─root@localhost.localdomain ~
╰─➤ lvcreate -l 250 -n lv_du2 vg_du #-l :數量
Logical volume "lv_du2" created.
╭─root@localhost.localdomain ~
╰─➤ mkfs.xfs /dev/vg_du/lv_du2
meta-data=/dev/vg_du/lv_du2 isize=512 agcount=4, agsize=64000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=256000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#第五步:掛載
╭─root@localhost.localdomain ~
╰─➤ mkdir /du1
╭─root@localhost.localdomain ~
╰─➤ mkdir /du2
╭─root@localhost.localdomain ~
╰─➤ mount /dev/vg_du/lv_du1 /du1
╭─root@localhost.localdomain ~
╰─➤ mount /dev/vg_du/lv_du2 /du2
╭─root@localhost.localdomain ~
╰─➤ df #查詢掛載成功
文件系統 1K-塊 已用 可用 已用% 掛載點
/dev/mapper/cl-root 17811456 4837880 12973576 28% /
devtmpfs 484108 0 484108 0% /dev
tmpfs 499968 144 499824 1% /dev/shm
tmpfs 499968 7228 492740 2% /run
tmpfs 499968 0 499968 0% /sys/fs/cgroup
/dev/sda1 1038336 176600 861736 18% /boot
tmpfs 99996 16 99980 1% /run/user/0
/dev/sr0 4276440 4276440 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_du-lv_du1 1038336 32944 1005392 4% /du1
/dev/mapper/vg_du-lv_du2 1020580 32944 987636 4% /du2
#第六步:開機自啟
╭─root@localhost.localdomain ~
╰─➤ echo "/dev/mapper/vg_du-lv_du1 /du1 xfs defaults 0 0" >> /etc/fstab
╭─root@localhost.localdomain ~
╰─➤ echo “mount /dev/vg_du/lv_du2 /du2” >> /etc/rc.local
╭─root@localhost.localdomain ~
╰─➤ chmod +x /etc/rc.local #給個執行權限
# /etc/rc.local
是使用者自訂開機啟動程序的文件,把需要開機自動運行的程序寫在這個腳本里