第11章,磁盤存儲和文件系統學習筆記
更多內容請點擊:
Linux學習從入門到打死也不放棄,完全筆記整理(持續更新,求收藏,求點贊~~~~)
http://blog.51cto.com/13683480/2095439
筆記整理開始時間:2018年4月24日11:25:33
第11章,磁盤存儲和文件系統
本章內容:
磁盤結構
分區類型
管理分區
管理文件系統
掛載設備
管理虛擬內存
RAID管理
LVM管理
LVM快照
設備文件:
磁盤設備的設備文件命名:/dev/dev-file
SCSI,SATA,SAS,IDE,USB: /dev/sd*
虛擬磁盤:/dev/vd
不同磁盤標識:a-z,aa,ab...
/dev/sda,/dev/sdb,...
同一設備上的不同分區:1,2.。。
/dev/sda1,/dev/sda5
設備號碼: major number 標識設備類型
minor number 標識同一類型下的不同設備
磁盤存儲術語:
head 磁頭
track 磁道
cylinder 柱面
sector 扇區
CHS:
采用24bit尋址
其中前10位表示cylinder,中間8位表示head,後面6位表示sector
最大尋址空間8GB
LBA:(Logical block addressing)
LBA是一個整數,通過轉換成CHS格式完成磁盤具體
LBA采用48位尋址
最大尋址空間128PB
使用分區空間步驟:
分區,創建文件系統,掛載
設備識別
設備分區
創建文件系統
標記文件系統
在/etc/fstab文件中創建條目
掛載新的文件系統
磁盤分區:
為什麽分區:
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
采用不同文件系統
分區:
兩種分區方式:MBR,GPT
MBR: Mater Boot Record, 1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
0磁道0扇區:512bytes
446bytes: boot loader
64bytes: 分區表
16bytes:標識一個分區
2bytes: 55 aa
4個主分區; 3主分區+1擴展分區(n個邏輯分區)
GPT: GUID(Globals Unique ldentifiers)partition table 支持128個分區
使用64位尋址,支持8Z(512byte/block)64Z(4096byte/block)
使用128位UUID (Universally Unique ldentifier)表示磁盤和分區GPT分區表
自動備份在頭和尾兩份,並有CRC校驗位
UEFI(統一擴展固件接口)硬件支持GPT,是操作系統啟動
管理分區:
列出塊設備: lsblk
創建分區使用:
fdisk 創建MBR分區
gdisk 創建GPT分區
parted 高級分區操作
partprode-重新設置內存中的內核分區表版本
parted 命令:
ps: parted的操作都是實時生效的,小心使用
用法:
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默認M)
parted /dev/sdb rm 1
parted -l 列出分區信息
fdisk
fdisk -l [-u] [dvice]
fdisk /dev/sdb 管理分區
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
u 轉換單位
w 保存並退出
q 不保存並退出
v 校驗分區
o 格式化為 msdos 新分區
g 格式化為 gpt 新分區
查看內核是否已經識別新的分區:
cat /proc/partitions
partx:
centos6通知內核重新讀取硬盤分區表
新增分區:
partx -a /dev/sd*
刪除分區:
partx -d --nr M-N /dev/sd*
centos5,7:使用 partprobe
partprobe [/dev/sd*]
文件系統:
文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在
存儲設備上組織文件的方法。操作系統中負責管理和存儲的文件信息的軟件結構
稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件
存儲並對存入的文件進行保護和檢索的系統。具體的說,它負責為用戶建立文件
存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密
等。
支持的文件系統:
/lib/modules/`uname-r`/kernel/fs
文件系統類型:
linux文件系統:ext2(Extended file system),ext3,ext4,xfs(SGI),btrfs(Oracle)
reiserfs,jfs(AIX),swap
光盤:iso9660
windows:FAT32 exfat ntfs
unix:ffs ufs jfs2
網絡文件系統:NFS CIFS
集群文件系統:GFS2,OCFS2
分布式文件系統:fastdfs,ceph,moosefs,mogilefs,glusterfs,lustre
RAW:未經處理或者未經格式化產生的文件系統
文件系統分類:
根據是否支持日誌‘journal’功能:
日誌型文件系統:ext3 ,ext4,xfs..
非日誌型文件系統:ext2,vfat(fat32)
文件系統的組成部分:
內核中的模塊:ext4,xfs,vfat
用戶空間的管理工具:mkfs.ext4,mkfs.xfs,mkfs.vfat
linux的虛擬文件系統:VFS
查看支持的文件系統
cat /proc/filesystems
創建文件系統:
mkfs命令:
mkfs.fs_type /dev/sd*
ext4
xfs
btrfs
vfat
mkfs -t fs_type /dev/sd*
-L 'LABEL':設定卷標
mke2fs: ext系列文件系統專用管理工具
-t {ext2|ext3|ext4}== mkfs.ext2,3,4
-b {1024|2048|4096}
-L 'LABLE'
-i # 為數據空間中每多少個字節創建一個inode,此大小不應該
小於block的大小
-N # 指定分區中創建多少個inode
-l 一個inode記錄占用的磁盤空間大小,
-m # 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE...: 啟用指定特性
-O ^FEATURE.. 關閉指定特性
文件系統標簽:
指向設備的另一種方法:
與設備無關
blkid:
blkid:塊設備屬性信息查看
blkid /dev/sda1
-U UUID 根據指定的uuid 來查找對應的設備
-L Label 根據指定的label來查找對應的設備
e2lable: 管理ext系列文件系統的label
e2lable device [lable]
findfs: 查找分區
findfs [options] LABEL =label 等於 blkid -L
findfs [options] UUID=uuid 等於 blkid -U
PS:
在centos7上,GPT分區,默認會多一個PARTUUID
創建文件系統之後才會有UUID
uuidgen 生成uuid
tune2fs:
重新設定ext系列文件系統可調整參數的值
-l 查看指定文件系統(分區)超級塊信息;super block
無法查看xfs系統
-L ‘LABEL' 修改卷標
-m # 修改預留給管理員的空間百分比
-j 將ext2升級為ext4 (加上journal功能)
-O 文件系統屬性啟用或禁用,-O ^has_journal
-o 調整文件系統的默認掛載選項, -o ^acl
-U UUID 修改UUID號
dumpe2fs:
塊分組管理,32768
-h 查看超級塊信息,不顯示分組信息
文件系統檢測和修復:
常發生於死機或者非正常關機之後
掛載為文件系統標記為“no clean”
註意:一定不要再掛載狀態下修復
fsck.fs_type
-p 自動修復錯誤
-r 交互式修復錯誤
fs_type一定要與分區上文件系統類型相同
e2fsck: ext系列文件專用的檢測修復工具
-y: 自動回答yes
-f 強制修復
掛載, nount
umount
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此
目錄作為其他文件訪問入口的行為
卸載: 解除此關聯關系的過程
把設備關聯掛載點: mount point
卸載時:可使用設備,也可以使用掛載點
掛載點下原有文件在掛載完成後會被臨時隱藏
掛載點目錄一般為空
mount命令:
掛載方法
mount device mount-point
mount: 通過查看/etc/mtab文件顯示當前已掛載的所有設備
mount [-fnrsvw] [-t vfstpe] [-o options] device dir
device;指明要掛載的設備;
1. 設備文件;例如/dev/sda5
2. 卷標; -L 'LABEL',
3. UUID, -U 'UUID'
4. 偽文件系統名稱: proc sysfs devtmpfs configfs
dir: 掛載點
事先存在,建議使用空目錄
進程正在使用中的設備無法被卸載
-t vsftype 指明要掛載的設備上的文件系統類型
-r readonly,只讀掛載
-w read and write 讀寫掛載
-n 不更新/etc/mtab, mount不可見 centos7無效
-a 自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,
且掛載選項中有auto功能)
-L ’LABEL‘ 以卷標為指定掛載設備
-U ’UUID‘ 以UUID指定要掛載的設備
-B --bind 綁定目錄到另一個目錄上
查看內核追蹤到的一掛載的所有設備
cat /proc/mounts
mount -o 掛載文件系統的選項,多個選項使用逗號分隔
async 異步模式
sync 同步模式
atime/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設備
defaults: 相當於rw,suid,dev,exec,auto,nouser,async
findmnt
findmnt mount-point | device 查看掛載情況
lsof
lsof mount-point 查看正在訪問指定文件系統的進程
fuser
fuser -v mount-point 查看正在訪問指定文件系統的進程
fuser -km mount-point 終止所有正在訪問指定的文件系統的進程
umount:取消掛載
umount device
umount mount-point
/etc/fstab
配置文件系統體系
被mount,fsck和其他程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統
每行定義一個要掛載的文件系統
1 要掛載的設備或偽文件系統
設備文件
LABEL:LABEL=""
UUID: UUID=
偽文件系統名稱:proc sysfs
2 掛載點
3 文件系統類型:
4 掛載選項:defaults,acl。。。
5 轉儲頻率:
0 不做備份
1 每天備份
2 每隔一天轉儲
6 自檢次序:
0 不自檢
1 首先自檢,一般只有rootfs才用1
處理交換文件和分區:
交換分區是系統RAM的補充
基本設置包括
創建交換分區或者文件
mkswap 使用mkswap 寫入特殊簽名
在/etc/fstab文件中添加適當的條目
使用swapon -a 激活交換空間
swapon device 啟用交換分區
-a 激活所有的交換分區
-s 查看已經使用的swap分區
-p priority: 指定優先級
/etc/fstab: pri=value
swapoff device 禁用交換分區
-a 禁用所有交換分區
swap的優先級:
可以指定swap分區0-32676的優先級,值越大優先級越高
如果用戶沒有指定,那麽核心會自動給swap指定一個優先級,這個優先級從
-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級
-1
先添加的swap 的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶
指定的優先級(是正數)永遠高於核心缺省指定的優先級(是負數)
優化性能:分布存放,高性能磁盤存放
將文件當做swap使用:
dd if=/dev/zero of=p1 ps=1M count=2048 生成文件
mkswap p1 格式化
swapon p1 開啟交換分區
寫入/etc/fstab
swapon -a
文件掛載到目錄上:
mkfs.ext4 p1
mount -o loop p1 /dir centos6掛載時需要加-o loop 選項
centos7可以直接掛載
/data/p1 /mnt/app1 ext4 loop 0 0 fstab文件書寫格式
losetup -a 查看loop設備代表的源文件路徑
ls /dev/loop* 查看所有loop設備
centos6默認只有8個loop設備,centos7不限制
mknod /dev/loop8 b 7 8 centos6手動生成loop文件來掛載
losetup /dev/loop8 p2 loop8和文件做映射
mount /dev/loop8 /data/app3 此時掛載就不需要-o了
vim /boot/grub/grub.conf centos6配置文件,可修改最大loop數量
在kernel行尾添加 max_loop=100,重啟生效
掛載目錄到目錄
fstab書寫格式:
/root /mnt/root none bind 0 0
移動介質:
掛載意味著使外來的文件系統看起來如同是主目錄樹的一部分
訪問時,介質必須被掛載
摘除時,介質必須被卸載
按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)
掛載點通常在/media 或 /mnt 下
使用光盤:
在圖形環境下自動啟動掛載/run/media/user/label
否則就必須被手工掛載
mount /dev/cmrom /mnt/
eject 卸載或彈出磁盤
創建ISO文件
cp /dev/sr0 /root/centos6.iso
mkisofs -r -o file.iso /dir
此命令生成的iso文件,比如centos6光盤,可以做yum源,但是不能做引到盤
使用centos官方提供的mkdvdiso.sh 可以生成引到光盤
mkdvdiso.sh /dir centos6.iso
生成的iso文件需要掛載之後才可以查看
wodim -v -eject centos.iso
掛載usb介質
查看usb設備是否識別
lsusb
被內核探測為scsi設備
/dev/sda* /dev/sdb* 或類似的設備
在圖形環境中自動掛載
圖標在【計算機】窗口中創建
掛載在/run/media/user/label
手動掛載:
mount /dev/sd* /mnt/
常用工具:
df: 文件系統空間占用等信息的查看工具
df [option]..[file]..
-H 以1000為單位
-T 文件系統類型:
-h human-readable
-i inodes instead of blocks 查看inode編號使用情況
-P 以Posix兼容的格式輸出
設備名很長的情況下 1行顯示
du: 查看某目錄總體空間占用狀態
du [option]..[dir]..
-h human-readable
-s summary
--max-depth=# 最大深度
hexdump: 查看二進制文件
hexdump -C /dev/sda -n512
mknod: 生成塊設備文件
mknod /data/sdA b 8 1
mknod /data/zefofile c 1 5
cp -a /dev/sda /data -a 可以復制塊設備
dd: convert and copy a file
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=# size count=# number
ibs=size 一次讀size個byte
obs=size 一次寫入size個byte
cbs=size 一次轉化size個byte
skip=numbem 從開頭忽略num個ibs大小的塊
seek=num 從開頭忽略num個obs大小的塊
count=n 只拷貝n個記錄
conv= 用指定的參數轉換文件
ascii 轉換EBCDIC 為 ASCII
ebcdic 轉換ASCII為EBCDIC
lcace 把大寫字符轉換為小寫字符
ucace 把小寫字符轉換為大寫字符
nocreat 不創建輸出文件
noerror 出錯時不停止
notrunt 不截短輸出文件
sync 把每個輸入塊填充到ibs字節,不足部分用nul空字符補齊
示例:
備份MBR:
dd if=/dev/sda of=/data/mar.bak bs=1 count=512
破壞分區表,保留MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
有一個大與2K的二進制文件fileA。現在想從第64個字節位置開始讀取,需要讀
取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開
始的位置,替換128Bytes,
dd if=fielA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
dd if=/dev/sdx of=/dev/sdy
將本地/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx of=/path/file
將/dev/sdx全盤數據備份到指定路徑的file文件
dd if=/dev/sdx | gzip > /path/file.gz
備份/dev/sdx 全盤數據,並利用gzip壓縮,保存到指定路徑
恢復:
dd if=/path/file of=/dev/sdx
將備份文件恢復到指定盤
gzip -dc /path/file.gz | dd of=/dev/sdx
將壓縮的備份文件恢復到指定盤
拷貝內存資料到硬盤
dd if=/dev/mem of=/root/mem.bin bs=1024
將內存裏的數據拷貝到root目錄下的mem.bin文件
拷貝光盤數據:
銷毀磁盤數據:
dd if=/dev/urandom of=/dev/sda1
得到最恰當的block size
測試硬盤讀寫速度
修復硬盤:
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1,2)年放置不使用後,磁盤上會產生消磁點。
當磁頭讀到這些區域時會遇到困難,並可能導致I/O錯誤。當這種情況
影響到硬盤的第一個扇區時,可能導致硬盤報廢,上邊的命令有可能使
這些數據起死回生,且這個過程是安全高效的。
練習:
1、創建一個2G的文件系統,塊大小為2048byte,預留1%可用空間,文件系統
ext4,卷標為TEST,要求此分區開機後自動掛載至/test目錄,且默認有acl掛載
選項
echo -e "n\np\n2\n\n+2G\nw\n" |fdisk /dev/sdb
mkfs.ext4 -L TEST -m 1 -b 2048 /dev/sdb2
echo -e "LABEL=TEST /test\text4\tdefaults,acl\t 0\t 0" >> /etc/fstab
mkdir /test
mount -a
lsblk
└─sdb2 8:18 0 2G 0 part /text
2、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有磁盤設備
(2) 如磁盤數量為1,則顯示其空間使用信息
否則,則顯示最後一個磁盤上的空間使用信息
13 echo "device checking"
14 sleep 1
15 lsblk
16
17 num=$(lsblk |grep '^sd'|wc -l)
18 last=$(lsblk |grep '^sd'|tail -1|cut -d' ' -f1)
19
20 if [ $num = 1 ]; then
21 echo "There have just one device"
22 sleep 1
23 df -h | grep $last
24 exit 5
25 else
26 echo "There have $num device,the last one is: $last "
27 sleep 1
28 df -h |grep $last
29 exit 10
30 fi
31
3、將CentOS6的CentOS-6.8-x86_64-bin-DVD1.iso和CentOS-6.8-x86_64-bin-DVD2.iso兩個文件,合並成一個CentOS-6.8-x86_64-Everything.iso文件,
並將其配置為yum源
cp /mnt/cd1 /data/centos6
cp /mnt/cd2 /data/centos6
mkisofs -r -o CentOS-6.8-x86_64-bin-DVD2.iso /centos6
RAID:
什麽是RAID
RAID,Redundant Arrays of Inexpensive(Independent) Disks
1988年由加利福利亞大學伯克利分校
多個磁盤合成一個陣列來提供更好的性能,冗余,或者兩者都提供
提高IO能力:
磁盤並行讀寫
提高耐用性:
磁盤冗余來實現
級別:
多塊磁盤組織在一起的工作方式有所不同
RAID實現的方式:
外接式磁盤陣列: 通過擴展卡提供適配能力
內接式RAID: 主板集成RAID控制器
安裝OS前在bios裏配置
軟件RAID: 通過OS實現
RAID級別:
RAID-0 條帶卷,strip
讀、寫性能提升
可用空間N*min
無容錯能力
最少磁盤數2,2+
RAID-1 鏡像卷,mirror
讀性能提升,寫性能略有下降
可用空間1*min
有冗余能力
最少磁盤數2,2N
RAID-2,3
RAID-4 多塊數據盤異或運算值存於專用校驗盤
讀寫提升,有容錯
校驗盤壓力大容易壞
RAID-5
4的改進型,所有輪流充當校驗盤
讀,寫性能提升
可用空間(N-1)*min
有容錯能力:允許最多1塊磁盤損壞
最少磁盤數3,3+
RAID-6
有2塊校驗盤
讀寫性能提升
可用空間:(N-2)*min
有容錯能力:允許最多2塊磁盤損壞
最少磁盤數:4,4+
RAID-10
多塊磁盤先兩兩組成RAID-1,在組成RAID-0
讀、寫性能提升
可用空間:N*min/2
有容錯能力:每組鏡像最多只能壞一塊
最少磁盤數:4,4+
RAID-01
多塊磁盤先分成兩組做RAID-0,再組成RADI-1
讀,寫性能提升
可用空間:N*min/2
容錯,RAID1的兩邊不能同時壞硬盤
最少磁盤數4,4+
RAID-50
多塊磁盤先實現RAID5,再組合成RAID-0
比RAID-10讀寫提升大,每組raid5裏 最多允許壞一塊硬盤
JBOD:
just a Bunch of disks
功能:將多塊磁盤的空間合並一個大的連續空間使用
可用空間 sum
不能容錯
RAID-7
可以理解為一個獨立存儲計算機,自身帶有操作系統和管理工具,
可以獨立運行,理論上性能最高的RAID模式
常用級別:
RAID-0,RAID-1,RAID-5,RAID-10,RAID-50,JBOD
軟RAID:
mdadm: 為軟RAID提供管理界面
為空余磁盤添加冗余
結合內核中的md(multi devices)
RAID設備可命令為/dev/md0,/dev/md1...
mdadm:
語法格式:
mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR,0,1,4,5,6,10
mode 模式:
創建 -C
裝配 -A
監控 -F
管理 -f -r -a
<raiddevice>: rainname /dev/md#
<component-devices> : 任意塊設備,磁盤,分區等
-C 創建模式
-n# 使用#個塊設備來創建此RAID
-l# 指明要創建的RAID的級別
-a{yes|no} 自動創建目標RAID設備的設備文件
-c chunk-size 指明塊大小,單位K
-x 指明空閑盤的個數
-D 顯示raid的詳細信息
mdadm -D /dev/md*
管理模式:
-f 標記指定磁盤為損壞
-a 添加磁盤
-r 移除磁盤
觀察md的狀態:
cat /proc/mdstat
使用mdadm創建並定義RAID設備
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb{1,2,3,5}
用文件系統對RAID設備進行格式化
mkfs.ext4 /dev/md0
測試RAID設備
mdadm -D|--detail /dev/md0
增加新的成員
mdadm -G /dev/md0 -a /dev/sdb1
模擬磁盤故障
mdadm /dev/md0 -f /dev/sdb1
移除磁盤
mdadm /dev/md0 -r /dev/sdb1
軟RAID管理
mdadm -D -s >> /etc/mdadm.conf
生成配置文件
mdadm -S /dev/md0
停止設備
mdadm -A -s /dev/md0
激活設備,如果沒有生成配置文件,停止之後會無法激活
mdadm -R /dev/md0
強制啟動
mdadm --zero-superblock /dev/sdb1
刪除磁盤的raid信息
PS:
RAID-0 不支持空閑盤
raid5,格式化raid,或者空閑盤頂替之後,會有一段時間的 clean, degraded, recovering 時間,
有一個盤顯示 spare rebuilding 的狀態
使用-n4 -a 添加磁盤 會添加成raid盤,無法添加成空閑盤
練習:?
1:創建一個可用空間為1G的RAID1設備,文件系統為ext4,有一個空閑盤,
開機可自動掛載至/backup目錄
? fdisk 分出3個1G分區/dev/sdc{1,2,3} 類型fd
mdadm -C /dev/md0 -a yes -l1 -n2 -x1 /dev/sdc{1,2,3}
mkfs.ext4 /dev/md0
mdadm -D -s >> /etc/mdadm.conf
blkid
echo "UUID=''\t /backup\text4\tdefaults\t0\t0" >>/etc/fstab
mkdir /dev/md0
mount -a
2:創建由三塊硬盤組成的可用空間為2G的RAID5設備,要求其chunk大小為
256k,文件系統為ext4,開機可自動掛載至/mydata目錄
fdisk 分出4個1G分區 /dev/sdb{1,2,3,4} 類型fd
mdadm -C /dev/md1 -a yes -l5 -n3 -x1 -c 256 /dev/sdb{1,2,3,4}
mkfs.ext4 /dev/md1
mdadm -D -s >> /etc/mdadm.conf
blkid
echo "UUID=''\t/madata\text4\tdefault\t 0\t0 "
mkdir /mydata
mount -a
LVM:邏輯卷管理器
允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小
允許在多個物理設備間重新組織文件系統
將設備指定為物理卷
用一個或者多個物理卷來創建一個娟阻
物理卷是用固定大小的物理區域(PE,Physical Extent)來定義的
在物理卷上創建的邏輯卷是由物理區域PE組成的
可在邏輯卷上創建文件系統
LVM: Logical Volume Manager, Version:2
dm: device mapper :將一個或多個底層設備組織成一個邏輯設備的模塊
設備名:/dev/dm-#
軟鏈接:
/dev/mapper/VG-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
LVM可以彈性的更改LVM的容量
通過交換PE來進行資料的轉換,將原來LV內的PE轉移到其他的設備中以降低LV
的容量,或將其他設備中的PE加到LV中以加大容量
pv管理工具
pv
pvs 簡要pv信息顯示
pvdisplay 詳細pv信息顯示
pvcreate /dev/device 創建pv
pvmove 轉移pv上的內容到其他pv
pvmove /dev/sd*
pvremove 刪除pv,
需要先執行 vgreduce /dev/vg /dev/sd*
pvremove /dev/sd*
VG管理工具
vg
vgs 顯示卷組
vgdisplay 顯示vg詳細信息
vgcreate 創建卷組
-s 指定PE大小
vgreduce 卷組減容
vgreduce /dev/vg /dev/sd*
vgextend 卷組擴容
vgextend /dev/vg /dev/sd*
vgremove 卷組刪除
vgchange 修改卷組屬性,便於遷移
-a n 遷出
-a y 遷入
vgexport 輸出卷組,便於遷移
vgimport 輸入卷組
vgrename vg改名
vgrename /dev/vg name
lv管理工具
lv
lvcreate 創建邏輯卷lv
-L # size,直接指定大小M/G
-l #,%{FREE|PVS|VG} PE數量,%FREE %VG 表示空閑百分比%和總百分比%
-n name 指定lv名
lvs 查看lv
lvdisplay 查看lv詳細信息
lvremove 刪除lv
lvrename lv改名
lvrename /dev/vg/lv name
lvconvert 恢復邏輯卷快照
--merge
lvextend
-L [+]size 擴展、擴展到size
-l [+]num 50%FREE/VG 擴展、擴展到num個PE大小
lvreduce lv減容
-L [-]size
-l [-]num 50%FREE/VG
pv刪除:
pvmove /dev/sdb1
vgreduce /dev/vg1 /dev/sdb1
pvremore /dev/sdb1
lv擴容:
lvextend -L +5G /dev/vg/lv 擴展邏輯卷
resize2fs /dev/vg/lv 擴展文件系統
lvresize lvresize -r -l +100%FREE /dev/vg1/lv1 此命令會將文件系統和lv一起擴展
lv減容:
umount /dev/vg/lv 取消掛載
e2fsck e2fsck -f /dev/vg/lv 強制檢查
resize2fs resize2fs /dev/vg/lv 5G 縮減文件系統 centos6
xfs_growfs centos7
lvreduce -L 5G /dev/vg/lv
PS: lv縮減或者刪除必須取消掛載
lv擴展之後需要擴展文件系統
lv縮減之前需縮減文件系統
跨主機遷移卷組
源計算機上:
1. umount所有卷組上的邏輯卷
2. vgchange -a n vg
lvdisplay
3. vgexport vg
pvscan 查看pv使用情況
vgdisplay
拆下硬盤
目標計算機上:
4. 安裝硬盤,並 vgimport vg
5. vgchange -ay vg
6. mount所有卷組上的邏輯卷
邏輯卷管理器快照:
快照是特殊的邏輯卷,它是在生成快照時存在的邏輯卷的準確拷貝
對於需要備份或者復制的現有數據臨時拷貝以及其他操作做來說,快照
是最合適的選擇
快照只有在它們和原來的邏輯卷不同時才會消耗空間
在生成快照時會分配給它一定的空間,但只有在原來的邏輯卷或者
快照有所改變的時候才會使用這些空間
當原來的邏輯卷中有所改變時,會將舊的數據復制到快照中
快照中只含有原來的邏輯卷中更改的數據或者自生成快照後的快照中
更改的數據
建立快照的卷大小只需要原始邏輯卷的15%-20%就夠了,也可以使用
lvextend放大快照
快照就是將當時的系統信息記錄下來,就好像照相一般,若將來有任何數據
改動了,則原始數據會被移動到快照區,沒有改動的區域擇優快照區的文件
系統共享
由於快照區與原來的LV公用很多PE的區塊,因此快照與被快照的LV必須在同一個
VG中,系統恢復的時候的文件數量不能高於快照區的實際容量
使用LVM快照:
為現有的邏輯卷創建快照:
lvcreate -l 64 -s -n data-snapshot -p r /dev/vg/lv
-s|--snapshot 指明快照lv
-p|--permission {r|rw} 指明權限,是讀寫還是只讀
掛載快照:
mkdir -p /mnt/snap
mount -o ro /dev/vg/data-snapshot /mnt/snap
恢復快照:
umount /dev/vg/data-snapshot
umount /dev/vg/data
lvconvert --merge /dev/vg/snapshot
刪除快照:
umount /mnt/snap
lvremove /dev/vg/data-snapshot
練習:
1、創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小
為16MB, 而後在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄
fdisk /dev/sdb /dev/sdb1 /dev/sdb2 10G 8e
pvcreat /dev/sdb{1,2}
vgcreat -s 16M /dev/vg0 /dev/sdb{1,2}
lvcreat -L 5G -n testlv /dev/vg0
mkfs.ext4 /dev/vg0/testlv
mkdir /users
mount /dev/vg0/testlv /users
2、新建用戶archlinux,要求其家目錄為/users/archlinux,而後su切換至
archlinux用戶,復制/etc/pam.d目錄至自己的家目錄
useradd -d /users/archlinux
su archlinux
cp -r /etc/pam.d ~
3、擴展testlv至7G,要求archlinux用戶的文件不能丟失
lvextend -L 7G /dev/vg0/testlv
resize2fs /dev/vg0/testlv
4、收縮testlv至3G,要求archlinux用戶的文件不能丟失
umount /dev/vg0/testlv
e2fsck -f /dev/vg0/testlv
resize2fs /dev/vg0/testlv 3G
lvreduse -L 3G /dev/vg0/testlv
mount /dev/vg0/testlv /users
5、對testlv創建快照,並嘗試基於快照備份數據,驗證快照的功能
lvcreate -L 1G -s -n snap1 /dev/vg0/testlv1
umount /users
lvconvert --merge /dev/vg0/snap1
筆記整理完成時間:2018年4月28日20:18:25
第11章,磁盤存儲和文件系統學習筆記