转移阵地-OpenWrt to Ubuntu Server

之前我有写过一篇文章在组内也有分享,关于如何用旧电脑最经济的实现全局上梯🪜,其中就是利用 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