1. 程式人生 > >第11章,磁盤存儲和文件系統學習筆記

第11章,磁盤存儲和文件系統學習筆記

linux磁盤管理 linux linux文件系統 raid lvm


更多內容請點擊:

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章,磁盤存儲和文件系統學習筆記