更多內容請點擊:node
Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~)
linux
https://blog.51cto.com/13683480/2095439ios
筆記整理開始時間:2018年4月24日11:25:33vim
第11章,磁盤存儲和文件系統windows
本章內容:centos
磁盤結構安全
分區類型網絡
管理分區數據結構
管理文件系統app
掛載設備
管理虛擬內存
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錯誤。當這種狀況
影響到硬盤的第一個扇區時,可能致使硬盤報廢,上邊的命令有可能使
這些數據起死回生,且這個過程是安全高效的。
練習:
一、建立一個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
二、寫一個腳本,完成以下功能:
(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
三、將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
練習:
一、建立一個至少有兩個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
二、新建用戶archlinux,要求其家目錄爲/users/archlinux,然後su切換至
archlinux用戶,複製/etc/pam.d目錄至本身的家目錄
useradd -d /users/archlinux
su archlinux
cp -r /etc/pam.d ~
三、擴展testlv至7G,要求archlinux用戶的文件不能丟失
lvextend -L 7G /dev/vg0/testlv
resize2fs /dev/vg0/testlv
四、收縮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
五、對testlv建立快照,並嘗試基於快照備份數據,驗證快照的功能
lvcreate -L 1G -s -n snap1 /dev/vg0/testlv1
umount /users
lvconvert --merge /dev/vg0/snap1
筆記整理完成時間:2018年4月28日20:18:25