promox 磁盘扩容

Promox磁盘扩容

参考 https://blog.csdn.net/weixin_42856871/article/details/122534245#:~:text=在 PROXMOX Virtual,Environment 中,选择需要增加磁盘容量的虚拟机,点击 硬件,然后点击 调整磁盘大小,输入想要增加的磁盘容量大小。

首先在Promox界面通过调整磁盘空间的方式扩容, 然后需要分配未使用的空间才能完成扩容

1
2
3
4
5
6
7
8
# 首先检查空间是否到位
lsblk
>>>
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 30G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 15G 0 lvm /

发现确实多了一些空间,但是挤在 sda 上, 我们需要将这部分空间分配给 sda3 数据分区上

1
2
3
4
parted -l /dev/sda
>>>
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space
Fix/Ignore?

会弹出一个提示, 大意是磁盘分区没有使用完所有的磁盘空间, 问你是否修复

此时你直接键入 Fix , 然后在询问你将空闲空间分配给哪个分区时, 选择 3 即可

1
2
3
4
5
# 3指的是第三个空间, 也就是sda3 ,如果你的分区不一致, 按照自己的修改
Partition number? 3

# 然后更新物理卷
pvresize /dev/sda3

此时再次查看分区

1
2
3
4
5
6
7
lsblk
>>>
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 47G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 15G 0 lvm /

如果你发现空闲空间没有被划分到 sda3 , 应当执行

1
2
3
4
5
6
7
8
9
10
parted /dev/sda
# 进入操作面板
# 打印当前空间
(parted) print
# 给第三分区扩容
(parted) resizepart 3 100%
# 再次检查分区
(parted) print
# 退出面板
quit

此时完成了将空闲空间分配到分区的步骤 , 再次执行 pvresize /dev/sda3 刷新系统显示即可

此时LVM卷还没有扩容, 依然需要二次分配, 把多余的空间分配到LVM卷上

执行

1
lvresize --extents +100%FREE --resizefs /dev/mapper/ubuntu--vg-ubuntu--lv

注意, /dev/mapper/ubuntu--vg-ubuntu--lv 是你的LVM卷地址, 跟你的 lsblk 名称保持一致, 挂载地址一般就在 /dev/mapper 上, 可以通过

1
ls /dev/mapper

然后更新系统显示 resize2fs /dev/ubuntu-vg/ubuntu-lv 即可

注意

如果你遇到了一些报错, 提示你无法扩展LVM卷, 可能是因为LVM没有空间了, 无法执行元数据更新操作, 你需要使用 systemrescue 系统或者你的系统的 rescure模式进入, 然后重新扩展, 而无法在本机的系统上直接扩展

故障排查

排查当前文件被谁使用

使用几个指令可以查找该文件或文件夹被谁使用

1
2
3
4
5
6
7
8
lsof <dir>
# Example
lsof .
# Res
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1569120 root cwd DIR 252,2 4096 264272 .
lsof 1569190 root cwd DIR 252,2 4096 264272 .
lsof 1569191 root cwd DIR 252,2 4096 264272 .

可以打印指定目录和子目录中使用他们的进程信息, 对于一些少见的信息附注解释

  • DEVICE : 设备号
  • SIZE/OFF 文件大小/文件指针偏移量
  • NODE : 磁盘系统节点号
  • NAME : 文件名

除此之外, 还有指令 fuser 可以使用

1
2
3
4
5
6
7
8
9
10
11
12
fuser [option] <dir>
# Example
fuser /usr/sbin/nginx
fuser /usr/sbin/nginx -v
# Res1
/usr/sbin/nginx: 114500e 114503e 114504e
# Res2
USER PID ACCESS COMMAND
/usr/sbin/nginx: root 114500 ...e. nginx
www-data 114503 ...e. nginx
www-data 114504 ...e. nginx

其中, ACCESS字段可能的值如下:

  • r : 程序正在读
  • w: 程序正在写
  • m : 程序正在使用内存映射
  • e : 程序正在执行

进一步的, 我们可以使用PID查询程序正在读写的文件FD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ls -l /proc/<PID>/fd
# Example
ls -l /proc/114503/fd
# Res
total 0
lrwx------ 1 www-data www-data 64 9月 21 10:44 0 -> /dev/null
lrwx------ 1 www-data www-data 64 9月 21 10:44 1 -> /dev/null
lrwx------ 1 www-data www-data 64 9月 21 10:44 10 -> 'anon_inode:[eventpoll]'
lrwx------ 1 www-data www-data 64 9月 21 10:44 11 -> 'anon_inode:[eventfd]'
l-wx------ 1 www-data www-data 64 9月 21 10:44 12 -> /var/log/nginx/access.log
l-wx------ 1 www-data www-data 64 9月 21 10:44 2 -> /var/log/nginx/error.log
lrwx------ 1 www-data www-data 64 9月 21 10:44 3 -> 'socket:[2207304]'
l-wx------ 1 www-data www-data 64 9月 21 10:44 4 -> /var/log/nginx/error.log
l-wx------ 1 www-data www-data 64 9月 21 10:44 5 -> /etc/nginx/conf.d/acc.discover.log
l-wx------ 1 www-data www-data 64 9月 21 10:44 6 -> /etc/nginx/conf.d/err.discover.log
lrwx------ 1 www-data www-data 64 9月 21 10:44 8 -> 'socket:[2206504]'
lrwx------ 1 www-data www-data 64 9月 21 10:44 9 -> 'socket:[2207303]

另外, 还可以使用 lslocks 指令查看系统的文件锁, 使用 grep 进行过滤


promox 磁盘扩容
https://blog.sukiloli.com/2024/12/11/promox磁盘扩容/
作者
QLozin
发布于
2024年12月11日
许可协议