關于 Linux中卷/分區等知識的一些總結
寫在前面

和小伙伴們分享一些linux中存儲相關的知識
這部分東西基本用不到,但是要有一個清晰的定義
文章內容涉及:
linux文件存儲,LVM相關概念
使用Linxu文件系統格式化分區,分區掛載
調整邏輯卷,添加交換分區等實戰Demo
可以區分以下概念
主分區,擴展分區,邏輯分區,交換分區,卷組,物理卷,邏輯卷,VDO卷等
寫在前面
和小伙伴們分享一些Linux中存儲相關的知識
這部分東西基本用不到,但是要有一個清晰的定義
文章內容涉及:
Linux文件存儲,LVM相關概念
使用Linxu文件系統格式化分區,分區掛載
調整邏輯卷,添加交換分區等實戰Demo
可以區分以下概念
主分區,擴展分區,邏輯分區,交換分區,卷組,物理卷,邏輯卷,VDO卷等
Linux文件存儲,LVM相關概念
使用Linxu文件系統格式化分區,分區掛載
調整邏輯卷,添加交換分區等實戰Demo
可以區分以下概念
主分區,擴展分區,邏輯分區,交換分區,卷組,物理卷,邏輯卷,VDO卷等
自殺並不是一定就是軟弱,常常倒是一種堅定的抗議,是鮮活可愛的心向生命要求意義的無可奈何的慘烈方式。 ------- 史鐵生《我與地壇》
一、標準分區文件存儲
正常的拿到一塊磁盤我們會使用lsblk查看分區,之后會使用fdisk或者parted進行分區 ,分區之后會使用mkfs相關指定文件系統進行格式化處理,最后通過mount進行掛載處理,掛載到對應的目錄,我們就可以正常的使用目錄。順序如下:
識別磁盤(lsblk)
分區
fdisk(MSDOS分區表)
gdisk(GPT分區表 >2.2TB磁盤)
parted(兩種都可以)
fdisk(MSDOS分區表)
gdisk(GPT分區表 >2.2TB磁盤)
parted(兩種都可以)
格式化(mkfs相關)
掛載(mount)
訪問掛載點
具體的流程
$lsblk #查看分區狀態 $fdisk /dev/vdc #使用fdisk分區工具,對/dev/vdc硬盤進行分區 p 查詢分區狀態 q 不保存退出 n 新建分區 Select (default p): #回車,默認是主分區 Partition number (1-4, default 1): #第一個分區默認序號是1 First sector : #起始扇區,直接回車 Last sector +500M #創建500M分區 w #保存退出 $partprobe /dev/vdb 或者 partx -a /dev/vdb #刷新硬盤分區表: $mkfs.xfs /dev/vdc1 #使用xfs文件系統為vdc1這個分區格式化 $mount /dev/vdc1 /mnt #將新分區掛載到/mnt目錄 $df -h #h查看掛載信息 $umount /dev/vdc1 #卸載分區
下面為我機器的存儲分布,可以看到只有一塊磁盤,有兩個分區,一個普通的分區,掛載到了根目錄,一個交換分區
┌──[root@liruilongs.github.io]-[~] └─$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 150G 0 part / └─sda2 8:2 0 10G 0 part [SWAP] ┌──[root@liruilongs.github.io]-[~] └─$
二、使用LVM的文件存儲
我們用上面標準分區在硬盤上創建了文件系統,為已有文件系統添加額外的空間多少是一種痛苦的體驗。我們只能在同一個物理硬盤的可用空間范圍內調整分區大小。
使用了Linux 邏輯卷管理器(logical volume manager,LVM)它可以讓你在無需重建整個文件系統的情況下,輕松地管理磁盤空間。
什么是LVM
通過LVM將?多個物理卷(物理分區)集中在一起可以形成一個卷組(volume group,VG)。邏輯卷管理系統將卷組視 為一個物理硬盤,但事實上卷組可能是由分布在多個物理硬盤上的多個物理分區組成的。卷組提供了一個創建邏輯分區的平臺,而這些邏輯分區則包含了文件系統。
整個結構中的最后一層是邏輯卷(logical volume,LV)。邏輯卷為Linux提供了創建文件系統的分區環境,作用類似于到目前為止我們一直在探討的Linux中的物理硬盤分區。Linux系統將邏輯卷視為物理分區。 可以使用任意一種標準Linux文件系統來格式化邏輯卷,然后再將它加入Linux虛擬目錄中的某個掛載點。
LVM邏輯卷管理機制的思想:化零(物理卷PV)為整(卷組VG)、動態擴容伸縮、按需(邏輯卷LV)分配。把零散的分區(PV物理設備(物理卷)),整編為大卷組(VG虛擬磁盤),然后根據需要獲取空間(虛擬分區LV)
物理卷、邏輯卷、卷組、快照卷之間的聯系
物理卷(Physical Volume,PV):就是指硬盤分區,也可以是整個硬盤或已創建的軟RAID,是LVM的基本存儲設備。
卷組(Volume Group,VG):是由一個或多個物理卷所組成的存儲池,在卷組上能創建一個或多個邏輯卷。
邏輯卷(Logical Volume,LV):類似于非LVM系統中的硬盤分區,它建立在卷組之上,是一個標準的塊設備,在邏輯卷之上可以建立文件系統。
快照 最初的Linux LVM 中允許你在邏輯卷在線的狀態下將其復制到另一個設備,傳統的備份方法在將文件復制到備份媒體上時通常要將文件鎖定。快照允許你在復制的同時,保證運行關鍵任務的。
可以做這樣一個設想來理解以上三者的關系:如果把PV比作地球的一個板塊,VG則是一個地球,因為地球是由多個板塊組成的,那么在地球上劃分一個區域并標記為亞洲,則亞洲就相當于一個LV。
相互聯系: 在創建卷組時一定要為邏輯卷進行快照預留出空間,而后快照訪問邏輯卷的另一個入口,只要把物理卷加到卷組之后,這個物理卷所提供的物理空間事先就被劃分好一個個塊,而這個塊在沒格式化之前叫做PE(Physical Extend)【物理盤區】,是邏輯存儲的一個小匣子,卷組的大小是由多個PE組成,而邏輯卷的大小是把卷組中的PE放到邏輯卷中,此時,PE不再叫做PE,而是叫做LE(Logical Extend)【邏輯盤區】,其實,邏輯卷中的LE也叫做PE,只是站在角度不同而已。
如果某個物理卷損壞后,存儲在邏輯卷中的LE也就會損壞,想讓數據不損壞,可以把物理卷中PE做成鏡像.鏡像是一個實時更新的邏輯卷的完整副本。當你創 建鏡像邏輯卷時,LVM會將原始邏輯卷同步到鏡像副本中
LVM管理工具
物理卷操作(不常用):pvscan、pvdisplay、pvcreate
卷組操作:vgscan(掃描)、vgdisplay(顯示)、vgcreate、vgremove、vgextend(擴容)
邏輯卷操作:lvscan、lvdisplay、lvcreate、lvremove、lvextend (PE:分配邏輯卷空間的時候,最小的單位,默認為4M)
創建邏輯卷之前先要創建卷組,然后從卷組中劃分空間給邏輯卷,語法:
$vgcreate [-s PE大小] 卷組名 分區.. ..
demo
$vgcreate /dev/myvg /dev/vdb2 #正常創建卷組,默認擴展單元是4M $vgdisplay /dev/myvg #可以在PE一欄中看到擴張單元的大小 $vgremove /dev/myvg #刪除卷組myvg $vgcreate -s 16MiB /dev/myvg /dev/vdb2 #創建擴展單元為16MiB的卷組(目前練習題要求),之后可以用vgdisplay查看PE的大小
vgextend 卷組名 分區.. ..
語法
$lvcreate -L 大小 -n 名稱 卷組名 $lvcreate -l PE個數 -n 名稱 卷組名
demo
$lvcreate -n mylv -L 800M /dev/myvg #正常創建 $lvcreate -n mylv -l 50 /dev/myvg #按照擴展單元的數量創建之后可以用vgs查看 $vgs #查看邏輯
$lvextend -L 300M /dev/test/vo #將名字叫vo的邏輯卷擴容到300M $blkid /dev/test/vo #查看vo邏輯卷的文件系統 $lsblk #再查看該邏輯卷的掛載點 $xfs_growfs /vo #刷新大小,如果是xfs的文件系統 $resize2fs /vo #刷新大小,如果是ext的文件系統
/dev/卷組名/邏輯卷名 或者 /dev/mapper/卷組名-邏輯卷名
$vgscan Reading all physical volumes. This may take a while... Found volume group "myvg" using metadata type lvm2 Found volume group "test" using metadata type lvm2 Found volume group "rhel" using metadata type lvm2 $pvscan PV /dev/vdb2 VG myvg lvm2 [1008.00 MiB / 208.00 MiB free] PV /dev/vdb1 VG test lvm2 [<2.00 GiB / <1.67 GiB free] PV /dev/vda2 VG rhel lvm2 [<29.00 GiB / 0 free] Total: 3 [<31.98 GiB] / in use: 3 [<31.98 GiB] / in no VG: 0 [0 ] $lvscan ACTIVE '/dev/myvg/mylv' [800.00 MiB] inherit ACTIVE '/dev/test/vo' [336.00 MiB] inherit ACTIVE '/dev/rhel/swap' [<2.17 GiB] inherit ACTIVE '/dev/rhel/root' [<26.83 GiB] inherit $lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 30G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 29G 0 part ├─rhel-root 253:0 0 26.8G 0 lvm / └─rhel-swap 253:1 0 2.2G 0 lvm [SWAP] vdb 252:16 0 10G 0 disk ├─vdb1 252:17 0 2G 0 part │ └─test-vo 253:2 0 336M 0 lvm /vo └─vdb2 252:18 0 1G 0 part └─myvg-mylv 253:3 0 800M 0 lvm vdc 252:32 0 10G 0 disk └─vdc1 252:33 0 500M 0 part /mnt $
三、VDO卷
什么是VDO卷
虛擬數據優化器,可以對數據進行重刪過濾:
VDO(Virtual Data Optimize)是RHEL8/Centos8上新推出的一個存儲相關技術(最早在7.5測試版中開始測試),是Redhat收購的Permabit公司的技術。
VDO的主要作用是節省磁盤空間,比如讓1T的磁盤能裝下1.5T的數據,從而降低數據中心的成本。
那vdo是如何實現:關鍵原理主要是重刪和壓縮,重刪就是硬盤里拷貝來相同的數據,以前要占多份空間,現在只需要1份空間就可以了。類似我們在百度網盤中上傳一個大型軟件安裝包,能實現秒傳,其實是之前就有,所以無需再傳一遍,也無需再占百度一份空間。另一方面是數據壓縮,類似于壓縮軟件的算法,也可以更加節省磁盤空間。
VDO是一個內核模塊,目的是通過重刪減少磁盤的空間占用,以及減少復制帶寬,VDO是基于塊設備層之上的,也就是在原設備基礎上映射出mapper虛擬設備,然后直接使用即可,功能的實現主要基于以下技術:
零區塊的排除 :在初始化階段,整塊為0的會被元數據記錄下來,這個可以用水杯里面的水和沙子混合的例子來解釋,使用濾紙(零塊排除),把沙子(非零空間)給過濾出來,然后就是下一個階段的處理。
重復數據刪除 :在第二階段,對于輸入的數據會判斷是不是冗余數據(在寫入之前就判斷),這個部分的數據通過UDS內核模塊來判斷(Universal Deduplication Service),被判斷為重復數據的部分不會被寫入,然后對元數據進行更新,直接指向原始已經存儲的數據塊即可。 壓縮:一旦消零和重刪完成,LZ4壓縮會對每個單獨的數據塊進行處理,然后壓縮好的數據塊會以固定大小4KB的數據塊存儲在介質上,由于一個物理塊可以包含很多的壓縮塊,這個也可以加速讀取的性能。
vdo基本操作:
vdo ?create ?--name=VDO卷名稱 --device=設備路徑 --vdoLogicalSize=邏輯大小
vdo ?list
vdo ?status ?-n VDO卷名稱
vdostats ?[--human-readable] ?[/dev/mapper/VDO卷名稱]
vdo ?remove ?-n VDO卷名稱
創建VDO卷
$yum -y install vdo #裝包 $systemctl restart vdo #啟動服務,并設置開機自啟 # 找到vdc磁盤(此盤之前不能有配置) $man vdo #搜索 /example ,在例子中查找相關配置命令 $vdo create --name=vdo0 --device=/dev/sdb1 --vdoLogicalSize=10T #name是vdo卷的名稱,device是使用哪個物理磁盤,最后是定義虛擬磁盤大小 $mkfs.xfs -K /dev/mapper/myvdo #格式化 `-K可以加快速度` #設置/etc/fstab文件,并且使用mount -a檢測 /dev/mapper/myvdo /vblock xfs _netdev 0 0 # `_netdev的作用是等待網絡相關程序啟動后再執行掛載任務,通常網絡啟動之后vdo服務也就起來了,就可以掛載了`
四、交換分區
什么是交換分區
相當于win的虛擬內存,在物理內存不足時借用硬盤空間,硬盤中預先劃分一定的空間,然后將把內存中暫時不常用的數據臨時存放到硬盤中,以便騰出物理內存空間讓更活躍的程序服務來使用的技術,其設計目的是為了解決真實物理內存不足的問題。
但由于交換分區畢竟是通過硬盤設備讀寫數據的, 速度肯定要比物理內存慢,所以只有當真實的物理內存耗盡后才會調用交換分區的資源.
交換分區:虛擬內存,一般設置成物理內存的1~2倍,<16G
格式化交換分區
$swapon -s #查詢交換分區狀態,通常有可能會存在個默認的交換分區,不能刪除 # 先用fdisk /dev/vdb 再創建一個512M的分區比如創建了vdb3 $mkswap /dev/vdb3 #格式化交換分區 $vim /etc/fstab ##修改開機掛載磁盤的文件 /dev/vdb3 swap swap defaults 0 0 $swapon -a #測試上述文件是否修改正確 $swapon -s #再次查看會多出swap分區
啟用/停止/查看交換分區使用情況:
$swapon 設備路徑 $swapoff 設備路徑 $swapon -s $free
五、實戰
調整邏輯卷大小:
將邏輯卷 vo 及其文件系統大小調整到 300MiB。確保文件系統內容保持不變。
$lvscan #找出要擴展的邏輯卷 $lvextend -L 300MiB /dev/test/vo #擴展邏輯卷 $blkid /dev/test/vo #檢查文件系統格式 $xfs_growfs 邏輯卷對應的掛載點 #適用于 XFS 文件系統 或者 $resize2fs 邏輯卷對應的掛載點 #適用于 EXT2/3/4 文件系統
添加交換分區:
$fdisk /dev/vdb #修改磁盤 vdb .. .. Command (m for help): n #添加新分區 Partition number (2-128, default 2): #直接回車(默認) First sector (4194304-20971486, default 4194304): #直接回車(默認) Last sector, *sectors or +size{K,M,G,T,P} (4194304-20971486,default 20971486): +512M Created a new partition 2 of type 'Linux filesystem' and of size 512 MiB. Command (m for help): w #保存分區表,并退出 The partition table has been altered. Syncing disks. $partprobe /dev/vdb #刷新分區表 $mkswap /dev/vdb2 #格式化自建分區 vdb2 $vim /etc/fstab /dev/vdb2 swap swap defaults 0 0 $swapon -a #啟用 fstab 中的交換設備 $swapon -s #查看交換分區信息
創建卷組邏輯卷:
根據以下要求,創建新的邏輯卷:
邏輯卷的名字為 mylv,屬于 myvg 卷組,大小為 50 個擴展單元
卷組 myvg 中的邏輯卷的擴展塊大小應當為 16MiB
使用 vfat 文件系統將邏輯卷 mylv 格式化
此邏輯卷應當在系統啟動時自動掛載到/mnt/mydata 目錄下
$fdisk /dev/vdb $修改磁盤 vdb .. .. Command (m for help): n #添加新分區 Partition number (3-128, default 3): #直接回車(默認) First sector (5242880-20971486, default 5242880): #直接回車(默認) Last sector, *sectors or +size{K,M,G,T,P} (5242880-20971486,default 20971486): +1000M Created a new partition 3 of type 'Linux filesystem' and of size 1000 MiB. Command (m for help): w #保存分區表,并退出 The partition table has been altered. Syncing disks. $partprobe /dev/vdb #刷新分區表 $vgcreate -s 16MiB myvg /dev/vdb3 #建卷組(使用分區 vdb3) $lvcreate -l 50 -n mylv myvg #建邏輯卷 $mkfs.vfat /dev/myvg/mylv #格式化 $mkdir /mnt/mydata #創建掛載點目錄 $vim /etc/fstab #設置開機掛載 /dev/myvg/mylv /mnt/mydata vfat defaults 0 0 $mount -a #啟用&測試開機掛載
使用vdo創建 VDO 卷
根據如下要求,創建新的 VDO 卷:
使用未分區的磁盤(/dev/vdc)
此 VDO 卷的名稱為 myvdo
此 VDO 卷的邏輯大小為 50G
此 VDO 卷使用 xfs 文件系統格式化
此 VDO 卷在系統啟動時自動掛載到/vblock 目錄下
$yum install vdo #裝包 $systemctl enable --now vdo #起服務 $vdo create --name=myvdo --device=/dev/vdc --vdoLogicalSize=50G #新建 VDO 卷 $mkfs.xfs -K /dev/mapper/myvdo #格式化 #或者 mkfs.ext4 -E nodiscard ... $mkdir /vblock #創建掛載點目錄 $vim /etc/fstab /dev/mapper/myvdo /vblock xfs _netdev 0 0 $mount -a #啟用&測試開機掛載
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。