1. 程式人生 > >linux筆記5.0

linux筆記5.0

筆記

命令
hexdump 查看二進制文件
-n 只格式化輸出文件的前多少字節
-C 輸出規範的十六進制和ASCII碼
lsblk 查看塊設備
fdisk 創建MBR分區
gdisk 創建GPT分區
parted 高級分區操作
partprobe 同步內存和硬盤分區表信息(centos7)
partx 同步分區信息(centos6)
mkfs 創建文件系統
mke2fs 針對ext系列創建文件系統
bkid 查看塊設備標簽信息(UUID,LABEL)
e2label 管理ext文件系統標簽
uuidgen 生成uuid
findfs 查找分區
tune2fs 設置ext文件系統參數
dumpe2fs 查看ext文件系統塊分組信息
fsck 檢測和修復文件系統
e2fsck 針對ext文件系統檢測和修復
xfs_repair 針對xfs文件系統檢測和修復
mount 掛載
umount 卸載
mkswap 創建swap分區
df 查看文件系統空間占用等信息
du 查看使用空間(文件和目錄磁盤的大小)
dd 復制和轉變文件
mdadm 管理RAID
pvs 顯示物理卷信息
pvdisplay 更詳細的物理卷信息
pvcreate 創建pv
pvmove 移動物理卷(可自動選擇同卷組下其他成員)
pvremove 刪除物理卷
vgs 顯示卷組信息
vgdisplay
vgcreate
vgextend 擴展卷組
vgreduce 縮減卷組
vgremove
vgexport 導出卷組
vgimport 導入卷組
lvs 顯示邏輯卷信息
lvdisplay
lvcreate
lvextend
lvreduce
lvremove

磁盤存儲和文件管理
一切皆文件:
函數類型文件:open()、read()、write()、close()(對文件進行操作所調用的系統函數)
設備類型文件:(/dev/)
塊設備(b):block,存取單位“塊”,(1k,2k,4k)典型:磁盤
字符設備(c):char,存取單位“字符”,典型:/dev/zore,、/dev/null
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:主設備號(表示設備類型)、次設備號(同類型下設備編號)

創建設備文件:mkmod /PATH/NAME b|c 主號 次號

硬盤接口類型
並行:
IDE:133MB/s(少見)
SCSI:640MB/s(少見)
串口:
SATA:6Gbps,約750MB/s(常用於家用pc)
SAS:6Gbps(多用於SERVER)
USB:480MB/s
rpm:rotations per minute(每分鐘轉數)

硬盤類型:
機械硬盤(HDD):Hard Disk Drive,傳統普通硬盤。
固態硬盤(SSD):Solid State Drive,固態電子存儲芯片列陣制成的硬盤
區別:
1、性能:SSD在防震抗摔、傳輸速率、功耗、重量、噪音上明顯優於HDD,SSD傳輸速率性能是

HDD的兩倍
2、價格:HDD在價格、容量、使用壽命上優於SSD
現狀:
目前SSD不能完全取代HDD(硬盤有價,數據無價:HDD在數據的可恢復性上占據絕對優勢)

設備文件命名
磁盤設備的設備文件命名:/dev/sd
不同磁盤標識:a-z
同一設備上的不同分區:1,2,...(主分區和擴展分區1-4,從5往後表示邏輯分區)

硬盤存儲術語
head:磁頭
track:磁道
sector:扇區(一個扇區512bytes)
cylinder:柱面
CHS(磁盤三維):
采用24bit位尋址,前10bit表示cylinder,中間8bit表示head,最後6bit表示sector
最大尋址空間:8G=[(512631024*255)byte/1024/1024]G
CHS最多只能表示8G,超過就得使用LBA方式
LBA(邏輯塊尋址):
利用ZBR(Zoned Bit Recording,區位記錄磁盤扇區結構)來描述硬盤結構
每個磁道中存放的扇區數不同,外圈多,內圈少
LBA(logical block addressing)采用48bit位尋址
最大尋址空間128PB

硬盤的使用三大步:
1、分區
2、創建文件系統:格式化
3、掛載:分配目錄名
註意:不對硬盤進行上述操作直接使用,可以存數據,但存的全是二進制數

分區
目的:
優化I/O性能
實現磁盤空間的配額限制
提高修復速度
隔離系統和程序
安裝多個OS
采用不同文件系統
分區方式:
MBR、GPT
兩種方式配合相應硬件程序:
早期主板內置BIOS配合MBR
較新主板內置UEFI配合GPT

MBR(Master Boot Record,主引導記錄):
使用32位表示扇區數,分區不超過2T
按柱面劃分(cylinder=51263255,約8MB),劃分的大小為8MB的整數倍,centos6開始按扇面

劃分
0磁道0扇區存放分區信息:
總大小:512bytes
boot loader(引導裝載):446bytes
分區表:64bytes(一個分區用16byte表示)
55AA(分區結束標識):2bytes
分區結構:
3個主分區+1個擴展分區(包含N個邏輯分區)
註意:擴展分區中分的邏輯分區的分區表信息並不存在主分區表中,而是存在邏輯分區自己的小空間中
備份分區表信息:
dd if=/dev/sda of=/data/mbr_bak bs=1 count=512(本地備份)
scp /data/mbr_bak ip地址:/data(將本地備份存入網絡服務器)
克隆分區表信息:
dd if=/dev/sda of=/dev/sdb bs=1 count=512(克隆sda硬盤分區表信息至sdb)
註意:
1、sdb>=sda
2、只能克隆主分區表

GPT
GUID(Globals Unique Identifiers,全局唯一標識符)partition table支持128個分區,使用

64位,支持8Z(512Byte/block)64Z(4096Byte/block)
使用UUID(Universally Unique Identifier,通用唯一標識符)表示磁盤和分區GPT分區表,自動備份在頭和尾兩份,並有CRC校驗位

管理分區
列出塊設備:
lsblk
創建分區:
fdisk:創建MBR分區
gdisk:創建GPT分區
parted:高級分區操作
partprobe:同步內存和硬盤分區表信息

parted命令
操作實時生效,小心使用
parted /dev/sda mklabel gpt|msdos 創建分區類型
mkpart primary 1 200(默認M) 創建主分區
rm 分區號 刪除分區
-l 列出分區信息

fdisk和gdisk命令
fdisk管理MBR分區,gdisk管理GPT分區(兩命令用法基本相同)
fdisk -l 查看分區信息
fdisk /dev/sda 管理分區
p:分區列表
t:更改分區類型
n:創建新分區(p(primary)主,e(extended)擴,l(logical)邏輯)
d:刪除分區
v:校驗分區
u:轉換單位
w:保存退出
q:不保存退出

同步分區表
fdisk -l 查看的是硬盤上的分區表信息
lsblk 查看的是內存中的分區表信息
cat /proc/partitions 查看內核中的分區表信息
修改分區表後硬盤和內存、內核中的分區表信息會不同,此時需要進行同步操作
partprobe(centos5|7)
partx -a /dev/sda 在sda增加分區時使用
partx -d --nr 分區號 /dev/sda 在sda刪除分區時使用

創建文件系統
何為文件系統:
操作系統用於明確存儲設備或分區上的文件的方法和數據結構,即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構成為文件管理系統,簡稱文件系統
功能:
負責為用戶建立文件,存入,讀出,修改,轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等
支持的文件系統:
/lib/modules/uname -r/kernel/fs文件夾下存放支持的文件系統

文件系統分類:
按操作系統分類:
linux:
ext(Extended file system,擴展文件系統)2,3,4(主流)、xfs(SGI)、btrfs(Oracle)、reiserfs、jfs(AIX)、swap
光盤:
iso9660
Windows:
FAT32(不支持4G以上文件),exFAT(u盤),NTFS
Unix:
FFS(fast),UFS(unix),JFS2
網絡文件系統:(跨網絡訪問,相當於共享文件夾)
NFS,CIFS
集群文件系統:(cluster,多個服務器可以同時訪問一個存儲設備)
GFS2,OCFS2(oracle)
分布式文件系統:
fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre
RAW:(無文件系統,追求高性能,但不便於管理)
未經處理或者未經格式化產生的文件系統

按時否支持journal(日誌)功能分類:
日誌作用:先從內存中讀對文件的操作,在將操作傳給文件。保證文件系統安全性,不會因掉電造成正在修改的文件損壞
日誌型文件系統:ext3,4、xfs,...
非日誌型:ext2、vfat

文件系統的組成部分:
內核中的模塊:ext4、xfs、vfat
用戶空間的管理工具:mkfs.ext4、mkfs.xfs、mkfs.vfat
linux的虛擬文件系統:VFS
查看當前支持的文件系統:cat /proc/filesystems

附:
buffer和cache的區別
cache緩存:針對讀緩存,將讀入的數據緩存,為下次訪問提供便利
buffer緩沖:針對寫緩沖,將寫好的數據緩沖,等系統空閑寫入文件

文件系統的特性
單節點:
xfs(支持超大容量)、ext4、btrfs
網絡/多節點:
gfs2(允許多個服務器同時訪問,集群環境使用)

創建文件系統
mkfs命令:
mkfs.ext4|xfs|... /dev/device(設備)
mkfs -t ext4|xfs|...
-L “LABEL(標簽,卷標)”:設置卷標

mke2fs命令(ext系列文件系統專用管理工具):
-t ext2,3,4
-b 1024|2048|4096:設置最小存儲單元大小
-L “LABEL”
-j:相當於-t ext3
-i #:為數據空間中每多少個字節創建一個inode,大小不應該小於block的數量的大小
-N #:指定分區中創建多少個inode
-l:一個inode記錄占用的磁盤空間大小,128--4096
-m #:為管理員預留空間占總空間百分比(默認5%)
-O 功能:啟用指定功能
-O ^功能:關閉指定功能

文件系統標簽
作用:
指向設備的另一種方法(與設備無關)
blkid命令:
查看塊設備屬性信息
-U uuid:根據指定uuid查找對應的設備
-L label:根據指定label查找對應的設備
e2label命令:
管理ext系列文件系統的LABEL
e2label DEVICE LABEL
findfs命令:
查找分區
findfs LABEL= :以卷標為條件查找
findfs UUID= :以uuid為條件查找

tune2fs命令:
重新設定ext系列文件系統可調整參數的值(只能針對ext的文件系統)
-l:查看指定文件系統超級塊信息(super block)
-L LABEL:修改卷標
-m #:預留給管理員的空間百分比
-j:將ext2升級為ext3
-O:文件系統屬性啟用或禁用(^)
-o:調整文件系統的默認掛載選項(^)
-U uuid:修改UUID號(配合uuidgen命令生成的uuid使用)
別輕易改uuid,因為寫配置文件時一般用uuid表示設備
dumpe2fs命令:
查看塊分組信息
-h:查看超級塊信息,不顯示分組信息

文件系統檢測和修復
常發生於死機或非正常關機後
掛載文件系統標記為“no clean”
註意:一定不要在掛載狀態下修復(df命令查看掛載狀態)
fsck命令:
fsck.FS_TYPE|-t FS_TYPE:指明文件系統(系統會自動檢測,一般不需人為指定)
-p:自動修復
-r:交互式修復
-y:自動回答yes
-f(force):強制修復(有時即使顯示clean,也可能會有損壞)
e2fsck:類似於fsck,fsck在修復是調用的就是e2fsck
當文件系統為xfs時,用xfsrepair修復
xfs文件系統管理命令:xfs
...(tab可查看所有選項)

掛載
何為掛載:(mount)
將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄作為其它文件訪問該文件系統的入口
掛載點(mount point):目錄
何為卸載:(umount)
解除此關聯關系的過程
卸載時可使用設備名,也可以使用掛載點
進程正在使用中的設備無法被卸載
註意:
1、掛載點下的原有文件在掛載完成後會被隱藏(與隱藏文件不同),所以掛載點目錄最好為空
2、兩個文件系統(設備)不能掛載到同一個目錄(掛載點)下,一個文件系統可以掛載到多個目錄下

掛載文件系統
mount命令:
先通過查看/etc/mtab/文件顯示當前已掛載的所有設備
指明掛載設備:
1、設備文件:例/dev/sd...
2、卷標:-L LABEL
3、UUID:-U uuid
4、偽文件系統名稱
指明掛載點:
dir:事先存在,建議使用空目錄
選項:
-t:指明掛載設備的文件系統(一般不加,系統可自動檢測)
-r(readonly):只讀掛載
-w(read and write):讀寫掛載
-n:不更新/etc/mtab,mount不可見(起到隱藏掛載作用)
-a:自動掛載所有支持自動掛載的設備(定義在/etc/fstab文件中,且掛載選項中有auto功能)
-B,--bind:綁定目錄到另一個目錄上
查看內核追蹤到的所有已掛載設備:cat /proc/mounts

-o(option):掛載文件系統的選項,多個選項用逗號份分隔
async:異步模式(寫文件先寫入buffer,空閑時在寫入用硬盤)
sync:同步模式,內存更改時,同時寫硬盤
atime/noatime:目錄和文件的訪問時間戳(默認noatime)
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載,即是否支持-a選項
exec/noexec:是否支持在文件系統上運行應用程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:是否支持suid和sgid權限
remount:重新掛載(進程正在使用時也可以重新掛載)
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載設備,對/etc/fstab的使用
acl:啟用此文件系統上的acl功能
loop:使用loop設備(用於掛載使用文件當設備的文件系統)
centos6:默認只有8個loop設備,超過限制需自己建loop設備(mknod)還需修改權限,批量增

加loop設備:在/boot/grub/grub.conf文件中的kernel最後添加max_loop=指定值
centos7:無限制
用losetup命令創建文件與loop設備的關聯
defaults(默認):相當於rw,suid,dev,exec,auto,nouser,async

卸載
進程正在使用中的設備無法被卸載
先查看掛載情況:
findmnt mount_point|device
再查看正在訪問指定文件系統的進程:
lsof mount_point
fuser -v mount_point
終止所有正在訪問指定文件系統的進程:(慎重使用)
fuser -km mount_point
最後卸載:
umount device|mount_point

文件掛載的配置文件
作用:
mount命令掛載的文件系統在系統重啟後無法保存
想永久保存掛載配置需寫進/etc/fstab文件中
使用mount -a命令掛載/etc/fstab中的所有文件系統,當文件中添加新配置用該命令激活,當對文件中已有配置修改時用mount -o rmount命令實激活
定義:
/etc/fstab每行定義一個要掛載的文件系統
六大項:
1、設備標識:UUID、LABEL、設備名
2、掛載點
3、文件系統類型
4、掛載選項:defaults、...、
5、備份頻率:0(不備份)、1(每天備份)、2(每隔一天備份),但是需要結合備份工具使用
6、自檢順序:0(不自檢)、1(首先自檢,一般只有rootfs采用)、2,...自檢順序依次執行
註意:
1、掛載以文件模擬的設備時,設備標識不能用UUID,要用文件路徑,掛載選項用loop
2、掛載光盤時,設備標識用設備名,文件系統類型為iso9660

實驗1:
遷移/home到新的分區
1、備份/home/*
2、創建一個新的磁盤分區(fdisk|gdisk)
3、創建文件系統(mkfs)
4、創建一個臨時掛載文件夾/mnt/home,並掛載(mkdir,mount)
5、防止用戶正在訪問修改/home下文件,切換至單用戶模式(init 1,此模式無法聯網)
該步驟不建議使用,可通知用戶遷移時間,確保遷移時/home無用戶-訪問
6、將/home下文件遷移至/mnt/home(cp -av)
7、檢查遷移結果(ls /home /mnt/home -l)
8、刪除/home下文件,釋放空間(rm -rf /home/*
9、將新分區寫入/etc/fstab(vim,例:UID=XXX /home ext4 default 0 0)
10、卸載臨時掛載點並刪除(umount,rm)
11、若切換至單用戶模式,在遷移完要將模式切回(init 5)

交換分區和文件
作用:
系統內存不足時,拿硬盤來模擬內存(偶爾使用,若經常使用說明內存需要升級了)
硬盤需求:高性能硬盤,同一塊硬盤外道好於內道
free命令:查看系統內存和swap
創建swap分區
用物理分區創建:
1、創建分區
2、mkswap創建文件系統
3、在/etc/fsabe文件中添加條目
UUID swap swap default,[pri=value(值)](設置優先級值,越大優先級越高) 0 0
4、swapon -a激活交換空間
用文件創建:
1、創建文件(dd if=/dev/zore of=/swapfile bs=1024M count=2)
2、mkswap /swapfile
3、vim /etc/fstab
/swapfile swap swap default 0 0
4、swapon -a
註意:
物理分區創建的swap分區性能優於文件創建的swap分區
swap命令選項:
-a:激活所有交換分區
-p(priority):指定優先級
-s:查看所有激活的swap
swapoff:禁用swap分區

移動介質
訪問前,一定要掛載
摘除前,一定要卸載
掛載點通常在/media或/mnt下
光盤:
圖形環境下自動啟動掛載,否則就必須被手動掛載
mount /dev/cdrom /mnt
eject命令卸載或彈出光盤
-t:彈入光盤
制作ISO鏡像文件:
cp /dev/cdrom /PATH/centos#.iso
dd if=/dev/cdrom of=/PATH/centos#.iso
打包文件夾制作iso文件:
mkisofs -r -o /PATH/XXX.iso /PATH
mkdvdios腳本,用法:mkdvdiso.sh source(源文件,可多個) /PATH/DVDiso
刻錄光盤:
wodim -v -eject centos.iso
USB:
查看USB設備是否識別:
lsusb
被內核檢測為SCSI設備(/dev/sd...)
圖形環境下自動掛載,否則必須手動掛載
mount /dev/sd... /mnt
註意:往u盤裏拷文件時,因為系統默認async模式,所以顯示拷完可能數據還在buffer中,多用幾次sync命令來同步數據進u盤,防止文件拷失敗

常用工具
df:
查看文件系統空間占用等信息
-H:以1000為單位
-T:顯示文件系統類型
-h:以人類易讀的單位顯示
-i:顯示節點號
-P:以Posix兼容格式輸出(當有過長文件名時,自動將格式對齊)

du:
查看目錄空間占用信息
-h:以人類易讀的單位顯示K,M,G(默認單位為K)
-s:目錄總大小
--max-depth=#:指定最大深度#

dd:
復制和轉變文件
用法:dd if= of= bs= count= skip= seek= conv=
if= of= bs= count= 復制文件並對原文件的內容進行轉換和格式化處理
if 從文件輸入(讀)(/dev/zore/全零的字符設備)
of 輸出(寫)到文件
bs 指定塊大小
count 指定寫的塊數
skip 跳過輸入文件的前多少個塊
seek 跳過輸出文件的前多少個塊
conv 用指定參數轉換文件
轉換參數:
ascii:轉換EBCDIC為ASCII
ebcdic:轉換ASCII為EBCDIC
lcase:大寫字符轉換為小寫字符
ucase:小寫字符轉換為大寫字符
nocreat:不創建輸出文件
noerror:出錯不停止
notrunc:不截斷輸出文件
sync:輸入塊不足用空字符補齊
fdatasync:不寫入buffer,直接寫入磁盤

RAID
何為RAID:
Redundant Arrays of inexpensive Disks(廉價的磁盤冗余陣列)
多個磁盤合成一個“陣列”來提供更好的性能、冗余,或者兩者都提供
作用:
提高IO能力:磁盤並行讀寫
提高耐用性:磁盤冗余來實現
實現方式:
硬RAID:
外接式:通過擴展卡提供適配能力
內接式:主板集成RAID控制器
安裝OS前在BIOS裏配置
軟RAID:
軟件RAID:通過OS實現
級別:多塊磁盤組織在一起的工作的不同方式
RAID-0:條帶(strip)化存儲,讀寫性能提升,無容錯能力(最少兩塊硬盤)(磁盤利用率100%)
RAID-1:鏡像(mirror)化存儲,讀能力提升,寫能力下降,有容錯能力(2)(50%)
RAID-3:0基礎上,多塊數據盤異或運算,值存於專用校驗盤(3)(n-1/n)
RAID-5:3基礎上,校驗值也條帶化存儲,讀寫性能提升,有容錯能力,允許最多1塊磁盤損壞(3)(n-1/n)
RAID-6:5基礎上,增加一次校驗,讀寫能力提升,有容錯能力,允許最多2塊磁盤損壞(4)(n-2/n)
RAID-10:先做兩兩一組1,再將多組1做0,讀寫提升,有容錯性,每組鏡像最多只能壞一塊(4)(當6塊硬盤時,一塊損壞後,系統失敗率1/5)(性能最好!!!)
RAID-01:先做0,再將兩組0組合成1,讀寫提升,有容錯性,只能有一組鏡像損壞(4)(當6塊硬盤時,一塊損壞後,系統失敗率3/5)
RAID-50:先做5在做0,性能好,成本高
JBOD(Just a Bunch Of Disks):只是把多塊磁盤空間合並成一個大的連續空間使用,性能沒有提高
RAID-7:自帶操作系統和管理工具,可獨立運行,理論上性能最高的RAID模式
常用級別:
0,1,5,10,50,JBOD

軟RAID(生產中不常見,基本都是用硬RAID)
mdadm命令:
為軟RAID提供管理界面
為空余磁盤添加冗余
結合內核中的md(multi(復選) devices)
RAID設備可命名為/dev/md{0,1,...}
命令用法:
模式:
-C:創建
-A:裝配
-F:監控
管理模式:
-f:標記指定磁盤為損壞
-a:添加磁盤
-r:移除磁盤
創建RAID:
mdadm -C /dev/md# -a yes -l# -c # -n # -x # /dev/DEVICE...
-C:創建模式
-a:自動創建目標RAID設備的設備文件
-l:指明要創建的級別
-c(chunk):指明塊大小,單位k(默認512)
-n:指明創建該RAID的設備數
-x:指明備用設備數
-D:顯示raid的詳細信息
cat /proc/mdstat:觀察md狀態
-G:擴展RAID,增加新成員(配合-a使用),增加後還需同步成員文件系統:
resize2fs /dev/md#(ext系列)
xfs_growfs /PATH/mount_point(xfs系列)

實驗2
創建raid-5:
1、創建分區,大小一致(硬盤直接使用,分區要用t改類型為fd)
2、mdadm命令創建(mdadm -C /dev/md0 -a yes -l5 -c 32 -n 3 -x 1 /dev/sd...)
3、mkfs.ext4 /dev/md0
4、vim /etc/fstab
5、mdadm -Ds /dev/md0 > /etc/mdadm.conf(生成配置文件)
測試:
mdadm -S /dev/md0停止設備(先umount)
mdadm -As /dev/md0激活設備
mdadm -R /dev/md0強制啟動
模擬損壞:
mdadm /dev/md0 -f /dev/sd#標記損壞
mdadm /dev/md0 -r /dev/sd#刪除
mdadm /dev/md0 -a /dev/sd#添加

創建raid-10
假設a,b,c,d四塊硬盤
方法1:
mdadm -C /dev/md0 -a yes -l1 -n2 /dev/sd{a,b}
mdadm -C /dev/md1 -a yes -l1 -n2 /dev/sd{c,d}
mdadm -C /dev/md2 -a yes -l0 -n2 /dev/md{0,1}
方法2:
mdadm -C /dev/md0 -a yes -l10 -n4 /dev/sd{a,b,c,d}

刪除raid
1、取消掛載(保證無人訪問情況下)
2、刪除/etc/fstab中對應配置
3、rm -f /etc/mdadm.conf
4、查看組成該RAID的分區(-D)
5、停止設備(-S)
6、刪除組成該RAID的分區
7、刪除磁盤上RAID殘留信息(mdadm --zero-supperblock /dev/分區)

LVM
何為LVM:
Logical Volume Manager,邏輯卷管理器
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
行為:
允許多個物理設備間重新組織文件系統
將設備指定為物理卷(物理卷是用固定大小的物理區域(Physical Extend,PE)來定義的)
用一個或多個物理卷來創建一個卷組
在物理卷上創建邏輯卷(是由PE組成)
可在邏輯卷上創建文件系統
優勢:
方便擴展空間
原理:
1、pvcreate實現:block devices --> physical volumes(普通硬盤變成物理卷)
2、vgcreate實現:physical volumes --> volume Group(將物理卷組合成一個卷組)
3、lvcreate實現:volume Group --> logical volumes(將卷組劃分成多個邏輯分區)
實質:
創建出的邏輯卷其實是指向/dev/dm-#的軟連接
dm:device mapper(設備映射)
LVM更改文件系統的容量:
通過交換PE來進行管理,將LV內的PE轉移到其他設備中以降低LV容量,將其他設備中PE加到V中

以加大容量(通過對PE的操作實現擴容或縮減)

管理工具
pv工具
pvs:顯示物理卷信息
pvdisplay:更詳細的物理卷信息
pvcreate:創建pv
pvmove:移動物理卷(可自動選擇同卷組下其他成員)
pvremove:刪除物理卷

vg工具
vgs:顯示卷組信息
vgdisplay
vgcreate
vgextend:擴展卷組
vgreduce:縮減卷組
vgremove(先移走卷組中pv在刪除vg)
vgexport:導出卷組
vgimport:導入卷組

lv工具
lvs:顯示邏輯卷信息
lvdisplay
lvcreate
-n:指定邏輯卷名
-l:指定大小(塊數)後跟#%是指定剩余塊數的百分比塊數
-L:指定大小(容量)
lvextend(擴展後用resize2fs命令同步文件系統或直接加-r選項同步)
指定大小#(擴展到)|+#(擴展)
lvreduce:縮減邏輯卷大小
lvremove

實驗3:
LVM管理
1、創建:
創建物理卷:pvcreate 設備...(可同時創建多個)
創建卷組:vgcreate -s #(指定PE大小) 卷組名 物理卷設備...
創建邏輯卷:lvcreate -n lv0(指定邏輯卷名) -l #(%FREE)(指定PE塊數) 卷組名
創建文件系統:mkfs.ext4 /dev/卷組/邏輯卷
掛載:mount
2、擴展:(支持磁盤在掛載情況下直接擴展)
將新硬盤創建成物理卷
加入卷組:vgextend 需擴展卷組 新物理卷
擴展邏輯卷:lvextend -r(同步文件系統,針對ext文件系統) -L #(加到)|+#(加)(指定PE大小) 需擴展邏輯卷
3、縮減:
縮減邏輯卷:
卸載:umount
檢查文件完成性:fsck -f或e2fsck -f
縮減文件系統:resize2fs(重新設置文件系統大小)
縮減邏輯卷:lvreduce
掛載:mount
縮減卷組:
搬家:pvmove
從卷組中移除:vgreduce
刪除移除pv:pvremove
4、跨主機遷移卷組
查看pv所在硬盤:pvdisplay
若vg中pv分布在不同硬盤,需先將pv移動到一個硬盤上:pvmove
刪除空pv(之前移動的pv):vgreduce
遷移前查看卷組名和邏輯卷名是否與新機器上卷組名、邏輯卷名沖突,若沖突則需事先改名:
vgrename、lvrename
卸載卷組上的邏輯卷:umount
禁用卷組:vgchange -an
導出卷組:vgexport
拆出硬盤裝至新機器上
識別新設備:echo ‘- - -’ > /sys/class/scsi_host/host2/scan
導入卷組:vgimport
啟用卷組:vgchange -ay
掛載:mount

邏輯卷快照
何為快照:
快照是特殊的邏輯卷
生成快照時會分配給它一定空間,但快照只在和原來的邏輯卷不同時才會消耗空間,即原邏輯卷數據被修改時會將舊數據復制到快照中,沒改改動過的數據不做快照;通常建立快照只需要原邏輯卷的15%-20%就夠了(快照不可能比原數據大),可以使用lvextend擴展快照大小
註意:
快照和邏輯卷必須在同一卷組中
快照無法代替備份功能,當邏輯卷所在硬盤損壞時,快照也會損壞
快照可用於實驗環境,恢復實驗前數據,或cp數據庫
創建快照:
lvcreate -n 快照名 -s(snapshot,指明創建的是快照) -L 大小 -p r(增加只讀屬性,避免對快照誤操作) /PATH/lv(指定對誰做快照)
恢復快照:
先卸載邏輯卷和快照
合並邏輯卷和快照:
lvconvert --merge 快照
註意:快照一旦合並,將被自動刪除
刪除快照:
先卸載快照
lvremove 快照
附:
ext和xfs快照差別:
ext文件系統創建快照時不加-p r選項會導致無法合並邏輯卷和快照,xfs文件系統則無影響
xfs文件系統掛載快照因快照和對應邏輯卷uuid相同導致掛載失敗,需加-o nouuid選項,ext文件系統則不需要

linux筆記5.0