1. 程式人生 > >四周第一次課(2月26日)

四周第一次課(2月26日)

linux 學習 筆記

4.10/4.11/4.12 lvm講解
4.13 磁盤故障小案例


4.10 lvm講解(上)


圖講解

技術分享圖片

兩塊硬盤 A B

A兩個分區 B一個分區 共三個分區

三個分區組成一個物理卷(physical volume)

然後物理卷上面再組成卷組(volume group),卷組1有物理卷1,卷組2有物理卷2,3。 卷組就是物理卷的一個集合。

卷組基礎上劃分邏輯卷,卷組1裏有邏輯卷1,卷組有邏輯卷2,3。

最終在邏輯卷上面進行格式化,再掛載到系統上面使用。


分區準備

技術分享圖片fdisk /dev/sdb

n創建三個新分區,分別1G

t改變分區類型為8e


分區操作

# fdisk /dev/sdb


創建1G的主分區,

設備 Boot Start End Blocks Id System

/dev/sdb1 2048 2099199 1048576 83 Linux


ID為83代表只是普通的分區,如果想使用LVM,需要更改分區ID為8e,8e代表LVM分區


命令(輸入 m 獲取幫助):t

已選擇分區 1

Hex 代碼(輸入 L 列出所有代碼):8e

已將分區“Linux”的類型更改為“Linux LVM”


設備 Boot Start End Blocks Id System

/dev/sdb1 2048 2099199 1048576 8e Linux LVM


只有改到這樣,才可以做物理卷


接下來,創建另外兩個主分區,分別也是LVM類型(具體操作跟創建第一個一樣)

設備 Boot Start End Blocks Id System

/dev/sdb1 2048 2099199 1048576 8e Linux LVM

/dev/sdb2 2099200 4196351 1048576 8e Linux LVM

/dev/sdb3 4196352 6293503 1048576 8e Linux LVM

分區之後,別忘了w保存


#fdisk -l 查看分區是否成功

設備 Boot Start End Blocks Id System

/dev/sdb1 2048 2099199 1048576 8e Linux LVM

/dev/sdb2 2099200 4196351 1048576 8e Linux LVM

/dev/sdb3 4196352 6293503 1048576 8e Linux LVM


創建物理卷

技術分享圖片


安裝lvm命令,安裝失敗。

# yum install -y lvm

已加載插件:fastestmirror

base | 3.6 kB 00:00:00

extras | 3.4 kB 00:00:00

updates | 3.4 kB 00:00:00

Determining fastest mirrors

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

沒有可用軟件包 lvm。

錯誤:無須任何處理


利用#yum通配搜索pvcreate命令

#yum provides "/*/pvcreate"

[root@centos7 ~]# yum provides "/*/pvcreate"

已加載插件:fastestmirror

Loading mirror speeds from cached hostfile

* base: mirrors.aliyun.com

* extras: mirrors.aliyun.com

* updates: mirrors.aliyun.com

base/7/x86_64/filelists_db | 6.7 MB 00:00:01

extras/7/x86_64/filelists_db | 636 kB 00:00:00

updates/7/x86_64/filelists_db | 3.5 MB 00:00:01

1:bash-completion-2.1-6.el7.noarch : Programmable completion for Bash

源 :base

匹配來源:

文件名 :/usr/share/bash-completion/completions/pvcreate




7:lvm2-2.02.171-8.el7.x86_64 : Userland logical volume management tools

源 :base

匹配來源:

文件名 :/usr/sbin/pvcreate


查到pvcreate命令來源於lvm2的包,所以安裝這個lvm2即可

#yum install -y lvm2

安裝成功,由於過程太多信息,就不列出。


繼續操作

創建物理卷

(#partprobe命令,生成分區文件,用於系統沒有自動生成文件。)

[root@centos7 ~]# pvcreate /dev/sdb1

WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y

Wiping ext4 signature on /dev/sdb1.

Physical volume "/dev/sdb1" successfully created.

[root@centos7 ~]# pvcreate /dev/sdb2

Physical volume "/dev/sdb2" successfully created.

[root@centos7 ~]# pvcreate /dev/sdb3

Physical volume "/dev/sdb3" successfully created.


#pvdisplay 查看物理卷建立狀態。


"/dev/sdb2" is a new physical volume of "1.00 GiB"

--- NEW Physical volume ---

PV Name /dev/sdb2

VG Name

PV Size 1.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID crs9wx-KFZA-JPde-JwD2-fKnA-M6pi-Ci5kuj

"/dev/sdb3" is a new physical volume of "1.00 GiB"

--- NEW Physical volume ---

PV Name /dev/sdb3

VG Name

PV Size 1.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID 5lyipH-eOGt-8je9-N2NQ-82dw-sdqh-RVRbvQ

"/dev/sdb1" is a new physical volume of "1.00 GiB"

--- NEW Physical volume ---

PV Name /dev/sdb1

VG Name

PV Size 1.00 GiB

Allocatable NO

PE Size 0

Total PE 0

Free PE 0

Allocated PE 0

PV UUID ffAd90-QY88-w25I-MSE1-gyA6-FtYc-l4XCyk



4.11 lvm講解(中)


#pvs 同樣也是查看物理卷

# pvs

PV VG Fmt Attr PSize PFree

/dev/sdb1 lvm2 --- 1.00g 1.00g

/dev/sdb2 lvm2 --- 1.00g 1.00g

/dev/sdb3 lvm2 --- 1.00g 1.00g


創建物理卷之後,再創建卷組。

#vgcreate卷組命令,組名 對應盤符

創建卷組

#vgcreate vg1 /dev/sdb1 /dev/sdb2

# vgcreate vg1 /dev/sdb1 /dev/sdb2

Volume group "vg1" successfully created


#vgs 查看卷組信息(#vgdisplay 也可以查看)

vgs

VG #PV #LV #SN Attr VSize VFree

vg1 2 0 0 wz--n- 1.99g 1.99g


創建卷組之後,創建邏輯卷

#lvcreate -L 100M -n lv1 vg1

指定100M 名字 lv1 從vg1裏面劃分出來

# lvcreate -L 100M -n lv1 vg1

Logical volume "lv1" created.

# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

lv1 vg1 -wi-a----- 100.00m

# lvdisplay

--- Logical volume ---

LV Path /dev/vg1/lv1

LV Name lv1

VG Name vg1

LV UUID AYUXn9-xIp6-Ti6A-JWiI-hcvR-I1X2-PFoyrI

LV Write Access read/write

LV Creation host, time centos7.4-01, 2018-02-26 15:36:16 +0800

LV Status available

# open 0

LV Size 100.00 MiB

Current LE 25

Segments 1

Allocation inherit

Read ahead sectors auto

- currently set to 8192

Block device 253:0


格式化ext4

#mkfs.ext4 /dev/vg1/lv1 邏輯卷的路徑可以在#lvdisplay查看


掛載到/mnt

[root@centos7 ~]# mount /dev/vg1/lv1 /mnt

[root@centos7 ~]# df -h

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 28G 1.1G 27G 4% /

devtmpfs 483M 0 483M 0% /dev

tmpfs 493M 0 493M 0% /dev/shm

tmpfs 493M 6.8M 486M 2% /run

tmpfs 493M 0 493M 0% /sys/fs/cgroup

/dev/sda1 187M 97M 91M 52% /boot

tmpfs 99M 0 99M 0% /run/user/0

/dev/mapper/vg1-lv1 93M 1.6M 85M 2% /mnt


#ls -l /dev/vg1/lv1

lrwxrwxrwx. 1 root root 7 2月 26 15:40 /dev/vg1/lv1 -> ../dm-0

/dev/vg1/lv1是一個軟鏈接文件,指向../dm-0


創建目錄,文件,寫入內容。

[root@centos7 ~]# mkdir /mnt/1212

[root@centos7 ~]# touch /mnt/23.txt

[root@centos7 ~]# echo "11111" > /mnt/23.txt


擴容邏輯卷

技術分享圖片

# lvresize 擴容命令 -L指定容量 後面對應盤符路徑(擴容之前,應該先#umount)

# lvresize -L 200M /dev/vg1/lv1

Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 200.00 MiB (50 extents).

Logical volume vg1/lv1 successfully resized.

(如果進行#lvresize時忘記了#umount,可以先#umount再來一次#lvresize也是不影響效果的)

# umount /mnt/

# lvresize -L 200M /dev/vg1/lv1

New size (50 extents) matches existing size (50 extents).


檢查磁盤錯誤

#e2fsck -f /dev/vg1/lv1

e2fsck 1.42.9 (28-Dec-2013)

第一步: 檢查inode,塊,和大小

第二步: 檢查目錄結構

第3步: 檢查目錄連接性

Pass 4: Checking reference counts

第5步: 檢查簇概要信息

/dev/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks


更新邏輯卷信息

# resize2fs /dev/vg1/lv1

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.

The filesystem on /dev/vg1/lv1 is now 204800 blocks long.


掛載

[root@centos7 ~]# !mount

mount /dev/vg1/lv1 /mnt



查看更新後的分區信息,/dev/vg1/lv1 容量比原來增大了

[root@centos7 ~]# df -h

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 28G 1.1G 27G 4% /

devtmpfs 483M 0 483M 0% /dev

tmpfs 493M 0 493M 0% /dev/shm

tmpfs 493M 6.8M 486M 2% /run

tmpfs 493M 0 493M 0% /sys/fs/cgroup

/dev/sda1 187M 97M 91M 52% /boot

tmpfs 99M 0 99M 0% /run/user/0

/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt


檢查設置後文件有沒有受到影響,檢查正常,無任何問題發現,由此證明擴容沒有影響文件。

[root@centos7 ~]# ls /mnt/

1212 23.txt lost+found

[root@centos7 ~]# cat /mnt/23.txt

11111


縮減邏輯卷(xfs不支持)

技術分享圖片


先umount

#umount /mnt


e2fsck -f /dev/vg1/lv1 檢查磁盤錯誤

# e2fsck -f /dev/vg1/lv1

e2fsck 1.42.9 (28-Dec-2013)

第一步: 檢查inode,塊,和大小

第二步: 檢查目錄結構

第3步: 檢查目錄連接性

Pass 4: Checking reference counts

第5步: 檢查簇概要信息

/dev/vg1/lv1: 13/49400 files (7.7% non-contiguous), 11887/204800 blocks



resize2fs /dev/vg1/lv1 100M 更新邏輯卷信息(ext)

# resize2fs /dev/vg1/lv1 100M

resize2fs 1.42.9 (28-Dec-2013)

Resizing the filesystem on /dev/vg1/lv1 to 102400 (1k) blocks.

The filesystem on /dev/vg1/lv1 is now 102400 blocks long.



lvresize -L 100M /dev/vg1/lv1 重新設置卷大小

# lvresize -L 100M /dev/vg1/lv1

WARNING: Reducing active logical volume to 100.00 MiB.

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce vg1/lv1? [y/n]: y

Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).

Logical volume vg1/lv1 successfully resized.

此處提醒縮減可能會導致文件損壞,選y,後面再檢查。


檢查是否縮減變成了100M

# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

lv1 vg1 -wi-a----- 100.00m



掛載,檢查文件

#!mount

mount /dev/vg1/lv1 /mnt

[root@centos7 ~]# ls /mnt

1212 23.txt lost+found

[root@centos7 ~]# cat /23.txt

cat: /23.txt: 沒有那個文件或目錄

[root@centos7 ~]# cat /mnt/23.txt

11111


檢查結果,文件可以繼續操作和查看,並無影響,由此證明,縮容沒有影響文件問題。


將/dev/vg1/lv1 格式化為xfs

#umount /mnt

#mkfs.xfs -f /dev/vg1/lv1

# mkfs.xfs -f /dev/vg1/lv1

meta-data=/dev/vg1/lv1 isize=512 agcount=4, agsize=6400 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0, sparse=0

data = bsize=4096 blocks=25600, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal log bsize=4096 blocks=855, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0


#!mount


[root@centos7 ~]# touch /mnt/233.txt

[root@centos7 ~]# echo "aaaa" > /mnt/233.txt

[root@centos7 ~]# cat !$

cat /mnt/233.txt

aaaa

[root@centos7 ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

lv1 vg1 -wi-ao---- 100.00m


xfs擴容300M,不需要卸載掛載

[root@centos7 ~]# lvresize -L 300M

No command with matching syntax recognised. Run 'lvresize --help' for more information.

Nearest similar command has syntax:

lvresize -L|--size [+|-]Size[m|UNIT] LV

Resize an LV by a specified size.


[root@centos7 ~]# lvresize -L 300M /dev/vg1/lv1

Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 300.00 MiB (75 extents).

Logical volume vg1/lv1 successfully resized.

[root@centos7 ~]# lvs

LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert

lv1 vg1 -wi-ao---- 300.00m


#df-h 容量沒有更新上去

# df -h

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 28G 1.1G 27G 4% /

devtmpfs 483M 0 483M 0% /dev

tmpfs 493M 0 493M 0% /dev/shm

tmpfs 493M 6.8M 486M 2% /run

tmpfs 493M 0 493M 0% /sys/fs/cgroup

/dev/sda1 187M 97M 91M 52% /boot

tmpfs 99M 0 99M 0% /run/user/0

/dev/mapper/vg1-lv1 97M 5.2M 92M 6% /mnt


執行xfs_growfs /dev/vg1/lv1 讓容量更新上去

[root@centos7 ~]# xfs_growfs /dev/vg1/lv1

meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=6400 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0 spinodes=0

data = bsize=4096 blocks=25600, imaxpct=25

= sunit=0 swidth=0 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal bsize=4096 blocks=855, version=2

= sectsz=512 sunit=0 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

data blocks changed from 25600 to 76800

[root@centos7 ~]# df -h

文件系統 容量 已用 可用 已用% 掛載點

/dev/sda3 28G 1.1G 27G 4% /

devtmpfs 483M 0 483M 0% /dev

tmpfs 493M 0 493M 0% /dev/shm

tmpfs 493M 6.8M 486M 2% /run

tmpfs 493M 0 493M 0% /sys/fs/cgroup

/dev/sda1 187M 97M 91M 52% /boot

tmpfs 99M 0 99M 0% /run/user/0

/dev/mapper/vg1-lv1 297M 5.5M 292M 2% /mnt



4.12 lvm講解(下)


擴展卷組

技術分享圖片


把sdb3加入卷組vg1

[root@centos7 ~]# vgextend vg1 /dev/sdb3

Volume group "vg1" successfully extended

[root@centos7 ~]# vgs

VG #PV #LV #SN Attr VSize VFree

vg1 3 1 0 wz--n- <2.99g <2.70g


容量變為3G,表示添加成功。



4.13 磁盤故障小案例


開機失敗,因為修改了文件錯誤。

這種情況,往往是磁盤掛載錯誤才出現的問題。


直接輸入root的密碼

技術分享圖片


進入/etc/fstab

dd刪掉最後一行

技術分享圖片

重啟即可


四周第一次課(2月26日)