Linux系統磁盤管理(lvm邏輯卷管理)


linux系統用戶常遇到的一個問題就是如何精准的評估分區的大小,已分配合適的磁盤空間;普通的磁盤分區管理方式在邏輯分區划分好之后就無法改變其大小,當一個邏輯分區存放不下某個文件時,這個文件因為受上層文件系統的限制,也不能跨越多個分區來存放,所以也不能同時放到別的磁盤上。而遇到出現某個分區空間耗盡時,解決的方法通常是使用符號鏈接,或者使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。隨着Linux的邏輯卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方便地調整各個分區大小。(參考百度百科)

邏輯卷的缺點:

  1. 邏輯卷主要的作用就是動態管理分區的大小,但是現在市場上的磁盤已經很廉價了,我們完全可以分配合適的磁盤空間。
  2. 在磁盤直接分區是屬於直接在磁盤上建立文件系統,而邏輯卷是建立磁盤和文件系統之間的標識,所以當線上服務器的磁盤壞了,數據恢復有很大的風險
  3. 邏輯卷的數據讀寫的速度也是有些慢的

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 
   是使用者自訂開機啟動程序的文件,把需要開機自動運行的程序寫在這個腳本里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM