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

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

<font color=red>邏輯卷的缺點:</font>服務器

  1. 邏輯卷主要的做用就是動態管理分區的大小,可是如今市場上的磁盤已經很廉價了,咱們徹底能夠分配合適的磁盤空間。
  2. 在磁盤直接分區是屬於直接在磁盤上創建文件系統,而邏輯卷是創建磁盤和文件系統之間的標識,因此當線上服務器的磁盤壞了,數據恢復有很大的風險
  3. 邏輯卷的數據讀寫的速度也是有些慢的

##一、LVM經常使用的術語:app

  • 物理存儲介質(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是相同的,而且一一對應;

##二、經常使用的LVM部署命令dom

功能/命令 物理卷管理 卷組管理 邏輯卷管理
掃描 pvscan vgscan lvscan
創建 pvcreate vgcreate lvcreate
顯示 pvdisplay vgdisplay lvdisplay
刪除 pvremove vgremove lvremove
擴展 vgextend lvextend
縮小 vgreduce lvreduce

##xfs文件系統管理經常使用命令tcp

命令 做用
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路徑

##三、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 /testspa

注意:卸載命令umount 後面跟掛載點或者磁盤均可以調試

LVM擴容 lvextend -L +300M /dev/vg_du/lv_du lvextend -L 800M /dev/vg_du/lv_durest

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

相關文章
相關標籤/搜索