开发机ubuntu磁盘扩容

背景

今天早上编译项目总是失败,df -h一看发现是磁盘没空间了。

1
2
3
4
5
6
7
8
ks@ks-37:~ $ sudo df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 5.1M 1.6G 1% /run
/dev/vda1 98G 92G 1.1G 99% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.6G 80K 1.6G 1% /run/user/120
tmpfs 1.6G 112K 1.6G 1% /run/user/1000

公司是自建机房,通过虚拟机管理的主机,资源闲着也是闲着,所以我决定给自己开发机磁盘扩个容。

思路

引用一篇博主的内容:https://blog.csdn.net/caiguanhong/article/details/114583839

当前磁盘为/dev/vda,新增磁盘为/dev/vdb.

- 首先,新增的磁盘块是新的分区; - 其次,新分区是无法直接`resize`方式来扩主分区(根目录)的; - 所以,新分区是通过挂载到特定目录来替换当前分区;

举个例子:
扩容前,/abc目录大小是20G,位于vda磁盘上。

那么可以通过把/abc目录内容移到vdb磁盘上的方式,来使得vda磁盘减少20G,从而达到扩容效果。

扩容后,后续/abc容量的增长用的也是vdb磁盘,与vda主分区没啥关系。

具体步骤

1. 明确需要扩多少

先看看当前的系统文件容量分布,命令是:du -h -d 1 /

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ks@ks-37:/ $ sudo du -h -d 1 /
16K /lost+found
213M /boot
25M /root
4.0K /cdrom
25G /usr
0 /proc
4.0K /srv
4.0K /mnt
18M /etc
16K /opt
178M /tmp
41G /home
0 /dev
5.2M /run
0 /sys
68G /var
6.9G /snap
8.0K /media
100G /

我们发现最多的是三个目录

  • /var >>> 68G
  • /home >>> 41G
  • /usr >>> 25G

这里我打算新增一块80G磁盘,来替换掉/home目录的内容。

2. 为主机添加新磁盘

虚拟机直接分配,对主机来说就是新增了硬件设备。

添加磁盘前,使用fdisk -l查看磁盘分区情况

1
2
3
4
5
6
7
8
9
10
ks@ks-37:~ $ sudo fdisk -l
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6f5ba6c

Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 209713151 209711104 100G 83 Linux

添加磁盘后,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ks@ks-37:~ $ sudo fdisk -l
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6f5ba6c

Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 209713151 209711104 100G 83 Linux

Disk /dev/vdb: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

可以看到,磁盘已经添加完成,但是并未分区和挂载,所以通过df -h查看依旧没变。

1
2
3
4
5
6
7
8
ks@ks-37:~ $ sudo df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 5.1M 1.6G 1% /run
/dev/vda1 98G 92G 1.1G 99% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.6G 80K 1.6G 1% /run/user/120
tmpfs 1.6G 112K 1.6G 1% /run/user/1000

3. 为新磁盘分区

直接通过fdisk /dev/vdb命令为新磁盘分区,这会进入一个交互程序。
具体过程如下图所示:

其中分区类型选择p主分区类型,下文有解释

再次通过fdisk查看分区后结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ks@ks-37:~ $ sudo fdisk -l
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd6f5ba6c

Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 209713151 209711104 100G 83 Linux


Disk /dev/vdb: 80 GiB, 85899345920 bytes, 167772160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00ec364e

Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 167772159 167770112 80G 83 Linux

4. 格式化分区

以下为引用内容,引用链接在本文开始部分。

如果前面分区类型选择的是e則 extended 扩展分区的话,这里格式化硬盘会报错,如下图,那么如何解决呢?有两种办法
1.如果不删除分区,那么就在建立扩展分区后,不输入 w保存,而是再输一次n新建分区,此时第二选项会变成 logical(逻辑分区),选择后就会真正创建逻辑分区,然后对其mks 格式化才会成功。因为扩展分区不能承载文件系统,需要在扩展分区上创建逻辑分区后才能进行格式化。
2.或者干脆在选择分区类型的时候就选择p即 primary 主分区,则会避免出现这个问题。

1
ks@ks-37:~ $ sudo mkfs.ext4 /dev/vdb1

5. 挂载新分区到临时目录

挂载到临时目录后,把当前/home目录下的所有内容都copy过去

1
2
3
4
ks@ks-37:~ $ sudo mkdir -p /mnt/home
ks@ks-37:~ $ sudo mount /dev/vdb1 /mnt/home
ks@ks-37:~ $ sudo cp -a /home/* /mnt/home/
ks@ks-37:~ $ sudo umount /dev/vdb1

6. 挂载新分区

1
2
3
4
5
6
7
8
9
10
// 清空需要挂载的目录
ks@ks-37:~ $ sudo rm -rf /home/*

// 设置开机自启挂载
// 把这一行内容写入下列文件中:/dev/vdb1 /home ext4 defaults 0 1
ks@ks-37:~ $ sudo vim /etc/fstab


// 重启
ks@ks-37:~ $ sudo reboot

最后

最终实现效果如下:

1
2
3
4
5
6
7
8
9
ks@ks-37:~ $ sudo df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 5.1M 1.6G 1% /run
/dev/vda1 98G 52G 42G 56% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.6G 80K 1.6G 1% /run/user/120
tmpfs 1.6G 112K 1.6G 1% /run/user/1000
/dev/vdb1 79G 41G 34G 55% /home
  • Copyrights © 2019-2024 Klusfq
  • Visitors: | Views: