Linux 如何创建逻辑卷并使用
一、逻辑卷的介绍
生成环境中逻辑卷使用率很高
逻辑卷的诞生:如果对磁盘直接使用fdisk分区,那么这中分区,我们叫做Linux的标准分区,Linux的标准分区格式化成文件系统之后,挂载使用,那么一旦文件系统的空间满了,是无法进行扩容的。如果一定要进行扩容,需要将数据备份出来,再换一个更大的文件系统,再将数据还原回去。这种方法效果特别低。
逻辑卷的
pv(plysical volume)物理卷
vg(volume group) 卷组
lv(logical volume) 逻辑卷
pv的创建,pv的删除(向pv里面加入新的块设备就相当于扩容pv,从pv里边删除块设备,就相当于缩容pv)
vg的创建,vg的删除,vg的扩容,vg的缩容(不包含)
lv的创建,lv对的删除,lv的扩容,lv的缩容(不包含)
逻辑卷创建顺序:
- pvcreate创建物理卷
- vgcreate 创建卷组
- lvcreate 创建逻辑卷
- 格式化逻辑卷(mkfs)
- 挂载逻辑卷(mount)
逻辑卷删除顺序:
- 卸载逻辑卷(umount)
- lvremove 删除逻辑卷
- vgreduce 从卷组中移除物理卷
- vgremove 删除卷组
- pvremove 删除物理卷
二、创建物理卷(PV)
1、pvcreate创建物理卷
# 需要先进行分区
[server root ~] # fdisk /dev/sdc -lDisk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc1c4f2abDevice Boot Start End Blocks Id System
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 6293503 2097152 83 Linux
[server root ~] # #创建和删除
[server root ~] # pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created.
[server root ~] # pvcreate /dev/sdc2 Physical volume "/dev/sdc2" successfully created.[server root ~] # pvsPV VG Fmt Attr PSize PFree/dev/sdc1 lvm2 --- 1.00g 1.00g/dev/sdc2 lvm2 --- 2.00g 2.00g# PV:物理卷
/dev/sdc1:第一个物理卷,在 /dev/sdc 磁盘上的第一个分区
/dev/sdc2:第二个物理卷,在 /dev/sdc 磁盘上的第二个分区
# VG:卷组
# Fmt:格式。lvm2 是当前LVM的版本,表示这是一个LVM2格式的物理卷(LVM的第二版格式)
# Attr:属性。 --- 表示该物理卷没有特殊的属性标记
# PSize:物理卷大小
/dev/sdc1 的大小是 1.00GB
/dev/sdc2 的大小是 2.00GB
# PFree:物理卷空虚空间
/dev/sdc1 上有 1.00GB 的空闲空间
/dev/sdc2 上有 2.00GB 的空闲空间
2、如果pv已经被某个vg使用,那么无法被删除
[server root ~] # pvcreate /dev/sdc{1..2}Physical volume "/dev/sdc1" successfully created.Physical volume "/dev/sdc2" successfully created.
[server root ~] # pvsPV VG Fmt Attr PSize PFree/dev/sdc1 lvm2 --- 1.00g 1.00g/dev/sdc2 lvm2 --- 2.00g 2.00g
[server root ~] # pvdisplay /dev/sdc1 "/dev/sdc1" is a new physical volume of "1.00 GiB"--- NEW Physical volume ---PV Name /dev/sdc1VG Name PV Size 1.00 GiBAllocatable NOPE Size 0 Total PE 0Free PE 0Allocated PE 0PV UUID 5GMmBz-KjXz-iXOS-12lx-fBaF-W2db-3LRzXY
pvcreate也可以直接创建一整个磁盘
# 前提是磁盘没有进行分区,如果进行分区了需要删除分区,然后进行创建
[server root ~] # pvcreate /dev/sdbDevice /dev/sdb excluded by a filter.
[server root ~] # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 4G 0 part [SWAP]
└─sda3 8:3 0 35.5G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part /mount-point1
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 5G 0 part /mount-point2
└─sdb6 8:22 0 6G 0 part /mount-point3
sdc 8:32 0 10G 0 disk
├─sdc1 8:33 0 1G 0 part
└─sdc2 8:34 0 2G 0 part
sr0 11:0 1 4.4G 0 rom
[server root ~] # 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.Command (m for help): d
Partition number (1,2, default 2):
Partition 2 is deletedCommand (m for help): d
Selected partition 1
Partition 1 is deletedCommand (m for help): d
No partition is defined yet!Command (m for help): w
The partition table has been altered!Calling ioctl() to re-read partition table.
Syncing disks.
[server root ~] #
[server root ~] # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 4G 0 part [SWAP]
└─sda3 8:3 0 35.5G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 5G 0 part /mount-point1
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 5G 0 part /mount-point2
└─sdb6 8:22 0 6G 0 part /mount-point3
sdc 8:32 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom [server root ~] # pvcreate /dev/sdc
WARNING: dos signature detected on /dev/sdc at offset 510. Wipe it? [y/n]: yWiping dos signature on /dev/sdc.Physical volume "/dev/sdc" successfully created.
[server root ~] # pvsPV VG Fmt Attr PSize PFree /dev/sdc lvm2 --- 10.00g 10.00g
二、创建卷组(VG)
1、vgcreate创建 卷组
[server root ~] # fdisk /dev/sdc -lDisk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x9c82f447Device Boot Start End Blocks Id System
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 6293503 2097152 83 Linux[server root ~] # pvcreate /dev/sdc1Physical volume "/dev/sdc1" successfully created.
[server root ~] # pvcreate /dev/sdc2Physical volume "/dev/sdc2" successfully created.
[server root ~] # pvsPV VG Fmt Attr PSize PFree/dev/sdc1 lvm2 --- 1.00g 1.00g/dev/sdc2 lvm2 --- 2.00g 2.00g
[server root ~] # vgcreate vg1 /dev/sdc1Volume group "vg1" successfully created
[server root ~] # vgcreate vg2 /dev/sdc2 Volume group "vg2" successfully created
[server root ~] #
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg1 1 0 0 wz--n- 1020.00m 1020.00mvg2 1 0 0 wz--n- <2.00g <2.00g
[server root ~] # pvsPV VG Fmt Attr PSize PFree /dev/sdc1 vg1 lvm2 a-- 1020.00m 1020.00m/dev/sdc2 vg2 lvm2 a-- <2.00g <2.00g
vg卷组的删除(如果vg上有逻辑卷在使用,那么vg无法删除)
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg1 1 0 0 wz--n- 1020.00m 1020.00mvg2 1 0 0 wz--n- <2.00g <2.00g
[server root ~] # vgremove vg1Volume group "vg1" successfully removed
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg2 1 0 0 wz--n- <2.00g <2.00g
[server root ~] # vgremove vg2Volume group "vg2" successfully removed
[server root ~] # vgs
[server root ~] #
2、vg卷组的扩容
# 在 /dev/sdc3 物理卷(PV)上创建了一个名为 vg2 的卷组(VG)
[server root ~] # vgcreate vg2 /dev/sdc3Physical volume "/dev/sdc3" successfully created.Volume group "vg2" successfully created# pvs查看物理卷,vgs查看卷组信息
[server root ~] # pvsPV VG Fmt Attr PSize PFree /dev/sdc1 lvm2 --- 1.00g 1.00g/dev/sdc2 lvm2 --- 2.00g 2.00g/dev/sdc3 vg2 lvm2 a-- <3.00g <3.00g
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg2 1 0 0 wz--n- <3.00g <3.00g
# VG:卷组名称
# #PV:物理卷数量
# #LV:逻辑卷数量
# #SN:快照数量
# Attr:属性wz--n-:这是卷组的属性,表示该卷组的状态和特性:w:表示该卷组是可写的(writable)。z:表示该卷组处于正常状态,没有错误。--:表示没有设置其他特别的标志。n:表示该卷组是可扩展的(可以添加更多物理卷)。-:表示没有设置其他标志。
# VSize:卷组的总大小
# VFree:卷组的剩余空间# 将 /dev/sdc1 扩展到卷组 vg2,即把 /dev/sdc1 纳入 vg2 卷组进行管理
[server root ~] # vgextend vg2 /dev/sdc1Volume group "vg2" successfully extended
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFreevg2 2 0 0 wz--n- 3.99g 3.99g
[server root ~] # # 删除旧的卷组,创建新的卷组 vg2,并将 /dev/sdc1 作为物理卷(PV)添加进这个卷组。
# -s 8M 参数指定了物理扩展(PE)的大小为 8MB
[server root ~] # vgremove vg2Volume group "vg2" successfully removed
[server root ~] #
[server root ~] # vgs
[server root ~] # vgcreate vg2 /dev/sdc1 -s 8MVolume group "vg2" successfully created
[server root ~] # vgdisplay vg2--- Volume group ---VG Name vg2System ID Format lvm2Metadata Areas 1Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 1Act PV 1VG Size 1016.00 MiBPE Size 8.00 MiBTotal PE 127Alloc PE / Size 0 / 0 Free PE / Size 127 / 1016.00 MiBVG UUID 2l9GEi-6Kiw-RdcQ-vF9G-zKMx-B2y2-Pt8RnB
三、创建逻辑卷(LV)
1、lvcreate 命令创建语法
lvcreate -n 逻辑卷名字 -L 大小为多少 卷组名
-n 表示逻辑卷的名字
-L 表示逻辑卷的大小
vg2 表示使用卷组vg2创建该逻辑卷
# 现在卷组只有一个,大小是1016M,没有相关逻辑卷的信息
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg2 1 0 0 wz--n- 1016.00m 1016.00m
[server root ~] # lvs# 创建一个逻辑卷lv1,大小为300M
[server root ~] # lvcreate -n lv1 -L 300M vg2Rounding up size to full physical extent 304.00 MiBLogical volume "lv1" created.
[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1 vg2 -wi-a----- 304.00m
[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1 vg2 -wi-a----- 304.00m
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg2 1 1 0 wz--n- 1016.00m 712.00m# 创建lv2逻辑卷,大小为800M
[server root ~] # lvcreate -n lv2 -L 800M vg2Volume group "vg2" has insufficient free space (89 extents): 100 required.
# 卷组总大小只有1016M,剩余712M,所有创建报错了,需要扩容vg2卷组[server root ~] # vgextend vg2 /dev/sdc3Volume group "vg2" successfully extended# #PV变为2,表示现在卷组vg2包含了2个物理卷
# VSize增加为3.98GB,VFree也增加为大约3.69GB。
[server root ~] # vgsVG #PV #LV #SN Attr VSize VFree vg2 2 1 0 wz--n- 3.98g <3.69g# 再次创建逻辑卷lv2,大小为800MB
[server root ~] # lvcreate -n lv2 -L 800M vg2Logical volume "lv2" created.
[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1 vg2 -wi-a----- 304.00m lv2 vg2 -wi-a----- 800.00m
[server root ~] #
2、逻辑卷格式化
逻辑卷创建完成之后,可以直接格式化成为文件系统使用
如果卷组下面创建了一个新的逻辑卷,那么该逻辑卷就会自动的在设备文件路径出现/dev/vgname/lvname
[server root ~] # ls /dev/vgs2
ls: cannot access /dev/vgs2: No such file or directory
[server root ~] # ls /dev/vg2
lv1 lv2
[server root ~] # ls /dev/vg2/ -l
total 0
lrwxrwxrwx 1 root root 7 Nov 26 16:18 lv1 -> ../dm-0
lrwxrwxrwx 1 root root 7 Nov 27 08:33 lv2 -> ../dm-1
[server root ~] # ls -l /dev/dm-1 /dev/dm-1
brw-rw---- 1 root disk 253, 1 Nov 27 08:33 /dev/dm-1
brw-rw---- 1 root disk 253, 1 Nov 27 08:33 /dev/dm-1
# dm设备就表示逻辑卷的本尊。dm全拼是device mapper[server root ~] # ls /dev/mapper/ -l
total 0
crw------- 1 root root 10, 236 Nov 26 16:18 control
lrwxrwxrwx 1 root root 7 Nov 26 16:18 vg2-lv1 -> ../dm-0
lrwxrwxrwx 1 root root 7 Nov 27 08:33 vg2-lv2 -> ../dm-1# 列出了通过 UUID(通用唯一标识符)标识的磁盘分区和设备的符号链接
# /dev/disk/by-uuid/ 是一个符号链接目录,它包含了每个磁盘分区(包括硬盘、固态硬盘、光驱等)的 UUID 与设备节点之间的映射。UUID 是一种唯一标识符,用于标识磁盘分区,而不是基于设备名称(如 /dev/sda1)来识别分区
[server root ~] # ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 9 Nov 26 10:57 2022-07-26-15-09-17-00 -> ../../sr0
lrwxrwxrwx 1 root root 10 Nov 26 10:57 48826076-975a-4d59-bf1a-5b1004e96f29 -> ../../sda2
lrwxrwxrwx 1 root root 10 Nov 26 10:57 4f4fe896-0d9e-4298-a6db-e0e314775bf0 -> ../../sdb6
lrwxrwxrwx 1 root root 10 Nov 26 10:57 51cbea6f-e37d-4ef5-a3f9-28a726c74085 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Nov 26 10:57 60a32a39-bdf6-4467-8893-3fc68045171b -> ../../sdb5
lrwxrwxrwx 1 root root 10 Nov 26 10:57 7f5b46d3-e0da-430a-97f2-2e6a19f9e4ff -> ../../sda3
lrwxrwxrwx 1 root root 10 Nov 26 10:57 ebaf11a7-f84f-4429-8df8-0ee0111e76e5 -> ../../sda1# mkfs.ext4格式化逻辑卷lv1
[server root ~] # mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
[server root ~] # mkfs.ext4 /dev/mapper/vg2-lv1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
77824 inodes, 311296 blocks
15564 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33947648
38 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done [server root ~] # ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 9 Nov 26 10:57 2022-07-26-15-09-17-00 -> ../../sr0
lrwxrwxrwx 1 root root 10 Nov 26 10:57 48826076-975a-4d59-bf1a-5b1004e96f29 -> ../../sda2
lrwxrwxrwx 1 root root 10 Nov 26 10:57 4f4fe896-0d9e-4298-a6db-e0e314775bf0 -> ../../sdb6
lrwxrwxrwx 1 root root 10 Nov 26 10:57 51cbea6f-e37d-4ef5-a3f9-28a726c74085 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Nov 26 10:57 60a32a39-bdf6-4467-8893-3fc68045171b -> ../../sdb5
lrwxrwxrwx 1 root root 10 Nov 26 10:57 7f5b46d3-e0da-430a-97f2-2e6a19f9e4ff -> ../../sda3
lrwxrwxrwx 1 root root 10 Nov 27 10:17 8aea89c0-606d-4942-adb6-0a8263d32515 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Nov 26 10:57 ebaf11a7-f84f-4429-8df8-0ee0111e76e5 -> ../../sda1
3、逻辑卷的删除
[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1 vg2 -wi-a----- 304.00m lv2 vg2 -wi-a----- 800.00m
[server root ~] # lvremove lv2Volume group "lv2" not foundCannot process volume group lv2
[server root ~] # lvremove /dev/vg2/lv2
Do you really want to remove active logical volume vg2/lv2? [y/n]: yLogical volume "lv2" successfully removed
[server root ~] # lvremove /dev/vg2/lv1
Do you really want to remove active logical volume vg2/lv1? [y/n]: yLogical volume "lv1" successfully removed
[server root ~] # lvs
[server root ~] #
4、逻辑卷的扩容
# 创建大小为200M的lv1-ext4逻辑卷
[server root ~] # lvcreate -n lv1-ext4 vg2 -L 200M
WARNING: ext4 signature detected on /dev/vg2/lv1-ext4 at offset 1080. Wipe it? [y/n]: YWiping ext4 signature on /dev/vg2/lv1-ext4.Logical volume "lv1-ext4" created.[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1-ext4 vg2 -wi-a----- 200.00m # 创建大小为500M的lv2-xfs 逻辑卷
[server root ~] # lvcreate -n lv2-xfs vg2 -L 500MRounding up size to full physical extent 504.00 MiBLogical volume "lv2-xfs" created.[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1-ext4 vg2 -wi-a----- 200.00m lv2-xfs vg2 -wi-a----- 504.00m# 格式化lv1-ext4的逻辑卷
[server root ~] # mkfs.ext4 /dev/vg2/lv1-ext4
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done # 格式化lv2-xfs的逻辑卷
[server root ~] # mkfs.xfs /dev/vg2/lv2-xfs
meta-data=/dev/vg2/lv2-xfs isize=512 agcount=4, agsize=32256 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=129024, 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# 创建目录并挂载
[server root ~] # mkdir /ext4-test /xfs-test
[server root ~] # mount -t ext4 /dev/vg2/lv1-ext4 /ext4-test/
[server root ~] # mount /dev/vg2/lv2-xfs /xfs-test/
[server root ~] #
[server root ~] # df -Th /xfs-test/ /ext4-test/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg2-lv2--xfs xfs 501M 26M 476M 6% /xfs-test
/dev/mapper/vg2-lv1--ext4 ext4 190M 1.6M 175M 1% /ext4-test# 通过dd命令写入数据
[server root ~] # dd if=/dev/zero of=/xfs-test/file
dd: writing to ‘/xfs-test/file’: No space left on device
973257+0 records in
973256+0 records out
498307072 bytes (498 MB) copied, 6.33404 s, 78.7 MB/s
[server root ~] # dd if=/dev/zero of=/ext4-test/file
dd: writing to ‘/ext4-test/file’: No space left on device
377177+0 records in
377176+0 records out
193114112 bytes (193 MB) copied, 3.09574 s, 62.4 MB/s# 查看磁盘空间直接写满了,此时无法在对应目录下创建文件相关操作
[server root ~] # df -Th /xfs-test/ /ext4-test/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg2-lv2--xfs xfs 501M 501M 20K 100% /xfs-test
/dev/mapper/vg2-lv1--ext4 ext4 190M 186M 0 100% /ext4-test
[server root ~] #
在线扩容,在线扩容是指的文件系统不能卸载文件.
# 将lv1-ext4扩容到300M
# 将lv2-xfs扩容到700M
[server root ~] # lvextend /dev/vg2/lv1-ext4 -L 300MRounding size to boundary between physical extents: 304.00 MiB.Size of logical volume vg2/lv1-ext4 changed from 200.00 MiB (25 extents) to 304.00 MiB (38 extents).Logical volume vg2/lv1-ext4 successfully resized.
[server root ~] # lvextend /dev/vg2/lv2-xfs -L 700MRounding size to boundary between physical extents: 704.00 MiB.Size of logical volume vg2/lv2-xfs changed from 504.00 MiB (63 extents) to 704.00 MiB (88 extents).Logical volume vg2/lv2-xfs successfully resized.
[server root ~] # lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1-ext4 vg2 -wi-ao---- 304.00m lv2-xfs vg2 -wi-ao---- 704.00m
[server root ~] # df -Th /ext4-test /xfs-test
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg2-lv1--ext4 ext4 190M 186M 0 100% /ext4-test
/dev/mapper/vg2-lv2--xfs xfs 501M 501M 20K 100% /xfs-test#因为扩容的部分没有格式化,所以文件系统没有检测不到
# ext4将文件系统加入到系统操作
[server root ~] # resize2fs /dev/vg2/lv1-ext4
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg2/lv1-ext4 is mounted on /ext4-test; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/vg2/lv1-ext4 is now 311296 blocks long.[server root ~] # df -Th /ext4-test/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg2-lv1--ext4 ext4 291M 187M 87M 69% /ext4-test# xfs将文件系统加入到系统操作
[server root ~] # xfs_
xfs_admin xfs_db xfs_fsr xfs_io xfs_metadump xfs_quota
xfs_bmap xfs_estimate xfs_growfs xfs_logprint xfs_mkfile xfs_repair
xfs_copy xfs_freeze xfs_info xfs_mdrestore xfs_ncheck xfs_rtcp
[server root ~] # xfs_growfs /dev/vg2/lv2-xfs
meta-data=/dev/mapper/vg2-lv2--xfs isize=512 agcount=4, agsize=32256 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=129024, 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 129024 to 180224
[server root ~] # df -Th /xfs-test/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg2-lv2--xfs xfs 701M 501M 200M 72% /xfs-test
提示:我建议多操作几遍,加深对逻辑卷如何创建以及使用的理解!
好了下一篇文章见😁😁😁
相关文章:
Linux 如何创建逻辑卷并使用
一、逻辑卷的介绍 生成环境中逻辑卷使用率很高 逻辑卷的诞生:如果对磁盘直接使用fdisk分区,那么这中分区,我们叫做Linux的标准分区,Linux的标准分区格式化成文件系统之后,挂载使用,那么一旦文件系统的空间…...
laravel-operate
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear 1、查看artisan所有命令; php artisan list 2、查看命令描述及参数和选项; php artisan(n.工匠、技工) help migration&…...
探索Python WebSocket新境界:picows库揭秘
文章目录 探索Python WebSocket新境界:picows库揭秘第一部分:背景介绍第二部分:picows库概述第三部分:安装picows库第四部分:简单库函数使用方法第五部分:场景应用第六部分:常见Bug及解决方案第…...
海康VsionMaster学习笔记(学习工具+思路)
一、前言 VisionMaster算法平台集成机器视觉多种算法组件,适用多种应用场景,可快速组合算法,实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀,自带强大的视觉分析工具库,可…...
Java面试题、八股文——JVM篇最终篇
1.如何选择垃圾收集器? 选择合适的垃圾收集器(Garbage Collector, GC)对于优化Java应用程序的性能至关重要。不同的应用场景和系统需求可能需要不同类型的垃圾收集器来满足。以下是一些考虑因素以及常见的垃圾收集器选项,帮助您做…...
C++ 11重点总结2
1C11多线程 主要对少用的知识点进行详细描述,用的多的就给示例。照猫画虎 #include<thread> // 默认构造函数 thread() // 初始化构造函数 template<class Fn, class... Args> explicit thread(Fn&& fn, Args&&... args) // 移动构造…...
什么是 C++ 中的函数对象?它有什么特点?
在 C 中,函数对象(Function Object)是一种可调用对象,它允许像函数一样被调用,但实际上它可能并不是真正的函数。函数对象可以是以下几种类型之一: 普通函数: 一个普通的、定义在命名空间或类…...
Golang 反射
一、Go反射的应用场景 (一)对象序列化和反序列化 场景描述 在处理网络通信,数据存储等场景中,需要将对象转换为字节流(序列化)以便传输或存储,在接收端再将字节流转换回对象(反序列…...
hhdb数据库介绍(10-7)
OEM管理 为方便更换管理平台的产品Logo以及产品名称信息。引入“OEM管理功能”对外提供可视化更新Logo以及产品名称信息的入口。 功能入口: 具有管理权限的用户登录平台,通过 OEM管理的超链接进入功能页面,超链接路径需要在原访问页面url的…...
RabbitMQ的预取值详解
RabbitMQ的预取值(Prefetch Value)是一个关键概念,它决定了消费者在从队列中获取消息时,一次性可以获取的消息数量。这一机制对于优化消息分发和消费者的负载均衡至关重要。 什么是RabbitMQ的预取值? 预取值是指消费者…...
mysql 触发器进入历史
一、触发器 MySQL 触发器(Triggers)是一种数据库对象,它与表关联,能在特定的事件(如插入、更新或删除)发生时自动执行一些指定的操作。使用触发器可以帮助我们自动维护数据库的完整性、一致性,…...
通过数巅能源大模型降本增效
在能源行业中,数据的有效利用对于企业的决策和运营至关重要。随着业务的发展,企业面临着数据分散、数据分析效率低、报告生成耗时等问题,制约了企业的发展和竞争力的提升。 数巅能源大模型解决方案 数巅科技推出了能源大模型解决方案&#x…...
如何编写出色的技术文档
目录 编辑 1. 明确文档目的和受众 目的的重要性 了解受众 2. 收集和组织信息 信息收集的技巧 组织信息 3. 规划文档结构 结构规划的重要性 结构规划的步骤 4. 编写内容 语言和风格 内容的组织 编写技巧 5. 审阅和测试 审阅的重要性 测试的必要性 6. 版本控…...
摄像头原始数据读取——gstreamer(gst_parse_launch)
摄像头原始数据读取——gstreamer(gst_parse_launch) #include <stdio.h> #include <string.h> #include <stdlib.h>#ifdef __cplusplus extern "C" { #endif#include <gst/gst.h>#ifdef __cplusplus }; #endifstatic gboolean bus_msg_tim…...
矩阵/矩阵乘法/特征值/特征向量的讲解
线性代数里有很多的概念,很多概念是有几何意义的,了解了几何意义可能会更好的理解各种概念及其相互之间的关系。 矩阵: 矩阵是一个变换,一个坐标系到另一个坐标系的变换。矩阵里的各个参数,代表了如何进行变换。 矩阵…...
docker-compose搭建xxl-job、mysql
docker-compose搭建xxl-job、mysql 1、搭建docker以及docker-compose2、下载xxl-job需要数据库脚本3、创建文件夹以及docker-compose文件4、坑来了5、正确配置6、验证-运行成功 1、搭建docker以及docker-compose 略 2、下载xxl-job需要数据库脚本 下载地址:https…...
《图像形态学运算全解析:原理、语法及示例展示》
简介: 本文详细介绍了图像形态学中的多种运算,包括腐蚀、膨胀、开运算、闭运算、形态学梯度运算、礼帽运算以及黑帽运算。分别阐述了各运算的原理、语法格式,并通过 Python 代码结合具体示例图片(如erode.JPG、dilate.JPG、close.…...
【面试分享】C++ 中结构体(struct)和类(class)的区别
在 C中,结构体(struct)和类(class)有一些相似之处,但也存在一些重要的区别: 一、默认访问权限 结构体: 在 C中,结构体的默认成员访问权限是public(公有&…...
Rk3588 onnx转rknn,出现 No module named ‘rknn‘
一、操作步骤: rk3588 需要将yolo11 的模型onnx转rknn。 https://github.com/airockchip/rknn_model_zoo/tree/main/examples/yolo11 这个是用yolo11训练的模型,有80种类型。 完整下载下来后,在按文档描述下载模型下来: 然后进…...
HarmonyOS:@Provide装饰器和@Consume装饰器:与后代组件双向同步
一、前言 Provide和Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,Provide和Consume摆脱参数传递机制的束缚,实现跨层级传递。 其中Provi…...
在并发情况下,Elasticsearch如果保证读写一致?
大家好,我是锋哥。今天分享关于【在并发情况下,Elasticsearch如果保证读写一致?】面试题。希望对大家有帮助; 在并发情况下,Elasticsearch如果保证读写一致? 1000道 互联网大厂Java工程师 精选面试题-Java…...
通过 SSH 进行WordPress网站的高级服务器管理
我在管理hostease的服务器时,时常需要通过SSH登录服务器进行修改。而在网站管理中,SSH不仅是一个基础工具,更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH,你可以深入监控服务器的性能、精细管理系统资源,…...
关闭AWS账号后,服务是否仍会继续运行?
在使用亚马逊网络服务(AWS)时,用户有时可能会考虑关闭自己的AWS账户。这可能是因为项目结束、费用过高,或是转向使用其他云服务平台。然而,许多人对关闭账户后的服务状态感到困惑,我们九河云和大家一起探讨…...
PostgreSQL数据库参数调优实践
PostgreSQL(简称PG)数据库的性能调优是一个复杂但至关重要的过程,特别是在处理大量数据和复杂查询时。通过合理设置和调整数据库参数,可以显著提升数据库的性能和响应速度。本文将从多个方面详细介绍PostgreSQL数据库参数调优的实…...
Leetcode - 144双周赛
目录 一,3360. 移除石头游戏 二,3361. 两个字符串的切换距离 三,3362. 零数组变换 III 四,3363. 最多可收集的水果数目 一,3360. 移除石头游戏 本题直接模拟过程,可以额外使用一个布尔变量标记谁赢&…...
微信小程序全局配置:TabBar与页面配置详解
微信小程序全局配置:TabBar与页面配置详解 引言 随着移动互联网的迅猛发展,微信小程序作为一种新兴的应用形式,因其便捷性和丰富的功能而受到广泛欢迎。在小程序的开发过程中,全局配置是非常重要的一环,尤其是tabBar和页面的配置。本文将深入探讨微信小程序的全局配置,…...
Linux创建免密登陆(错误:Permission denied (publickey,gssapi-keyex,gssapi-with-mic))
报错截图 解决方法 1. mkdir -p ~/.ssh 2. chmod 700 ~/.ssh 3. ssh-keygen,一直回车 4. chmod 600 /root/.ssh/id_rsa 5. 将公钥内容追加到服务器上,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 6. chmod 600 ~/.ssh/authorized_keys…...
机器学习深掘临床研究中小分子代谢标志物的探索与应用
摘要 随着生命科学的发展,小分子生物标志物在临床研究中的作用日益凸显。机器学习技术为挖掘小分子生物标志物提供了强大工具。本文介绍了小分子生物标志物的定义、分类及在临床医学中的应用,阐述了常用机器学习算法在生物标志物挖掘中的优势࿰…...
计算机网络 第4章 网络层
计算机网络 (第八版)谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2:IP数据报分片与重组题目:计算IP数据报的首部校验和(不正确未改) …...
Android按键点击事件三种实现方法
1. 在xml文件中为 Button 添加android:onclick属性 由于没有onclick这个函数,onclick下面会提示红色波浪线错误,然后单击一下"onclick"按住键盘上AltEnter键,选择在activity中生成函数 public void onclick(View view) {Toast.makeText(this,&…...
微信小程序中会议列表页面的前后端实现
题外话:想通过集成腾讯IM来解决即时聊天的问题,如果含语音视频,腾讯组件一年5万起步,贵了!后面我们改为自己实现这个功能,这里只是个总结而已。 图文会诊需求 首先是个图文列表界面 同个界面可以查看具体…...
决策树——基于乳腺癌数据集与cpu数据集实现
决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …...
2024年11月24日Github流行趋势
项目名称:FreeCAD 项目维护者:wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍:FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数:20,875项目fork数:4,117 项目名称࿱…...
库的操作.
创建、删除数据库 创建语法: CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项,IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库,假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...
Go错误与日志处理—推荐实践
错误的分类 在 Go 语言中,错误是通过实现 error 接口的类型表示的,但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类,以及每类错误的解释和示例: 标准错误类型 标准库中定义了许多常见的错误类型&…...
文件上传upload-labs-docker通关
(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…...
C语言——数组基本知识(一)
目录 一.一维数组的初始化 二.数组的排序 ①冒泡排序: 代码: 没有第二个for循环运行结果如下: 正确的运行结果如下: ②选择排序 代码如下: 运行结果如图: 往期回顾: 一.一维数组的初始…...
vue2日历组件
【效果图】 <template><div style"width: 100%"><!-- <div> --><!-- <div>{{ startDate.getMonth() 1 - startDate.getDate() }}</div><div>{{ endDate.getMonth() 1 - endDate.getDate() }}</div> --&g…...
Unity C# 影响性能的坑点
c用的时间长了怕unity的坑忘了,记录一下。 GetComponent最好使用GetComponent<T>()的形式, 继承自Monobehaviour的函数要避免空的Awake()、Start()、Update()、FixedUpdate().这些空回调会造成性能浪费 GetComponent方法最好避免在Update当中使用…...
Redis(概念、IO模型、多路选择算法、安装和启停)
一、概念 关系型数据库是典型的行存储数据库,存在的问题是,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。 Redis在生产中使用的最多的是用作数据缓存。 服务器先在缓存中查询数据,查到则返回,…...
多线程
线程是什么? 1、线程是进程的执行分支,一个进程内部的控制程序 2、一个进程至少有一个执行线程 3、从CPU角度来看,线程就是一个更轻量化的线程 4、线程在进程内部运行,所以本质就是在进程地址空间上运行 注意: 一…...
Spring Boot林业产品推荐系统:用户指南
摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此林业产品销售信…...
计算机网络 实验八 应用层相关协议分析
一、实验目的 熟悉CMailServer邮件服务软件和Outlook Express客户端软件的基本配置与使用;分析SMTP及POP3协议报文格式和SMTP及POP3协议的工作过程。 二、实验原理 为了观察到邮件发送的全部过程,需要在本地计算机上配置邮件服务器和客户代理。在这里我…...
实战ansible-playbook:Ansible Vault加密敏感数据(三)
在实际生产环境中,使用 Ansible Vault 来加密敏感数据是一种常见的做法。以下是一个详细的步骤和实际生产环境的使用案例,展示如何使用 Ansible Vault 来加密和管理敏感数据。 1. 安装 Ansible 确保你已经安装了 Ansible。如果还没有安装,可以使用以下命令进行安装: # 在…...
oracle 12c查看执行过的sql及当前正在执行的sql
V$SQL 提供了已经执行过及正在执行的SQL语句的信息。 一 查看共享池中所有sql的统计信息 #统计共享池中某类sql执行次数,总体执行时长,平均执行时长等信息,并按总体执行时长降序排序 SELECT INST_ID,SQL_ID,SQL_TEXT,SQL_FULLTEXT,EXECUTI…...
【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…...
CSS:怎么把网站都变成灰色
当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...
Maven 常用命令
Maven 是一个强大的构建自动化工具,主要用于 Java 项目的管理和构建。 理解 Maven 命令对于高效管理与构建您的 Java 项目至关重要。 在本篇博客中,我们将探索每个 Java 开发者都应该掌握的一些最重要的 Maven 命令。 1. 设置 Maven 在深入探讨 Mave…...
【算法day1】数组:双指针算法
题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜…...
CTF之密码学(DES)
一、基本原理 DES加密使用相同的密钥进行加密和解密操作。它使用一个56位的密钥(另外8位为奇偶校验位,不直接参与加密过程,因此实际密钥长度为56位),对64位的数据块进行加密,得到64位的密文。加密过程主要…...