Linux下的磁盤管理、掛載是一個令筆者陌生又懼怕的領(lǐng)域,陌生是因為筆者非專職的運維人員,在實際工作中遇到生產(chǎn)環(huán)境磁盤的擴容和掛載的場景少之又少,就算有也是交由更加專業(yè)運維同事處理。懼怕是因為習慣了使用Windows下如Diskgenius這樣可視化的工具,使用命令行操作磁盤總有點看不見摸不著的感覺,尤其是對于保存重要數(shù)據(jù)的生產(chǎn)環(huán)境,總會擔心一失足成千古恨,造成"刪庫跑路"的悲劇??傊?,對于有磁盤操作一定要小心再小心,<u>以下內(nèi)容僅供在測試環(huán)境下學習備考RHCE使用,生產(chǎn)環(huán)境操作請自行評估,由此造成任何影響與筆者無關(guān)。</u>
一、文章大綱
LVM
VDO卷
SWAP
掛載
NFS
二、LVM
LVM全稱是邏輯卷管理(Logical Volume Manager),其作用通俗來說就是,管理員在給服務(wù)器分配磁盤空間時,很難預(yù)估準確配額,使用LVM分配空間后,可以在不停機不停服務(wù)的情況下,動態(tài)擴展空間大小。
網(wǎng)上關(guān)于LVM介紹的文章很多,但總感覺差點意思,筆者在這里以一個更加生動的場景,帶領(lǐng)大家熟悉熟悉。
需求一:現(xiàn)在有兩塊20G磁盤,名稱分別為****sdc****和****sdd****,需要將兩個磁盤使用****LVM****格式配置,留著備用。
#查看磁盤情況如下,sdc和sdd是需要操作的兩個20G磁盤
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sr0 11:0 1 1024M 0 rom
#使用fdisk先給磁盤分區(qū),格式化
[root@localhost ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xdb8c233f.
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Command (m for help): m #m查看幫助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition #n添加分區(qū)
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id #t修改分區(qū)格式
u change display/entry units
v verify the partition table
w write table to disk and exit #w寫入配置并退出
x extra functionality (experts only)
Command (m for help): n #新建分區(qū)
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +20G
Value out of range.
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): t #修改分區(qū)格式
Selected partition 1
Hex code (type L to list all codes): L #L查看格式代碼
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): 8e #8e 為Linux LVM
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w #寫入
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#相同步驟對sdd進行操作
[root@localhost ~]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xabcbdd8c.
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#操作完成后查看當前磁盤情況
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
sr0 11:0 1 1024M 0 rom
經(jīng)過上面操作,現(xiàn)在我們有兩個20G,格式為Linux LVM的分區(qū),如下圖

需求二:程序員小張需要使用/****opt****目錄,并要求你幫忙預(yù)留35G使用空間。
分析需求,小張需要35G空間,一個磁盤空間不夠,你想著干嘛35G呀,直接將sdc1和sdd1空間做成40G的LVM,配置后分配給opt目錄。
#將分區(qū)sdc1和sdd1做成pv卷
[root@localhost ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
#查看本地pv卷
[root@localhost ~]# pvscan
PV /dev/sda3 VG centos lvm2 [498.80 GiB / 4.00 MiB free]
PV /dev/sdc1 lvm2 [<20.00 GiB]
PV /dev/sdd1 lvm2 [<20.00 GiB]
Total: 3 [<538.80 GiB] / in use: 1 [498.80 GiB] / in no VG: 2 [<40.00 GiB]
#將pv卷sdc1和sdd1加入卷組vgdata
[root@localhost ~]# vgcreate vgdata /dev/sdc1 /dev/sdd1
Volume group "vgdata" successfully created
#在卷組vgdata上分配一個大小為40G,名稱為lv001的lv
[root@localhost ~]# lvcreate -L 40G -n lv001 vgdata
Volume group "vgdata" has insufficient free space (10238 extents): 10240 required.
#提示空間不足,查看發(fā)現(xiàn)最大空間為39.99G
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name vgdata
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 39.99 GiB
PE Size 4.00 MiB
Total PE 10238
Alloc PE / Size 0 / 0
Free PE / Size 10238 / 39.99 GiB
VG UUID TEewMb-i4WA-EpuW-274D-NPSl-xDWE-R7q5Ij
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 498.80 GiB
PE Size 4.00 MiB
Total PE 127693
Alloc PE / Size 127692 / <498.80 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID 0eA18f-Tnv8-IzuY-RMhJ-YzT2-zzoz-GoNiuK
#重新分配
[root@localhost ~]# lvcreate -L 39.99G -n lv001 vgdata
Rounding up size to full physical extent 39.99 GiB
Logical volume "lv001" created.
#對lv進行格式化,格式化為ext3格式
[root@localhost ~]# mkfs.ext3 /dev/vgdata/lv001
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10483712 blocks
524185 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
#可以使用命令查看lv001的UUID信息
[root@localhost ~]# blkid /dev/vgdata/lv001
/dev/vgdata/lv001: UUID="1231d07b-80d4-41bb-99ef-86085146e9a3" SEC_TYPE="ext2" TYPE="ext3"
#編輯fstab,掛載剛才空間到/opt下面。掛載使用路徑或UUID均可
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Aug 18 09:57:48 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=93f2cc65-ba60-45f9-ac23-20636ff33131 /boot xfs defaults 0 0
UUID=8DBE-5CF6 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/vgdata/lv001 /opt ext3 defaults 0 0
#重新加載fstab
[root@localhost ~]# mount -a
#查看當前磁盤分配
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 40G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 40G 0 lvm /opt
sr0 11:0 1 1024M 0 rom
#查看磁盤空間
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 2.2G 48G 5% /
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 887M 0 887M 0% /dev/shm
tmpfs tmpfs 887M 8.5M 879M 1% /run
tmpfs tmpfs 887M 0 887M 0% /sys/fs/cgroup
/dev/sda2 xfs 1014M 137M 878M 14% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 447G 33M 447G 1% /home
tmpfs tmpfs 178M 0 178M 0% /run/user/0
/dev/mapper/vgdata-lv001 ext3 40G 49M 38G 1% /opt
經(jīng)過上面操作后,我們成功將兩個20G硬盤做成一個40G空間分配給/opt,在上面操作過程中,大家也可以看到引入pv、vg、lv等等一些概念,不要著急,聽我慢慢道來:
PV(Physical Volume)物理卷,處于LVM最底層,可以是物理硬盤或分區(qū)。
VG(Volume Group)卷組,多個PV組成VG。
如下圖,先在磁盤上建立分區(qū)sdc1、sdd1,將分區(qū)做成PV卷,將PV卷添加vgdata的VG卷組,這樣LVM卷組就準備好了。

接下來,我們在建好的VG卷組上劃分一塊區(qū)域給opt,劃分出來的區(qū)域叫LV,相當于原來分區(qū)。
- LV(Logical Volume)邏輯卷,相當于原來分區(qū),建立在VG之上,可以動態(tài)分配大小。
我們在vgdata上分配空間lv001,接下來操作和正常掛載操作一樣,先格式化,然后配置掛載,最后效果如下:

需求三:小張找到你,說只需要35G的空間。不要40G空間。。。。。。
你心想,幸虧自己使用了LVM技術(shù),不然得被他搞死了。
#使用lvreduce命令,-L后面指定空間大小
[root@localhost ~]# lvreduce -L 35G -r /dev/mapper/vgdata-lv001
Do you want to unmount "/opt" ? [Y|n] y
fsck from util-linux 2.23.2
/dev/mapper/vgdata-lv001: 11/2621440 files (0.0% non-contiguous), 209587/10483712 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/vgdata-lv001 to 9175040 (4k) blocks.
The filesystem on /dev/mapper/vgdata-lv001 is now 9175040 blocks long.
Size of logical volume vgdata/lv001 changed from 39.99 GiB (10238 extents) to 35.00 GiB (8960 extents).
Logical volume vgdata/lv001 successfully resized.
#查看
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 2.2G 48G 5% /
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 887M 0 887M 0% /dev/shm
tmpfs tmpfs 887M 8.4M 879M 1% /run
tmpfs tmpfs 887M 0 887M 0% /sys/fs/cgroup
/dev/sda2 xfs 1014M 137M 878M 14% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 447G 33M 447G 1% /home
tmpfs tmpfs 178M 0 178M 0% /run/user/0
/dev/mapper/vgdata-lv001 ext3 35G 49M 33G 1% /opt
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 35G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 35G 0 lvm /opt
sr0 11:0 1 1024M 0 rom
使用lvreduce收縮空間后,效果如下:

需求四:小張又找到你,空間不夠用,經(jīng)過測算需要50G。。。。。。。
行吧,就讓你折騰吧,你心想。
思路:
現(xiàn)在sdc和sdd兩個盤空間只有40G,如果要擴充50G,需要再增加一個20G硬盤,將硬盤加入vgdata的VG卷,然后再擴容lv001 LV邏輯卷。
說干就干
#添加20G磁盤sdb
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 35G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 35G 0 lvm /opt
sr0 11:0 1 1024M 0 rom
#按上面操作,先做分區(qū),再做pv,然后加入vg
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8725ccca.
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 35G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 35G 0 lvm /opt
sr0 11:0 1 1024M 0 rom
#查看vgs空間
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 498.80g 4.00m
vgdata 2 1 0 wz--n- 39.99g 4.99g
#使用vgextend將pv sdb1加入vg vgdata
[root@localhost ~]# vgextend vgdata /dev/sdb1
Volume group "vgdata" successfully extended
#查看vgs空間
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 498.80g 4.00m
vgdata 3 1 0 wz--n- <59.99g <24.99g
#目前vg已經(jīng)有60G空間,可以給lv擴容
[root@localhost ~]# lvextend -L 50G -r /dev/mapper/vgdata-lv001
Size of logical volume vgdata/lv001 changed from 35.00 GiB (8960 extents) to 50.00 GiB (12800 extents).
Logical volume vgdata/lv001 successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vgdata-lv001 is mounted on /opt; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/vgdata-lv001 is now 13107200 blocks long.
#也可以使用下面命令,給lv001增加15G空間
# lvextend -L +15G -r /dev/mapper/vgdata-lv001
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 50G 2.2G 48G 5% /
devtmpfs devtmpfs 876M 0 876M 0% /dev
tmpfs tmpfs 887M 0 887M 0% /dev/shm
tmpfs tmpfs 887M 8.5M 879M 1% /run
tmpfs tmpfs 887M 0 887M 0% /sys/fs/cgroup
/dev/sda2 xfs 1014M 137M 878M 14% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 447G 33M 447G 1% /home
tmpfs tmpfs 178M 0 178M 0% /run/user/0
/dev/mapper/vgdata-lv001 ext3 50G 52M 47G 1% /opt
目前已完成擴容。

三、VDO卷
VDO全稱是虛擬數(shù)據(jù)優(yōu)化(Virtual Data <u>Optimize</u>),是Linux的一個內(nèi)核模塊,從內(nèi)核層對磁盤空間進行壓縮和刪重,以節(jié)省磁盤空間,存儲更多數(shù)據(jù)。
#安裝模塊
[root@localhost ~]# yum install -y vdo kmod-kvdo
#給虛擬機添加一個10G新磁盤,sde
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sde 8:64 0 10G 0 disk
sr0 11:0 1 1024M 0 rom
#將服務(wù)設(shè)置自啟并啟動
[root@localhost ~]# systemctl enable --now vdo
#創(chuàng)建vdo
[root@localhost ~]# vdo create --name=vdough --device=/dev/sde --vdoLogicalSize=20G
Creating VDO vdough
vdo: ERROR - Kernel module kvdo not installed
vdo: ERROR - modprobe: FATAL: Module kvdo not found.
#上面提示未加載,先把服務(wù)器重啟下
[root@localhost ~]# reboot
#再次創(chuàng)建,成功
[root@localhost ~]# vdo create --name=vdough --device=/dev/sde --vdoLogicalSize=20G
Creating VDO vdough
Starting VDO vdough
Starting compression on VDO vdough
VDO instance 0 volume is ready at /dev/mapper/vdough
#查看新建vdo
[root@localhost ~]# vdo list
vdough
#或使用 vdostats --human-readable
#查看vdo狀態(tài)信息
[root@localhost ~]# vdo status -n vdough
VDO status:
Date: '2023-10-24 04:51:01-04:00'
Node: localhost.localdomain
Kernel module:
Loaded: true
Name: kvdo
Version information:
kvdo version: 6.1.3.23
Configuration:
File: /etc/vdoconf.yml
Last modified: '2023-10-24 04:49:31'
VDOs:
vdough:
Acknowledgement threads: 1
Activate: enabled
Bio rotation interval: 64
Bio submission threads: 4
Block map cache size: 128M
Block map period: 16380
Block size: 4096
CPU-work threads: 2
Compression: enabled
Configured write policy: auto
Deduplication: enabled
Device mapper status: 0 41943040 vdo /dev/sde normal - online online 1049638 2621440
Emulate 512 byte: disabled
.....
#創(chuàng)建掛載測試目錄
[root@localhost ~]# mkdir /vdotest
#格式化
[root@localhost ~]# mkfs.xfs -K /dev/mapper/vdough
meta-data=/dev/mapper/vdough isize=512 agcount=4, agsize=1310720 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
#編輯fstab進行掛載
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Aug 18 09:57:48 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=93f2cc65-ba60-45f9-ac23-20636ff33131 /boot xfs defaults 0 0
UUID=8DBE-5CF6 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/vgdata/lv001 /opt ext3 defaults 0 0
/dev/mapper/vdough /vdotest xfs defaults,x-systemd.requires=vdo.service 0 0
#重新加載fstab
[root@localhost ~]# mount -a
#查看掛載情況
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 875M 0 875M 0% /dev
tmpfs tmpfs 887M 0 887M 0% /dev/shm
tmpfs tmpfs 887M 8.4M 879M 1% /run
tmpfs tmpfs 887M 0 887M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 50G 2.5G 48G 5% /
/dev/sda2 xfs 1014M 180M 835M 18% /boot
/dev/sda1 vfat 200M 12M 189M 6% /boot/efi
/dev/mapper/centos-home xfs 447G 33M 447G 1% /home
/dev/mapper/vgdata-lv001 ext3 50G 52M 47G 1% /opt
tmpfs tmpfs 178M 0 178M 0% /run/user/0
/dev/mapper/vdough xfs 20G 33M 20G 1% /vdotest
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sde 8:64 0 10G 0 disk
└─vdough 253:4 0 20G 0 vdo /vdotest
sr0 11:0 1 1024M 0 rom
#刪除vdo,先卸載
[root@localhost ~]# umount /vdotest
#去掉加載項
[root@localhost ~]# vim /etc/fstab
#移除
[root@localhost ~]# vdo remove --name=vdough
Removing VDO vdough
Stopping VDO vdough
四、SWAP
SWAP空間比較特殊,是作為內(nèi)存的緩存空間,一般是內(nèi)存兩倍大小,操作如下:
#將上面使用sde磁盤做成swap
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sde 8:64 0 10G 0 disk
sr0 11:0 1 1024M 0 rom
#格式化為swap
[root@localhost ~]# mkswap /dev/sde
Setting up swapspace version 1, size = 10485756 KiB
no label, UUID=52a5a7ad-1c3f-4053-896b-c196a222fc03
#配置fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Aug 18 09:57:48 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=93f2cc65-ba60-45f9-ac23-20636ff33131 /boot xfs defaults 0 0
UUID=8DBE-5CF6 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/vgdata/lv001 /opt ext3 defaults 0 0
UUID=52a5a7ad-1c3f-4053-896b-c196a222fc03 swap swap defaults 0 0
#激活swap,注意這里需要使用swapon命令
[root@localhost ~]# swapon -a
#查看已經(jīng)成功加載
[root@localhost ~]# lsblk -a
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 446.8G 0 lvm /home
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdc 8:32 0 20G 0 disk
└─sdc1 8:33 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sdd 8:48 0 20G 0 disk
└─sdd1 8:49 0 20G 0 part
└─vgdata-lv001 253:3 0 50G 0 lvm /opt
sde 8:64 0 10G 0 disk [SWAP]
sr0 11:0 1 1024M 0 rom
五、掛載
掛載指將外部的存儲空間掛載到本地目錄進行文件訪問和管理相關(guān)操作,下面演示常用掛載ISO文件和SMB共享場景:
掛載ISO文件至本地
#將DVD鏡像文件上傳至服務(wù)器
[root@servera home]# pwd
/home
[root@servera home]# ll
total 4481024
-rw-r--r--. 1 root root 4588568576 Sep 12 04:53 CentOS-7-x86_64-DVD-1810.iso
#切換至media目錄,新建文件夾dvd
[root@servera home]# cd /media/
[root@servera media]# mkdir dvd
#將iso文件掛載至dvd目錄
[root@servera media]# mount -o loop -t iso9660 /home/Cent
mount: /dev/loop0 is write-protected, mounting read-only
#參數(shù)說明:
#-t 指定掛載文件系統(tǒng)的類型,通常不用指定系統(tǒng)可以自動識別
# iso9660: 光盤
# msdos: DOS fat16文件系統(tǒng)
# ntfs:ntfs文件系統(tǒng)
# smbfs:SMB文件共享
# nfs:NFS文件共享
#-o 參數(shù)
#loop
# loop:用來把一個文件當成硬盤分區(qū)掛接上系統(tǒng)
# ro:采用只讀方式掛接設(shè)備
# rw:采用讀寫方式掛接設(shè)備
# iocharset:指定訪問文件系統(tǒng)所用字符集
#查看目錄,已經(jīng)成功掛載
[root@servera media]# ll dvd/
total 686
-rw-rw-r--. 1 root root 14 Nov 25 2018 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Nov 25 2018 EFI
-rw-rw-r--. 1 root root 227 Aug 30 2017 EULA
-rw-rw-r--. 1 root root 18009 Dec 9 2015 GPL
drwxr-xr-x. 3 root root 2048 Nov 25 2018 images
drwxr-xr-x. 2 root root 2048 Nov 25 2018 isolinux
drwxr-xr-x. 2 root root 2048 Nov 25 2018 LiveOS
drwxrwxr-x. 2 root root 663552 Nov 25 2018 Packages
drwxrwxr-x. 2 root root 4096 Nov 25 2018 repodata
-rw-rw-r--. 1 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root 1690 Dec 9 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Nov 25 2018 TRANS.TBL
#使用mount命令可以查看當前掛載項
[root@servera media]# mount |grep dvd
/home/CentOS-7-x86_64-DVD-1810.iso on /media/dvd type iso9660 (ro,relatime)
#使用umount取消掛載
[root@servera media]# umount /media/dvd
[root@servera media]# mount |grep dvd
[root@servera media]# ll /media/dvd/
total 0
#上述掛載命令只能臨時作用,若要永久修改配置可以在/etc/fstab中配置
[root@servera ~]# vim /etc/fstab
/home/CentOS-7-x86_64-DVD-1810.iso /media/dvd iso9660 defaults,ro,loop 0 0
#重啟服務(wù)器后查看,已經(jīng)成功掛載
[root@servera ~]# ls /media/dvd/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
掛載SMB共享至本地
在Windows測試機下添加文件共享專用用戶

添加共享文件夾

在服務(wù)器上進行下面配置
# 安裝smb客戶端
[root@servera ~]# yum install samba-client
# 查看共享目錄
[root@servera ~]# smbclient -L 172.25.105.23 -U fileuser%abcd1234
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 遠程管理
C$ Disk 默認共享
IPC$ IPC 遠程 IPC
Share Disk
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 172.25.105.23 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
#查看共享的文件
[root@servera ~]# smbclient -c 'ls' //172.25.105.23/Share -U fileuser%abcd1234
. D 0 Wed Sep 13 22:25:41 2023
.. D 0 Wed Sep 13 22:25:41 2023
New Text Document.txt A 5 Wed Sep 13 22:25:49 2023
10452731 blocks of size 4096\. 9807068 blocks available
#臨時掛載,創(chuàng)建掛載目錄
[root@servera ~]# cd /mnt/
[root@servera mnt]# mkdir share
#使用命令臨時掛載
[root@servera mnt]# mount -t cifs //172.25.105.23/Share /mnt/share/ -o username=fileuser,password=abcd1234
#查看掛載文件
[root@servera mnt]# ll share/
total 1
-rwxr-xr-x. 1 root root 5 Sep 13 22:25 New Text Document.txt
[root@servera mnt]# cat share/New\ Text\ Document.txt
hello
#永久掛載
#取消臨時掛載
[root@servera mnt]# umount /mnt/share
#配置fstab文件
[root@servera ~]# cat /etc/fstab |grep share
//172.25.105.23/Share /mnt/share cifs defaults,auto,username=fileuser,password=abcd1234 0 0
[root@servera ~]# ll /mnt/share/
total 1
-rwxr-xr-x. 1 root root 5 Sep 13 22:25 New Text Document.txt
六、NFS
NFS全稱為(Network File System)網(wǎng)絡(luò)文件管理系統(tǒng),顧名思義是用作網(wǎng)絡(luò)文件共享和管理,與之相對是Windows下常用SMB(Server Message Block)協(xié)議。都可用于在局域網(wǎng)進行文件共享。關(guān)于NFS詳細背景、優(yōu)缺點介紹不在本文討論范圍內(nèi),只需了解其為Linux下常用文件共享協(xié)議,可用于NAS或服務(wù)器間的文件共享。且在RHCE考點中有相關(guān)考題,必須要掌握。
NFS服務(wù)端搭建
配置NFS服務(wù)端
#由于NFS需要依賴RPC,所以搭建NFS服務(wù)前,需要先安裝RPC
[root@servera ~]# yum install -y rpcbind nfs-utils
#啟動服務(wù)
[root@servera ~]# systemctl enable --now rpcbind
#檢查rpc服務(wù)狀態(tài)
[root@servera ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
#啟動nfs服務(wù)
[root@servera ~]# systemctl enable --now nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
#新建共享目錄,并準備一些文件用于共享
[root@servera ~]# cd /
[root@servera /]# mkdir data
[root@servera /]# cp /etc/passwd /data/
[root@servera /]#
#配置共享
[root@servera ~]# vim /etc/exports
[root@servera ~]# cat /etc/exports
/data 172.20.126.212(rw,sync)
#路徑 允許主機(可以使用通配符*) 權(quán)限(rw,可讀寫;sync,同步寫操作)
#重啟服務(wù)
[root@servera ~]# systemctl reload nfs-server.service
#也可以使用如下命令重新加載
[root@servera ~]# exportfs -r
完成上面配置后,NFS服務(wù)端已經(jīng)配置完畢,現(xiàn)在還存在一個問題就是遠程客戶端訪問時需要在防火墻放開,NFS主要使用端口有:
111/tcp
111/udp
2049/tcp
2049/udp
20048/tcp
20048/udp
服務(wù)端的防火墻放開操作如下:
#將端口放開
[root@servera ~]# firewall-cmd --permanent --zone=public --add-port=111/tcp
success
[root@servera ~]# firewall-cmd --permanent --zone=public --add-port=111/udp
success
[root@servera ~]# firewall-cmd --permanent --zone=public --add-port=2049/tcp
success
[root@servera ~]# firewall-cmd --permanent --zone=public --add-port=2049/udp
success
[root@servera ~]# firewall-cmd --permanent --zone=public --add-port=20048/udp
success
[root@servera ~]# firewall-cmd --permanent --zone=public --add-port=20048/tcp
success
#重新加載,,使策略生效
[root@servera ~]# firewall-cmd --reload
success
NFS客戶端配置
查看共享情況
#安裝nfs
[root@serverb ~]# yum install nfs-utils
#查看服務(wù)端共享情況(出現(xiàn)下面錯誤說明服務(wù)端防火墻配置有問題,需要在服務(wù)端將端口放開)
[root@serverb ~]# showmount -e 172.20.117.139
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
#在服務(wù)端放開端口后,可以看到共享的文件路徑
[root@serverb ~]# showmount -e 172.20.117.139
Export list for 172.20.117.139:
/data 172.20.126.212
將服務(wù)端掛載本地
#在客戶端新建data目錄
[root@serverb ~]# mkdir /data
#將遠程data目錄掛載在本地下
[root@serverb ~]# mount -t nfs 172.20.117.139:/data /data
#查看目錄,可以發(fā)現(xiàn)遠端文件已經(jīng)可以查看到了,說明掛載成功
[root@serverb ~]# ll /data/
total 4
-rw-r--r--. 1 root root 1034 Sep 4 22:17 passwd
#以上只能臨時掛載,在服務(wù)器重啟后需要重新掛載
#可以使用/etc/fstab進行永久掛載
#先將臨時掛載取消
[root@serverb ~]# umount /data
#配置fstab,在行末添加
[root@serverb ~]# vim /etc/fstab
172.20.117.139:/data /data nfs defaults 0 0
#讓配置生效
[root@serverb ~]# mount -a
#查看
[root@serverb ~]# ll /data
total 4
-rw-r--r--. 1 root root 1034 Sep 4 22:17 passwd
使用autofs
通過上面操作,我們已經(jīng)成功搭建NFS服務(wù),并將服務(wù)下data目錄成功永久性掛載到了本地。fstab會在服務(wù)器每次開機啟動時將遠程盤掛載至本地。但隨著服務(wù)器掛載越來越多,占用服務(wù)器資源和網(wǎng)絡(luò)帶寬也會越來越多,這個時候會思考這樣一個問題,有些掛載資源不經(jīng)常使用,是否可以在使用的時候掛載,在不使用的時候卸載掉呢?接下來我們學習使用autofs對掛載資源進行配置,autofs會在使用資源時自動掛載,在不使用資源時自動卸載,從而節(jié)約服務(wù)器資源和網(wǎng)絡(luò)資源的占用。
#首先我們將上面fstab配置刪除掉
[root@serverb ~]# vi /etc/fstab
[root@serverb ~]# mount -a
[root@serverb ~]# umount /data
#安裝autofs服務(wù)
[root@serverb ~]# yum install -y autofs
#將服務(wù)配置開機啟動
[root@serverb ~]# systemctl enable autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.
#配置
[root@serverb ~]# vim /etc/auto.master.d/netdir.autofs
/data /etc/auto.netdir
#本機路徑 對應(yīng)掛載的配置文件
[root@serverb ~]# vim /etc/auto.netdir
share -fstype=nfs,rw,sync 172.20.117.139:/data
#子目錄 相關(guān)參數(shù) 掛載路徑
#說明一:這里子目錄為share,對應(yīng)完整路徑為/data/share,與手動掛載目錄稍有不同
#說明二:注意參數(shù)前有中劃線,一定不要忘記了,筆者就因為考試時忘記中劃線一直掛載不成功
#查看data目錄,發(fā)現(xiàn)并無文件,這里因為沒有調(diào)用該路徑,所以系統(tǒng)并未掛載
[root@serverb ~]# ll /data/
total 0
#查看share目錄,這個時候autofs發(fā)現(xiàn)有訪問,進行自動掛載的
[root@serverb ~]# ll /data/share
total 4
-rw-r--r--. 1 root root 1034 Sep 4 22:17 passwd