近日由于虚拟机下安装软件过多,时不时弹出磁盘空间不足的问题。查找了很多资料,都没有很好的解决办法。
朋友发来一个链接,还是老外有良心。翻译出来放在这里,根据我的实际需求进行了操作,达到了预期目的。
以防万一,在操作之前将虚拟机进行了备份。
由于安装时没有自己进行分区,磁盘大小也使用了默认的20G。后来发现果然悲剧。
使用df -h命令查看具体使用情况
- @ubuntu:~$ df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/sda1 19G 17G 1020M 95% /
- none 4.0K 0 4.0K 0% /sys/fs/cgroup
- udev 745M 4.0K 745M 1% /dev
- tmpfs 151M 1.3M 150M 1% /run
- none 5.0M 0 5.0M 0% /run/lock
- none 755M 220K 755M 1% /run/shm
- none 100M 48K 100M 1% /run/user
使用root权限 fdisk -l查看
在虚拟机的设置——>硬盘——>扩展 选项,选择需要扩展到的容量,这里我是从20G扩展到40G。
设置完成后发现依然无法使用,而是在扩展分区里。
- Disk /dev/sda: 42.9 GB, 42949672960 bytes
- 255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
- Disk identifier: 0x000ea50f
-
- Device Boot Start End Blocks Id System
- /dev/sda1 * 2048 39845887 19921920 83 Linux
- /dev/sda2 39847934 41940991 1046529 5 Extended
- /dev/sda5 39847936 41940991 1046528 82 Linux swap / Solaris
具体思路是将分区先删除,然后再重新进行分区。注意,这里使用fdisk -l查看的信息建议记录下来,后面进行重新分区时会使用到。
使用free -m命令查看
- bay@ubuntu:~$ free -m
- total used free shared buffers cached
- Mem: 1508 1065 443 5 74 419
- -/+ buffers/cache: 572 936
- Swap: 1021 0 1021
我们可以看到交换分区的大小,先将交换分区关掉使用命令
- root@ubuntu:# swapoff -a
- root@ubuntu:# free -m
- total used free shared buffers cached
- Mem: 1508 1075 433 5 73 419
- -/+ buffers/cache: 581 926
- Swap: 0 0 0
这时候可以看到swap的分区大小已经为0了。
接下来的步骤就是删除掉 /dev/sda1 和 /dev/sda2。使用fdisk /dev/sda删除分区
- root@ubuntu:# fdisk /dev/sda
-
- Command (m for help): p
-
- Disk /dev/sda: 42.9 GB, 42949672960 bytes
- 255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
- Disk identifier: 0x000ea50f
-
- Device Boot Start End Blocks Id System
- /dev/sda1 * 2048 39845887 19921920 83 Linux
- /dev/sda2 39847934 41940991 1046529 5 Extended
- /dev/sda5 39847936 41940991 1046528 82 Linux swap / Solaris
-
- Command (m for help): d
- Partition number (1-5): 1
-
- Command (m for help): d
- Partition number (1-5): 2
-
- Command (m for help): p
-
- Disk /dev/sda: 42.9 GB, 42949672960 bytes
- 255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
- Disk identifier: 0x000ea50f
-
- Device Boot Start End Blocks Id System
删除旧的分区之后,就开始进行创建新分区了,注意这时候让之前保存的信息就派上用场了。
- Command (m for help): n
- Partition type:
- p primary (0 primary, 0 extended, 4 free)
- e extended
- Select (default p): p
- Partition number (1-4, default 1): 1
- First sector (2048-83886079, default 2048):
- Using default value 2048
- Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): 82869552
注意这是时候可能会有人疑惑,这个大小该如何设置。
这个大小是总的大小减去Swap的大小:83886080 - 1046528 = 82839552。这里的1046528 就是Swap的大小。
接着将分区的事情做完:
- Command (m for help): n
- Partition type:
- p primary (1 primary, 0 extended, 3 free)
- e extended
- Select (default p): p
- Partition number (1-4, default 2): 2
- First sector (82839553-83886079, default 82839553):
- Using default value 82839553
- Last sector, +sectors or +size{K,M,G} (82839553-83886079, default 83886079):
- Using default value 83886079
-
- Command (m for help): p
-
- Disk /dev/sda: 42.9 GB, 42949672960 bytes
- 255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
- Disk identifier: 0x000ea50f
-
- Device Boot Start End Blocks Id System
- /dev/sda1 2048 82839552 41418752+ 83 Linux
- /dev/sda2 82839553 83886079 523263+ 83 Linux
这个时候分区大小是正确的了,但是ID还是同一个值。在这里我们将交换分区的ID修改为82.
- Command (m for help): t
- Partition number (1-4): 2
- Hex code (type L to list codes): 82
- Changed system type of partition 2 to 82 (Linux swap / Solaris)
使用w进行保存
- Command (m for help): w
- The partition table has been altered!
-
- Calling ioctl() to re-read partition table.
-
- WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
- The kernel still uses the old table. The new table will be used at
- the next reboot or after you run partprobe(8) or kpartx(8)
- Syncing disks.
将虚拟机进行重启。
交换分区使用UUID进行挂载。在创建新的分区之后,UUID将会不匹配,在reboot之后将没有交换分区可以使用。这里有两种方式进行处理
1)在 /etc/fstab 中使用新的UUID
2)在新的分区上使用旧的UUID。这里使用第二种方法。
查看UUID:
- root@ubuntu:/home/bay# awk '/swap/ { print $1 }' /etc/fstab
- #
- UUID=990ae69c-2bbe-425f-bb8f-91200f70c9b9
- root@ubuntu:# swapoff -a
- root@ubuntu:# free -m
- total used free shared buffers cached
- Mem: 1508 1171 337 6 191 424
- -/+ buffers/cache: 555 953
- Swap: 0 0 0
- root@ubuntu:# dd if=/dev/zero of=/dev/sda2
- dd: writing to ‘/dev/sda2’: No space left on device
- 1046528+0 records in
- 1046527+0 records out
- 535821824 bytes (536 MB) copied, 1.89975 s, 282 MB/s
- root@ubuntu:# mkswap -U 990ae69c-2bbe-425f-bb8f-91200f70c9b9 /dev/sda2
- Setting up swapspace version 1, size = 523256 KiB
- no label, UUID=990ae69c-2bbe-425f-bb8f-91200f70c9b9
- root@ubuntu:# swapon -a
- root@ubuntu:# free -m
- total used free shared buffers cached
- Mem: 1508 717 790 6 6 164
- -/+ buffers/cache: 546 961
- Swap: 510 0 510
- root@ubuntu:# df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/sda1 19G 17G 1023M 95% /
- none 4.0K 0 4.0K 0% /sys/fs/cgroup
- udev 745M 12K 745M 1% /dev
- tmpfs 151M 1.3M 150M 1% /run
- none 5.0M 0 5.0M 0% /run/lock
- none 755M 152K 755M 1% /run/shm
- none 100M 48K 100M 1% /run/user
- root@ubuntu:# resize2fs /dev/sda1
- resize2fs 1.42.9 (4-Feb-2014)
- Filesystem at /dev/sda1 is mounted on /; on-line resizing required
- old_desc_blocks = 2, new_desc_blocks = 3
- The filesystem on /dev/sda1 is now 10354688 blocks long.
-
- root@ubuntu:# df -h
- Filesystem Size Used Avail Use% Mounted on
- /dev/sda1 39G 17G 21G 45% /
- none 4.0K 0 4.0K 0% /sys/fs/cgroup
- udev 745M 12K 745M 1% /dev
- tmpfs 151M 1.3M 150M 1% /run
- none 5.0M 0 5.0M 0% /run/lock
- none 755M 152K 755M 1% /run/shm
- none 100M 48K 100M 1% /run/user
dd命令仅仅是保证在分区开始的地方没有数据。
原文链接:https://hexeract.wordpress.com/2012/04/30/how-to-expand-the-root-filesystem-of-a-11-10-ubuntu-running-inside-vmware-player/