By Noxxxx from https://www.noxxxx.com/?post_type=post&p=1850
欢迎分享与聚合,尊重版权,可以联系授权
之前我有写过一篇文章在组内也有分享,关于如何用旧电脑最经济的实现全局上梯🪜,其中就是利用 OpenWrt 进行组网。
但是在我使用了一段时间后,这个周末突然就莫名其妙的无法访问外网了, 除了 Google、油管外,百度这些国内站点通通无法打开,目测也没有任何配置改动,折腾了半天后,我决定放弃在物理机上使用 OpenWrt。
最终还是决定在笔记本上安装一个 Ubuntu Server 来运行我想要的一些软件和服务,OpenWrt 侧重于路由器方面的功能,其他的一些服务只要有 Docker 服务,那么也一定可以运行在 Ubuntu 上,因为 Docker 可以跨平台。
其实最开始是往 NAS 的方向上对齐的,但是 7 * 24 小时运行着这样一个存储系统,对我来说性价比很低,本质上我对存储的需求并不是很大,估计要等真的有了 NAS 才会去创造出一些需求来,当下需要的就是 Jellyfin 来管理我的影片,而我又只是周末时间才会打开,下载个几部电影看看,300M 的宽带,路由器开启 DMZ ,配合 Aria2 基本上可以满速,因此也不需要提前开机下载。至于存储,本身笔记本有一块 500G 的硬盘,我又在 张大妈 上自购了一块 120G 的廉价固态,机械硬盘只负责存储。我不是一个储物狂,所以存满后打算删掉一些影片来,毕竟闲置不看占坑位。
所以综上所述,我并不需要一个完整的 NAS ,我只需要几个“服务”来满足我当下的需求,所以我还是装回了 Ubuntu Server。
Ubuntu Server 在安装过程中有一个 LVM 的磁盘管理概念,由于我后期在下载过程中出现了,磁盘不够的情况,因此开篇文章来记录一下我的经历,至此背景有了,问题也有了,接下来开始正文。
什么是 LVM?
逻辑分区管理是一个存在于磁盘/分区和操作系统之间的一个抽象层。在传统的磁盘管理中,你的操作系统寻找有哪些磁盘可用(/dev/sda、/dev/sdb等等),并且这些磁盘有哪些可用的分区(如/dev/sda1、/dev/sda2等等)
df -hl

在LVM下,磁盘和分区可以抽象成一个含有多个磁盘和分区的设备。你的操作系统将不会知道这些区别,因为LVM只会给操作系统展示你设置的卷组(磁盘)和逻辑卷(分区)。
因为卷组和逻辑卷并不物理地对应到磁盘,因此可以很容易地动态调整和创建新的磁盘和分区。
适合的场景
LVM 方案适合多块磁盘组合扩容的场景,比方说我的 /data
目录空间不够了,这时你可以添加一块硬盘,通过 LVM 的方案来扩容这个目录,从而和物理硬盘上的分区这个概念所分离,否则设想一下在 windows,一个物理硬盘分多少个分区就是多少大小,如果你的文件夹在 C 盘,C 盘空间不够了,只能删除当前硬盘的分区来调整 C 盘的分区,而不能通过添加一块硬盘来扩充 C 盘的空间,而 LVM 方案就可以干这个事情。
概念
1、 物理卷—–PV(Physical Volume)
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘。
2、 卷组——–VG(Volumne Group)
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
3、 逻辑卷—–LV(Logical Volume)
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷要以属于同一个卷组,也可以属于不同的多个卷组。
4、 物理区域–PE(Physical Extent)
物理区域是物理卷中可用于分配的最小存储单元,物理区域的大小可根据实际情况在建立物理卷时指定。物理区域大小一旦确定将不能更改,同一卷组中的所有物理卷的物理区域大小需要一致。
5、 逻辑区域―LE(Logical Extent)
逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。
6、 卷组描述区域—–(Volume Group Descriptor Area)
卷组描述区域存在于每个物理卷中,用于描述物理卷本身、物理卷所属卷组、卷组中的逻辑卷及逻辑卷中物理区域的分配等所有信息,卷组描述区域是在使用pvcreate建立物理卷时建立的。


sudo pvscan

由于我之前将另一块硬盘分组好了,所以看到同属于 ubuntu-vg
,可以忽略,新硬盘是没有 vg
信息的。
分区
pvcreate /dev/sdb
Linux 上新加的硬盘一般是 /dev/sdb
这种,因此先格式化为 PV。
创建后如下:

扩容
因为我 120G 的硬盘还剩余 55G空闲,所以想和 500G 的硬盘合并到一起,因此我会将新硬盘加入到已有的 VG 当中,也就是 ubuntu-bg
。
这种方式是扩容操作
root@vincent:/data# vgextend ubuntu-vg /dev/sdb1
# Volume group "ubuntu-vg" successfully extended
查看添加结果:
root@vincent:/data# vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 12
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 576.54 GiB
PE Size 4.00 MiB
Total PE 147595
Alloc PE / Size 14181 / 55.39 GiB
Free PE / Size 133414 / <521.15 GiB
VG UUID m2aCTz-B9u6-LRJa-tIDI-u1zC-tOlw-yiMTXE
可以看到 Free PE / Size
这一行已经有了500G 的空闲存储。
划分逻辑分区
root@vincent:/data# lvcreate -l +100%FREE -n data-lv ubuntu-vg
在 ubuntu-vg
组中添加一个 逻辑分区 data-lv
,并且使用剩余的所有空间,这样的话,其实就满足了 120G 剩余的 55G + 新添加的 500G 硬盘合并的一个新逻辑分区。
查看一下,逻辑分区建立成功:
root@vincent:/data# lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID Mzwxt4-BEl9-joKb-tdrH-3pj3-3rSX-1EgK4Q
LV Write Access read/write
LV Creation host, time ubuntu-server, 2021-11-12 14:46:17 +0000
LV Status available
# open 1
LV Size 55.39 GiB
Current LE 14181
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/ubuntu-vg/data-lv
LV Name data-lv
VG Name ubuntu-vg
LV UUID PBr4e2-PZL7-8d2B-r5kq-JM2H-TGII-n02H2T
LV Write Access read/write
LV Creation host, time vincent, 2021-12-01 05:47:31 +0000
LV Status available
# open 0
LV Size <521.15 GiB
Current LE 133414
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
格式化
分区之后格式化,未分区之前的状态:
root@vincent:/data# lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 squashfs 0 100% /snap/core18/2246
loop1 squashfs 0 100% /snap/core18/2253
loop2 squashfs 0 100% /snap/core20/1169
loop3 squashfs 0 100% /snap/core20/1242
loop4 squashfs 0 100% /snap/lxd/21029
loop5 squashfs 0 100% /snap/snapd/13640
loop6 squashfs 0 100% /snap/lxd/21835
loop7 squashfs 0 100% /snap/snapd/14066
sda
├─sda1
├─sda2 ext4 3d40f62e-46d8-4338-9f55-f4fffc928e43 802.7M 11% /boot
└─sda3 LVM2_member vzIGNG-tOnv-uQzx-cfw1-xBCB-cJcp-MEik5p
├─ubuntu--vg-ubuntu--lv ext4 6af7b30b-1787-4ebb-9a14-bafd020d7c92 15.5G 66% /
└─ubuntu--vg-data--lv
sdb
└─sdb1 LVM2_member UvW60v-hfZx-vdfu-Uu1x-wCaf-Lnp8-8oWrzN
└─ubuntu--vg-data--lv
格式化:mkfs.ext4 /dev/ubuntu-vg/data-lv
root@vincent:/data# mkfs.ext4 /dev/ubuntu-vg/data-lv
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 136615936 4k blocks and 34160640 inodes
Filesystem UUID: 53de7c0c-797f-4660-a7d9-419927afb9b5
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
root@vincent:/data# lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 squashfs 0 100% /snap/core18/2246
loop1 squashfs 0 100% /snap/core18/2253
loop2 squashfs 0 100% /snap/core20/1169
loop3 squashfs 0 100% /snap/core20/1242
loop4 squashfs 0 100% /snap/lxd/21029
loop5 squashfs 0 100% /snap/snapd/13640
loop6 squashfs 0 100% /snap/lxd/21835
loop7 squashfs 0 100% /snap/snapd/14066
sda
├─sda1
├─sda2 ext4 3d40f62e-46d8-4338-9f55-f4fffc928e43 802.7M 11% /boot
└─sda3 LVM2_member vzIGNG-tOnv-uQzx-cfw1-xBCB-cJcp-MEik5p
├─ubuntu--vg-ubuntu--lv ext4 6af7b30b-1787-4ebb-9a14-bafd020d7c92 15.5G 66% /
└─ubuntu--vg-data--lv ext4 53de7c0c-797f-4660-a7d9-419927afb9b5
sdb
└─sdb1 LVM2_member UvW60v-hfZx-vdfu-Uu1x-wCaf-Lnp8-8oWrzN
└─ubuntu--vg-data--lv ext4 53de7c0c-797f-4660-a7d9-419927afb9b5
挂载
mount /dev/ubuntu-vg/data-lv /data
可以看到挂载成功:
root@vincent:/data# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 55.5M 1 loop /snap/core18/2246
loop1 7:1 0 55.5M 1 loop /snap/core18/2253
loop2 7:2 0 61.9M 1 loop /snap/core20/1169
loop3 7:3 0 61.9M 1 loop /snap/core20/1242
loop4 7:4 0 70.3M 1 loop /snap/lxd/21029
loop5 7:5 0 32.5M 1 loop /snap/snapd/13640
loop6 7:6 0 67.2M 1 loop /snap/lxd/21835
loop7 7:7 0 42.2M 1 loop /snap/snapd/14066
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 110.8G 0 part
├─ubuntu--vg-ubuntu--lv 253:0 0 55.4G 0 lvm /
└─ubuntu--vg-data--lv 253:1 0 521.2G 0 lvm /data
sdb 8:16 0 465.8G 0 disk
└─sdb1 8:17 0 465.8G 0 part
└─ubuntu--vg-data--lv 253:1 0 521.2G 0 lvm /data