参考 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
| 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
上, 可以通过
然后更新系统显示 resize2fs /dev/ubuntu-vg/ubuntu-lv
即可
注意
如果你遇到了一些报错, 提示你无法扩展LVM卷, 可能是因为LVM没有空间了, 无法执行元数据更新操作, 你需要使用 systemrescue
系统或者你的系统的 rescure
模式进入, 然后重新扩展, 而无法在本机的系统上直接扩展
故障排查
排查当前文件被谁使用
使用几个指令可以查找该文件或文件夹被谁使用
1 2 3 4 5 6 7 8
| lsof <dir>
lsof .
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>
fuser /usr/sbin/nginx fuser /usr/sbin/nginx -v
/usr/sbin/nginx: 114500e 114503e 114504e
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
ls -l /proc/114503/fd
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 进行过滤