• LVM 原理及动态调整空间使用


    lvm 原理

    ===================

    lvm 逻辑卷技术
    RAID磁盘阵列技术,提高硬盘的读写效率,以及数据的安全,RAID 的缺点在于
    -当你配置好了 RAID 磁盘阵列组,容量的大小,已经是限定了,如果你存储的业务非常多,磁盘容量不够用的问题就会出现,你想就会非常痛苦,麻烦。
    -不同的磁盘分区,相对都是独立的,没有任何的联系,可能空间利用率很低。
    - 如果某一个分区满了,默认磁盘管理是无法扩容的,只能重新的分区,重新分配容量大小,创建文件系统,很是麻烦。
    - 如果你要合并分区,还是得重新格式化磁盘分区,还得进行数据备份,麻烦!
    lvm (logical volume manager) 逻辑卷管理技术
    lvm技术他是将一个或多个硬盘在逻辑上进行了合并,相当于一个大的硬盘去使用,当你的硬盘空间不够了的话,可以直接去其他硬盘中拿来容量去使用,这就是一个动态的磁盘容量管理技术。
    lvm相对于普通的磁盘分区,有较大的灵活性,当一个磁盘空间不够了,可能就会造成很多的麻烦。

    lvm 的使用方法

    - 基于分区形式创建 lvm
    硬盘的多个分区,由 lvm 统一进行管理为卷组,可以弹性的调整卷组大小,加入新硬盘,可以充分的利用磁盘容量。
    文件系统是创建在逻辑卷上,逻辑卷可以根据需求改变大小(总容量控制在卷组中)
    - 基于硬盘创建 lvm
    多块硬盘做成逻辑卷,将整个逻辑卷统一管理,对分区进行动态的扩容,

    lvm 的常见名词:

    PP (physical partition),物理分区,lvm 直接创建在物理分区之上
    PV (physical volume) , 物理卷,处于 lvm 的最底层,一般一个 PV 对应一个 PP
    PE (physical extends) , 物理区域,PV中可以用于分配的最小存储单位,同一个VG所有的PV中的PE大小相同,例如 1M, ,2M
    VG (volume group) , 卷组,卷组创建在PV之上,可以划分为多个PV,
    LE(logical extends) , 逻辑扩展单元,LE是组成LV的基本单元,一个LE对应一个PE
    LV(logical volume) , 逻辑卷,创建在VG之上,是一个可以动态扩容的分区概念

    LVM 原理

    - lvm 动态扩容大小,其实就是通过互相交换 PE 的过程,达到能够弹性扩容分区大小
    - 想要减少空间容量,就是剔除 PE 的大小
    - 想要扩大容量,就是把其他的 PE 添加到自己的 LV当中
    - PE 默认大小一般都是 4M,LVM最多是可以创建出 65534 个 PE ,因此 LVM最大的 VG 卷组单位是 256GB
    - PE 其实是 LVM最小的存储单位,类似于操作系统的 block (4k)
    - LV逻辑卷的概念 (理解为普通的分区概念,/dev/sda /dev/sdb )

    LVM 动态调整空间使用

    ==========

    实际创建 LVM 的过程

    lvm 优点:

    - lvm 的文件系统可以跨越多个磁盘,分区大小不受磁盘容量限制
    - lvm 可以在系统运行中,直接动态扩容文件系统大小
    - lvm 可以直接增加新的硬盘,到 lvm 的 VG 卷组中

    lvm 创建流程:

    1.物理分区阶段,针对物理磁盘或者分区,进行 fdisk 格式化,修改系统的 id ,默认是 83 (十六进制类型) ,改为8e (动态)类型 ,是 lvm 类型
    2. PV 阶段,通过 pvcreate(创建),pvdisplay(显示) 将 linux 分区改为物理卷 PV
    3. 创建 VG 的阶段,通过 vgcreate(创建),vgdisplay(显示),将创建好的物理卷 PV 改为 物理卷组 VG
    4. 创建 LV 的阶段,通过 lvcreate(创建),lvdisplay(显示),将 物理卷组 VG,分为若干个 LV 逻辑卷

    转化为命令操作就是这样的过程:

    1. 使用 fdisk 命令,修改磁盘的系统 id
    2. 创建 PV,pvcreate(创建),以及显示 PV 信息 pvdisplay 也可以直接输入 pvs 查看简单 pv 的信息。
    3. 创建 VG 卷组,vgcreate(创建),vgs 显示 VG 卷组信息
    4. 创建 LV 逻辑卷,lvcreate(创建),lvs 显示 LV 逻辑卷信息
    5. 开始格式化文件系统,使用 LV 分区了

    LVM 的管理常见命令:

    PV 物理卷
    pvcreate 创建 PV 物理卷
    pvscan 扫描 PV 物理卷信息
    pvs 查看 PV 物理卷简单的信息
    pvdisplay 显示 PV 各个物理卷详细参数
    pvremove 删除 PV 物理卷

    LV 逻辑卷
    lvcreate 创建 LV 逻辑卷
    lvscan 扫描 LV 逻辑卷信息
    lvs 查看 LV 逻辑卷简单的信息
    lvdisplay 显示 LV 各个逻辑卷详细参数
    lvremove 删除 LV 逻辑卷
    lvreduce 缩小 LV 逻辑卷,把 VG 逻辑卷组从 LV 逻辑卷中移除
    lvextend 扩容 LV 逻辑卷,把某个新的 VG 逻辑卷组,加入到 LV 逻辑卷中

    VG 逻辑卷组
    vgcreate 创建 VG 逻辑卷组
    vgscan 扫描 VG 逻辑卷组信息
    vgs 查看 VG 逻辑卷组简单的信息
    vgdisplay 显示 VG 各个逻辑卷组详细参数
    vgremove 删除 VG 逻辑卷组 删除整个 VG 逻辑卷组
    vgreduce 缩小 VG 逻辑卷组,把物理卷从逻辑卷组中移除
    vgextend 扩容 VG 逻辑卷组,把某个新的 PV 物理卷,加入到 VG 逻辑卷组中

    ========

    实际创建 lvm 命令笔记:

    挑选 /dev/sdf /dev/sdg 两块硬盘,创建物理卷,然后添加至逻辑卷组
    1. 创建 PV 物理卷
    2. 创建 VG 逻辑卷组
    3. 可以分别查看 PV 和 VG 的信息 pvs pvscan pvdisplay vgs vgscan vgdisplay
    4. 尝试扩容,或者缩小 vg 逻辑卷组
    扩容命令:
    第一步:买来一块新硬盘,然后创建物理卷 命令 pvcreate /dev/sdh 检查一下物理卷的信息 命令 pvs
    第二步:把新创建的 sdh 物理卷,加入扩容到逻辑卷组 longchivg1 中 命令 vgextend longchivg1 /dev/sdh
    5. 显示一下卷组的信息,容量等 命令 vgdisplay
    6. 还可以缩小卷组的大小,剔除 /dev/sdh 命令 vgreduce longchivg1 /dev/sdh
    7. 删除 /dev/sdh 的物理卷 命令 pvremove /dev/sdh
    8. 使用此时的卷组(longchivg1),创建逻辑卷,进行使用 /dev/sdf /dev/sdg
    命令:lvcreate -n lv1 -L +2000M longchivg1
    参数详解:
    '-n ' 指定创建 LV 逻辑卷名称
    '-L' 指定创建 LV 逻辑卷大小
    9. 检查 LV 的信息 lvs lvdisplay
    10. 对刚创建的 lv1 逻辑卷进行格式化文件系统
    命令 mkfs.xfs /dev/longchivg1/lv1 (centos7) mkfs.ext4 /dev/longchivg1/lv1(ubuntu)
    11. 向 lv1 逻辑卷中,进行挂载,以及数据写入 (就可以当一个普通分区来使用了) mkdir longchi_lv1
    命令 root@longchi:~# mkdir /longchi_lv1 root@longchi:~# mount /dev/longchivg1/lv1 /longchi_lv1
    echo "/dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0" >> /etc/fstab
    将挂载信息,写入开机自动挂载文件(/etc/fstab)中,以后就不需要每次都 mount 了
    root@longchi:~# tail -1 /etc/fstab
    /dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0
    通过命令,直接读取 /etc/fstab ,自动挂载所有设备
    root@longchi:~# mount -l | grep lv1
    12. 向磁盘中写入数据,查看空间容量 echo {1..10000000} > /longchi_lv1/test.txt
    root@longchi:~# ls /longchi_lv1/
    lost+found test.txt test.txt.1 test.txt.2 test.txt.3
    root@longchi:~# df -hT
    向 /etc/fstab 文件中写入 开机自动挂载 命令
    echo "/dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0" >> /etc/fstab
    1. # 查看本机上包含sd的磁盘
    2. root@longchi:~# ls /dev/sd*
    3. /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi
    4. # 安装 lvm2 的命令: apt install lvm2
    5. root@longchi:~# pvcreate /dev/sdf /dev/sdg
    6. Command 'pvcreate' not found, but can be installed with:
    7. apt install lvm2
    8. root@longchi:~# apt install lvm2
    9. Reading package lists... Done
    10. Building dependency tree... Done
    11. Reading state information... Done
    12. The following package was automatically installed and is no longer required:
    13. crda
    14. Use 'apt autoremove' to remove it.
    15. The following additional packages will be installed:
    16. dmeventd libaio1 libdevmapper-event1.02.1 liblvm2cmd2.03 thin-provisioning-tools
    17. The following NEW packages will be installed:
    18. dmeventd libaio1 libdevmapper-event1.02.1 liblvm2cmd2.03 lvm2 thin-provisioning-tools
    19. 0 upgraded, 6 newly installed, 0 to remove and 29 not upgraded.
    20. Need to get 2395 kB of archives.
    21. After this operation, 8959 kB of additional disk space will be used.
    22. Do you want to continue? [Y/n] y
    23. Get:1 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libaio1 amd64 0.3.112-13build1 [7176 B]
    24. Get:2 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libdevmapper-event1.02.1 amd64 2:1.02.175-2.1ubuntu4 [12.6 kB]
    25. Get:3 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 liblvm2cmd2.03 amd64 2.03.11-2.1ubuntu4 [756 kB]
    26. Get:4 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 dmeventd amd64 2:1.02.175-2.1ubuntu4 [38.4 kB]
    27. Get:5 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 lvm2 amd64 2.03.11-2.1ubuntu4 [1154 kB]
    28. Get:6 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 thin-provisioning-tools amd64 0.9.0-2ubuntu1 [426 kB]
    29. Fetched 2395 kB in 4s (660 kB/s)
    30. Selecting previously unselected package libaio1:amd64.
    31. (Reading database ... 222217 files and directories currently installed.)
    32. Preparing to unpack .../0-libaio1_0.3.112-13build1_amd64.deb ...
    33. Progress: [ 0%] [........................................................................................................]
    34. Unpacking libaio1:amd64 (0.3.112-13build1) ...............................................................................]
    35. Selecting previously unselected package libdevmapper-event1.02.1:amd64....................................................]
    36. Preparing to unpack .../1-libdevmapper-event1.02.1_2%3a1.02.175-2.1ubuntu4_amd64.deb ...
    37. Unpacking libdevmapper-event1.02.1:amd64 (2:1.02.175-2.1ubuntu4) .........................................................]
    38. Selecting previously unselected package liblvm2cmd2.03:amd64..............................................................]
    39. Preparing to unpack .../2-liblvm2cmd2.03_2.03.11-2.1ubuntu4_amd64.deb ...
    40. Unpacking liblvm2cmd2.03:amd64 (2.03.11-2.1ubuntu4) ......................................................................]
    41. Selecting previously unselected package dmeventd..........................................................................]
    42. Preparing to unpack .../3-dmeventd_2%3a1.02.175-2.1ubuntu4_amd64.deb ...
    43. Unpacking dmeventd (2:1.02.175-2.1ubuntu4) ...#...........................................................................]
    44. Selecting previously unselected package lvm2.######.......................................................................]
    45. Preparing to unpack .../4-lvm2_2.03.11-2.1ubuntu4_amd64.deb ...
    46. Unpacking lvm2 (2.03.11-2.1ubuntu4) ...################...................................................................]
    47. Selecting previously unselected package thin-provisioning-tools...........................................................]
    48. Preparing to unpack .../5-thin-provisioning-tools_0.9.0-2ubuntu1_amd64.deb ...
    49. Unpacking thin-provisioning-tools (0.9.0-2ubuntu1) ...#########...........................................................]
    50. Setting up libdevmapper-event1.02.1:amd64 (2:1.02.175-2.1ubuntu4) ........................................................]
    51. Progress: [ 52%] [######################################################..................................................]
    52. Setting up libaio1:amd64 (0.3.112-13build1) ...#############################..............................................]
    53. Progress: [ 60%] [##############################################################..........................................]
    54. Setting up thin-provisioning-tools (0.9.0-2ubuntu1) ...#############################......................................]
    55. Progress: [ 68%] [######################################################################..................................]
    56. Setting up liblvm2cmd2.03:amd64 (2.03.11-2.1ubuntu4) ...####################################..............................]
    57. Progress: [ 76%] [###############################################################################.........................]
    58. Setting up dmeventd (2:1.02.175-2.1ubuntu4) ...######################################################.....................]
    59. Created symlink /etc/systemd/system/sockets.target.wants/dm-event.socket → /lib/systemd/system/dm-event.socket............]
    60. dm-event.service is a disabled or a static unit, not starting it.
    61. Setting up lvm2 (2.03.11-2.1ubuntu4) ...#####################################################################.............]
    62. update-initramfs: deferring update (trigger activated)###########################################################.........]
    63. Created symlink /etc/systemd/system/sysinit.target.wants/blk-availability.service → /lib/systemd/system/blk-availability.service.
    64. Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-monitor.service → /lib/systemd/system/lvm2-monitor.service.
    65. Created symlink /etc/systemd/system/sysinit.target.wants/lvm2-lvmpolld.socket → /lib/systemd/system/lvm2-lvmpolld.socket.
    66. Processing triggers for initramfs-tools (0.140ubuntu13.4) ...########################################################.....]
    67. update-initramfs: Generating /boot/initrd.img-6.5.0-18-generic
    68. Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
    69. Processing triggers for man-db (2.10.2-1) ...
    70. root@longchi:~#
    71. # 创建 PV 物理卷
    72. root@longchi:~# pvcreate /dev/sdf /dev/sdg
    73. Physical volume "/dev/sdf" successfully created.
    74. Physical volume "/dev/sdg" successfully created.
    75. root@longchi:~#
    76. # 创建 VG 逻辑卷组
    77. root@longchi:~# vgcreate longchivg1 /dev/sdf /dev/sdg
    78. Volume group "longchivg1" successfully created
    79. # 扫描一下 pv
    80. root@longchi:~# pvs
    81. PV VG Fmt Attr PSize PFree
    82. /dev/sdf longchivg1 lvm2 a-- <50.00g <50.00g
    83. /dev/sdg longchivg1 lvm2 a-- <50.00g <50.00g
    84. # 扫描一下详细信息 pv
    85. root@longchi:~# pvscan
    86. PV /dev/sdf VG longchivg1 lvm2 [<50.00 GiB / <50.00 GiB free]
    87. PV /dev/sdg VG longchivg1 lvm2 [<50.00 GiB / <50.00 GiB free]
    88. Total: 2 [99.99 GiB] / in use: 2 [99.99 GiB] / in no VG: 0 [0 ]
    89. # 扫描一下 vg
    90. root@longchi:~# vgs
    91. VG #PV #LV #SN Attr VSize VFree
    92. longchivg1 2 0 0 wz--n- 99.99g 99.99g
    93. # 扫描一下详细信息 vg
    94. root@longchi:~# vgscan
    95. Found volume group "longchivg1" using metadata type lvm2
    96. # 显示 PV 的详细信息
    97. root@longchi:~# pvdisplay
    98. --- Physical volume ---
    99. PV Name /dev/sdf
    100. VG Name longchivg1
    101. PV Size 50.00 GiB / not usable 4.00 MiB
    102. Allocatable yes
    103. PE Size 4.00 MiB
    104. Total PE 12799
    105. Free PE 12799
    106. Allocated PE 0
    107. PV UUID elO3gs-Wp6T-16vO-813s-0RuF-zOUK-UO2wpL
    108. --- Physical volume ---
    109. PV Name /dev/sdg
    110. VG Name longchivg1
    111. PV Size 50.00 GiB / not usable 4.00 MiB
    112. Allocatable yes
    113. PE Size 4.00 MiB
    114. Total PE 12799
    115. Free PE 12799
    116. Allocated PE 0
    117. PV UUID Hi2Fdu-OP7S-nZKD-Yq0v-DBDC-ofxf-NCXBXf
    118. root@longchi:~#
    119. # 显示 VG 详细信息
    120. root@longchi:~# vgdisplay
    121. --- Volume group ---
    122. VG Name longchivg1
    123. System ID
    124. Format lvm2
    125. Metadata Areas 2
    126. Metadata Sequence No 1
    127. VG Access read/write
    128. VG Status resizable
    129. MAX LV 0
    130. Cur LV 0
    131. Open LV 0
    132. Max PV 0
    133. Cur PV 2
    134. Act PV 2
    135. VG Size 99.99 GiB
    136. PE Size 4.00 MiB
    137. Total PE 25598
    138. Alloc PE / Size 0 / 0
    139. Free PE / Size 25598 / 99.99 GiB
    140. VG UUID c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
    141. # 创建 PV 物理卷
    142. root@longchi:~# pvcreate /dev/sdh
    143. Physical volume "/dev/sdh" successfully created.
    144. root@longchi:~# pvs
    145. PV VG Fmt Attr PSize PFree
    146. /dev/sdf longchivg1 lvm2 a-- <50.00g <50.00g
    147. /dev/sdg longchivg1 lvm2 a-- <50.00g <50.00g
    148. /dev/sdh lvm2 --- 50.00g 50.00g
    149. # 扩容,将 /dev/sdh 添加到 longchivg1 逻辑卷组中
    150. root@longchi:~# vgextend longchivg1 /dev/sdh
    151. Volume group "longchivg1" successfully extended
    152. # 显示一下卷组的信息,容量等 命令 vgdisplay
    153. root@longchi:~# vgdisplay
    154. --- Volume group ---
    155. VG Name longchivg1
    156. System ID
    157. Format lvm2
    158. Metadata Areas 3
    159. Metadata Sequence No 2
    160. VG Access read/write
    161. VG Status resizable
    162. MAX LV 0
    163. Cur LV 0
    164. Open LV 0
    165. Max PV 0
    166. Cur PV 3
    167. Act PV 3
    168. VG Size <149.99 GiB
    169. PE Size 4.00 MiB
    170. Total PE 38397
    171. Alloc PE / Size 0 / 0
    172. Free PE / Size 38397 / <149.99 GiB
    173. VG UUID c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
    174. # 还可以缩小卷组的大小,剔除 /dev/sdh 命令 vgreduce longchivg1 /dev/sdh
    175. root@longchi:~# vgreduce longchivg1 /dev/sdh
    176. Removed "/dev/sdh" from volume group "longchivg1"
    177. # 删除 /dev/sdh 的物理卷 命令 pvremove /dev/sdh
    178. root@longchi:~# pvremove /dev/sdh
    179. Labels on physical volume "/dev/sdh" successfully wiped.
    180. # 显示一下物理卷信息 pvs
    181. root@longchi:~# pvs
    182. PV VG Fmt Attr PSize PFree
    183. /dev/sdf longchivg1 lvm2 a-- <50.00g <50.00g
    184. /dev/sdg longchivg1 lvm2 a-- <50.00g <50.00g
    185. # 使用此时的卷组,创建逻辑卷 LV,进行使用 /dev/sdf /dev/sdg
    186. # 查看一下此时的 VG 逻辑卷组 命令 vgs vgdisplay
    187. root@longchi:~# vgs
    188. VG #PV #LV #SN Attr VSize VFree
    189. longchivg1 2 0 0 wz--n- 99.99g 99.99g
    190. root@longchi:~# vgdisplay
    191. --- Volume group ---
    192. VG Name longchivg1
    193. System ID
    194. Format lvm2
    195. Metadata Areas 2
    196. Metadata Sequence No 3
    197. VG Access read/write
    198. VG Status resizable
    199. MAX LV 0
    200. Cur LV 0
    201. Open LV 0
    202. Max PV 0
    203. Cur PV 2
    204. Act PV 2
    205. VG Size 99.99 GiB
    206. PE Size 4.00 MiB
    207. Total PE 25598
    208. Alloc PE / Size 0 / 0
    209. Free PE / Size 25598 / 99.99 GiB
    210. VG UUID c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
    211. # 使用此时的卷组(longchivg1),创建逻辑卷 lv1,进行使用 /dev/sdf /dev/sdg
    212. root@longchi:~# lvcreate -n lv1 -L +2000M longchivg1
    213. Logical volume "lv1" created.
    214. root@longchi:~#
    215. # 查看 LV 逻辑卷
    216. root@longchi:~# lvs
    217. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    218. lv1 longchivg1 -wi-a----- 1.95g
    219. root@longchi:~# lvdisplay
    220. --- Logical volume ---
    221. LV Path /dev/longchivg1/lv1
    222. LV Name lv1
    223. VG Name longchivg1
    224. LV UUID ybbxnA-Xq66-vjhX-CKUb-mJFu-e0jX-2l0pkW
    225. LV Write Access read/write
    226. LV Creation host, time longchi, 2024-02-22 23:22:01 -0800
    227. LV Status available
    228. # open 0
    229. LV Size 1.95 GiB
    230. Current LE 500
    231. Segments 1
    232. Allocation inherit
    233. Read ahead sectors auto
    234. - currently set to 256
    235. Block device 252:0
    236. # 对刚创建的 lv1 逻辑卷进行格式化文件系统
    237. root@longchi:~# mkfs.ext4 /dev/longchivg1/lv1
    238. mke2fs 1.46.5 (30-Dec-2021)
    239. Creating filesystem with 512000 4k blocks and 128000 inodes
    240. Filesystem UUID: d20c97ba-258d-47a4-a94c-890c314650f4
    241. Superblock backups stored on blocks:
    242. 32768, 98304, 163840, 229376, 294912
    243. Allocating group tables: done
    244. Writing inode tables: done
    245. Creating journal (8192 blocks): done
    246. Writing superblocks and filesystem accounting information: done
    247. root@longchi:~# lsblk -f | grep sd
    248. sda
    249. |-sda1
    250. |-sda2 vfat FAT32 FEB1-E722 505.9M 1% /boot/efi
    251. `-sda3 ext4 1d8e3f92-eeaf-4cde-a566-1c7eea428509 81.5G /var/snap/firefox/common/host-hunspell
    252. sdb linux_raid_member 1.2 longchi:0 e79936a0-022f-080e-fcfc-7e5ff2114b46
    253. sdc linux_raid_member 1.2 longchi:0 e79936a0-022f-080e-fcfc-7e5ff2114b46
    254. sdd linux_raid_member 1.2 longchi:0 e79936a0-022f-080e-fcfc-7e5ff2114b46
    255. sde linux_raid_member 1.2 longchi:0 e79936a0-022f-080e-fcfc-7e5ff2114b46
    256. sdf LVM2_member LVM2 001 elO3gs-Wp6T-16vO-813s-0RuF-zOUK-UO2wpL
    257. sdg LVM2_member LVM2 001 Hi2Fdu-OP7S-nZKD-Yq0v-DBDC-ofxf-NCXBXf
    258. sdh
    259. sdi
    260. # 向磁盘中写入数据,查看空间容量
    261. # 向 lv1 逻辑卷中,进行挂载,以及数据写入 (就可以当一个普通分区来使用了)
    262. root@longchi:~# mkdir /longchi_lv1
    263. root@longchi:~# mount /dev/longchivg1/lv1 /longchi_lv1
    264. root@longchi:~#
    265. # 查看所有的挂载信息
    266. root@longchi:~# df -hT
    267. Filesystem Type Size Used Avail Use% Mounted on
    268. tmpfs tmpfs 790M 1.9M 788M 1% /run
    269. /dev/sda3 ext4 98G 11G 82G 12% /
    270. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    271. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    272. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    273. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    274. /dev/mapper/longchivg1-lv1 ext4 1.9G 24K 1.8G 1% /longchi_lv1
    275. # 向磁盘中写入数据,查看空间容量
    276. root@longchi:~# echo {1..10000000} > /longchi_lv1/test.txt
    277. root@longchi:~# df -hT
    278. Filesystem Type Size Used Avail Use% Mounted on
    279. tmpfs tmpfs 790M 1.9M 788M 1% /run
    280. /dev/sda3 ext4 98G 11G 82G 12% /
    281. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    282. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    283. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    284. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    285. /dev/mapper/longchivg1-lv1 ext4 1.9G 76M 1.7G 5% /longchi_lv1
    286. root@longchi:~# cd /longchi_lv1
    287. root@longchi:/longchi_lv1# ls
    288. lost+found test.txt
    289. root@longchi:/longchi_lv1# cp test.txt test.txt.1
    290. root@longchi:/longchi_lv1# cp test.txt test.txt.2
    291. root@longchi:/longchi_lv1# cp test.txt test.txt.3
    292. root@longchi:/longchi_lv1#
    293. root@longchi:/longchi_lv1# df -hT
    294. 文件系统 类型 容量 已用 可用 已用% 挂载点
    295. Filesystem Type Size Used Avail Use% Mounted on
    296. tmpfs tmpfs 790M 1.9M 788M 1% /run
    297. /dev/sda3 ext4 98G 11G 82G 12% /
    298. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    299. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    300. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    301. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    302. /dev/mapper/longchivg1-lv1 ext4 1.9G 301M 1.5G 17% /longchi_lv1
    303. root@longchi:/longchi_lv1# cd # 退出 /longchi_lv1/ 目录
    304. root@longchi:~# umount /longchi_lv1/ # 取消挂载
    305. root@longchi:~# ls /longchi_lv1/
    306. root@longchi:~#
    307. # 取消挂载后,已经看不到 /longchi_lv1/ 挂载信息
    308. root@longchi:~# df -hT
    309. Filesystem Type Size Used Avail Use% Mounted on
    310. tmpfs tmpfs 790M 1.9M 788M 1% /run
    311. /dev/sda3 ext4 98G 11G 82G 12% /
    312. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    313. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    314. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    315. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    316. root@longchi:~#
    317. # 向 /etc/fstab 文件中写入 开机自动挂载 命令
    318. echo "/dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0" >> /etc/fstab
    319. # 将挂载信息,写入开机自动挂载文件(/etc/fstab)中,以后就不需要每次都 mount 了
    320. root@longchi:~# vim /etc/fstab
    321. root@longchi:~# tail -1 /etc/fstab
    322. /dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0
    323. root@longchi:~#
    324. root@longchi:~# mount -l | grep lv1
    325. # 'mount -a'去执行 /etc/fstab 文件中所有的挂载信息 读取 /etc/fstab 文件中所有挂载信息
    326. root@longchi:~# mount -a
    327. root@longchi:~# mount -l | grep lv1
    328. /dev/mapper/longchivg1-lv1 on /longchi_lv1 type ext4 (rw,relatime)
    329. root@longchi:~#
    330. # 将挂载信息,写入开机自动挂载文件(/etc/fstab)中,以后就不需要每次都 mount 了
    331. root@longchi:~# tail -1 /etc/fstab
    332. /dev/longchivg1/lv1 /longchi_lv1 ext4 defaults 0 0
    333. # 通过命令,直接读取 /etc/fstab ,自动挂载所有设备
    334. root@longchi:~# mount -l | grep lv1
    335. /dev/mapper/longchivg1-lv1 on /longchi_lv1 type ext4 (rw,relatime)
    336. # 通过 mount 数据又回来了
    337. root@longchi:~# ls /longchi_lv1/
    338. lost+found test.txt test.txt.1 test.txt.2 test.txt.3
    339. # 向磁盘中写入数据,查看空间容量
    340. root@longchi:~# df -hT
    341. Filesystem Type Size Used Avail Use% Mounted on
    342. tmpfs tmpfs 790M 1.9M 788M 1% /run
    343. /dev/sda3 ext4 98G 11G 82G 12% /
    344. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    345. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    346. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    347. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    348. /dev/mapper/longchivg1-lv1 ext4 1.9G 301M 1.5G 17% /longchi_lv1
    349. root@longchi:~#
    350. # 针对 lv 逻辑卷的扩容操作,只要卷组中的容量够用,就可以对 lv 逻辑卷扩容
    351. root@longchi:~# vgdisplay
    352. --- Volume group ---
    353. VG Name longchivg1
    354. System ID
    355. Format lvm2
    356. Metadata Areas 2
    357. Metadata Sequence No 4
    358. VG Access read/write
    359. VG Status resizable
    360. MAX LV 0
    361. Cur LV 1
    362. Open LV 1
    363. Max PV 0
    364. Cur PV 2
    365. Act PV 2
    366. VG Size 99.99 GiB
    367. PE Size 4.00 MiB
    368. Total PE 25598
    369. Alloc PE / Size 500 / 1.95 GiB
    370. Free PE / Size 25098 / <98.04 GiB
    371. VG UUID c390Ia-swcr-7mmr-E93R-DMct-ycQ1-ra7CQf
    13. 针对 lv 逻辑卷的扩容操作,只要卷组中的容量够用,就可以对 lv 逻辑卷扩容
    第一步,先卸载 lv 的设备 umount /longchi_lv1
    root@longchi:~# umount /longchi_lv1/
    第二步,命令扩容逻辑卷大小 lvextend -L +10G /dev/longchivg1/lv1
    1. root@longchi:~# lvextend -L +10G /dev/longchivg1/lv1
    2. Size of logical volume longchivg1/lv1 changed from 1.95 GiB (500 extents) to 11.95 GiB (3060 extents).
    3. Logical volume longchivg1/lv1 successfully resized.
    4. root@longchi:~#
    5. root@longchi:~# df -hT
    6. Filesystem Type Size Used Avail Use% Mounted on
    7. tmpfs tmpfs 790M 1.9M 788M 1% /run
    8. /dev/sda3 ext4 98G 11G 82G 12% /
    9. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    10. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    11. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    12. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    13. /dev/mapper/longchivg1-lv1 ext4 1.9G 301M 1.5G 17% /longchi_lv1
    14. # 刷新命令 (centos7 文件系统为 xfs) 只有刷新了,'df -hT'命令才能读取到扩容后 逻辑卷的大小
    15. root@longchi:~# xfs_growfs /dev/mapper/longchivg1-lv1 # 刷新命令
    16. # 刷新命令 (ubuntu 文件系统为 ext4) 只有刷新了,'df -hT'命令才能读取到扩容后 逻辑卷的大小
    17. root@longchi:~# resize2fs /dev/mapper/longchivg1-lv1 # 刷新命令
    18. resize2fs 1.46.5 (30-Dec-2021)
    19. Filesystem at /dev/mapper/longchivg1-lv1 is mounted on /longchi_lv1; on-line resizing required
    20. old_desc_blocks = 1, new_desc_blocks = 2
    21. The filesystem on /dev/mapper/longchivg1-lv1 is now 3133440 (4k) blocks long.
    22. root@longchi:~# df -hT
    23. Filesystem Type Size Used Avail Use% Mounted on
    24. tmpfs tmpfs 790M 1.9M 788M 1% /run
    25. /dev/sda3 ext4 98G 11G 82G 12% /
    26. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    27. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    28. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    29. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    30. /dev/mapper/longchivg1-lv1 ext4 12G 301M 11G 3% /longchi_lv1
    31. root@longchi:~#
    第三步,挂载逻辑卷,开始使用
    root@longchi:~# mount /dev/longchivg1/lv1 /longchi_lv1/
    14. 还得调整 xfs(centos7),ext4(ubuntu)文件系统的大小,否则读取不到容量
    1. root@longchi:~# lvdisplay
    2. --- Logical volume ---
    3. LV Path /dev/longchivg1/lv1
    4. LV Name lv1
    5. VG Name longchivg1
    6. LV UUID ybbxnA-Xq66-vjhX-CKUb-mJFu-e0jX-2l0pkW
    7. LV Write Access read/write
    8. LV Creation host, time longchi, 2024-02-22 23:22:01 -0800
    9. LV Status available
    10. # open 0
    11. LV Size 11.95 GiB
    12. Current LE 3060
    13. Segments 1
    14. Allocation inherit
    15. Read ahead sectors auto
    16. - currently set to 256
    17. Block device 252:0
    18. root@longchi:~# df -hT
    19. Filesystem Type Size Used Avail Use% Mounted on
    20. tmpfs tmpfs 790M 1.9M 788M 1% /run
    21. /dev/sda3 ext4 98G 11G 82G 12% /
    22. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    23. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    24. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    25. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    26. /dev/mapper/longchivg1-lv1 ext4 1.9G 301M 1.5G 17% /longchi_lv1
    27. # 刷新命令 (ubuntu 文件系统为 ext4) 只有刷新了,'df -hT'命令才能读取到扩容后 逻辑卷的大小
    28. # 调整 ext4 文件系统
    29. root@longchi:~# resize2fs /dev/mapper/longchivg1-lv1
    30. resize2fs 1.46.5 (30-Dec-2021)
    31. Filesystem at /dev/mapper/longchivg1-lv1 is mounted on /longchi_lv1; on-line resizing required
    32. old_desc_blocks = 1, new_desc_blocks = 2
    33. The filesystem on /dev/mapper/longchivg1-lv1 is now 3133440 (4k) blocks long.
    34. root@longchi:~# df -hT # 查看 lv1 是否正确调整了空间容量
    35. Filesystem Type Size Used Avail Use% Mounted on
    36. tmpfs tmpfs 790M 1.9M 788M 1% /run
    37. /dev/sda3 ext4 98G 11G 82G 12% /
    38. tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
    39. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    40. /dev/sda2 vfat 512M 6.1M 506M 2% /boot/efi
    41. tmpfs tmpfs 790M 72K 790M 1% /run/user/126
    42. /dev/mapper/longchivg1-lv1 ext4 12G 301M 11G 3% /longchi_lv1
    43. root@longchi:~#
    15. 当你不想用 lvm 之后,就得删除逻辑卷了
    第一步,卸载 lvm 设备
    1. # 查看 /longchi_lv1 挂载目录数据
    2. root@longchi:~# ls /longchi_lv1
    3. lost+found test.txt test.txt.1 test.txt.2 test.txt.3
    4. # 取消挂载
    5. root@longchi:~# umount /longchi_lv1
    6. # 取消挂载后,再次查看 /longchi_lv1 挂载目录数据,已经看不到数据了
    7. root@longchi:~# ls /longchi_lv1
    8. root@longchi:~#
    第二步,删除逻辑卷 lvremove /dev/longchivg1/lv1
    1. root@longchi:~# lvremove /dev/longchivg1/lv1
    2. Do you really want to remove and DISCARD active logical volume longchivg1/lv1? [y/n]: y
    3. Logical volume "lv1" successfully removed
    4. root@longchi:~#
    第三步,删除逻辑卷组 vgremove longchivg1
    1. root@longchi:~# vgremove longchivg1
    2. Volume group "longchivg1" successfully removed
    3. root@longchi:~#
    第四步,删除物理卷设备 pvremove /dev/sdf /dev/sdg
    1. # 扫描一下有哪些物理卷设备
    2. root@longchi:~# pvs
    3. PV VG Fmt Attr PSize PFree
    4. /dev/sdf lvm2 --- 50.00g 50.00g
    5. /dev/sdg lvm2 --- 50.00g 50.00g
    6. root@longchi:~#
    7. # 删除物理卷设备 /dev/sdf /dev/sdg
    8. root@longchi:~# pvremove /dev/sdf /dev/sdg
    9. Labels on physical volume "/dev/sdf" successfully wiped.
    10. Labels on physical volume "/dev/sdg" successfully wiped.
    11. root@longchi:~#
    16. 最后一步,检查 lvm 相关信息 pvs vgs lvs 均没有相关信息,表示 lvm 彻底被删除了
    1. # 扫描 PV
    2. root@longchi:~# pvs
    3. root@longchi:~# pvdisplay
    4. root@longchi:~# pvscan
    5. No matching physical volumes found
    6. root@longchi:~#
    7. # 扫描 VG
    8. root@longchi:~# vgs
    9. root@longchi:~# vgdisplay
    10. root@longchi:~# vgscan
    11. root@longchi:~#
    12. # 扫描 LV
    13. root@longchi:~# lvs
    14. root@longchi:~# lvdisplay
    15. root@longchi:~# lvscan
    16. root@longchi:~#

     总结,以上检查 lvm 相关信息     pvs vgs lvs 均没有相关信息,表示 lvm 彻底被删除了

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    GEE本地端环境搭建错误[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1129)
    记录待办事项的便签软件哪个好用?
    R语言kaggle 游戏数据探索与可视化
    python程序将pdf转word
    android 9 OTA到android11弹出密码框
    Yolov8-pose关键点检测:模型轻量化创新 | ​BiLevelRoutingAttention 动态稀疏注意力 | CVPR2023 BiFormer
    【HMS core】【FAQ】典型问题合集7
    Kafka开发环境搭建
    【学习笔记】深度学习入门:基于Python的理论与实现-Python入门与感知机
    网络安全之从原理看懂XSS
  • 原文地址:https://blog.csdn.net/weixin_52943021/article/details/136263721