Ubuntu缩小磁盘分区大小或扩容其他分区

发布 | 2019-05-23 | 默认分类 | 1136 浏览

摘要:

  1. 通过resize2fs调整文件系统大小
  2. 通过parted调整磁盘分区大小
  3. 通过fdisk进行磁盘分区相关操作

    fdisk 磁盘分区相关操作
    df 系统分区挂载信息
    mount 挂载分区
    umount 卸载分区
    mkfs.ext4 格式化分区


在做强化学习训练时训练的数据越来越大越来越大,直接把所有的空间都给使用了,导致系统崩溃,只能挂载新的磁盘或者将未利用磁盘空间缩小,扩容到用户需要的目录下。

以下为非生产环境的操作,但大体一致

STEP 1:
首先查看一下目前的磁盘分区

virtual@virtual:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   32G  0 disk
├─sda1   8:1    0  190M  0 part /boot
├─sda2   8:2    0    1K  0 part
├─sda5   8:5    0  7.6G  0 part /home
├─sda6   8:6    0  487M  0 part [SWAP]
└─sda7   8:7    0 23.7G  0 part /
sr0     11:0    1 1024M  0 rom

将/home分区的大小缩小为4G,这样可以多出一部分空间来新建一个分区

$ umount /home

显示/home分区是busy的

$ lsof +d /home

查看哪些进程在使用/home分区
STEP 2:
通过resize2fs命令来缩小/home分区的文件系统大小
(注意:文件系统大小和磁盘分区大小是两个不同的概念。文件系统大小表示的是文件系统实际可用的大小,而磁盘分区大小则是文件系统所安装的磁盘分区的真实大小。通过df -h命令我们可以查看文件系统大小,通过lsblk或者fdisk命令可以查看磁盘分区大小。粗略算一下1T=954.xxxG)

root@virtual:~# e2fsck -f /dev/sda5
# 上面这条命令强制对/dev/sda5的文件系统进行了检查
e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda5: 220/499968 files (3.6% non-contiguous), 69132/1999872 blocks
root@vv2x:~# resize2fs /dev/sda5 4G
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/sda5 to 1048576 (4k) blocks.
The filesystem on /dev/sda5 is now 1048576 (4k) blocks long.

缩小/home分区的磁盘分区大小
调整好文件系统大小以后,我们就需要来调整磁盘分区大小了,这里我们通过parted命令中的resizepart命令来调整分区大小。用法如下:

(parted) help resizepart
  resizepart NUMBER END                    resize partition NUMBER

NUMBER is the partition number used by Linux.  On MS-DOS disk labels, the primary
partitions number from 1 to 4, logical partitions from 5 onwards.

END is disk location, such as 4GB or 10%.  Negative value counts from the end of the
disk.  For example, -1s specifies exactly the last sector.

其中NUMBER代表的是分区号,这里我们的/home分区为5,END代表的是结束的位置,我们可以用4GB来表示。(注意:parted的分区大小计算方式和lsblk不同,所以我们多留一些空间,防止数据丢失)

运行结果如下:

root@virtual:~# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart 5 5G
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? Yes
(parted)
Information: You may need to update /etc/fstab.

调整/home分区的文件系统大小并重新挂载

STEP 3:
为了防止数据丢失,我们多留出了一些空间。在这里我们需要相应地调整文件系统大小,让其和磁盘空间大小匹配,这里我们通过resize2fs命令来完成这一步。

root@virtual:~# resize2fs /dev/sda7
# resize2fs如果没有指定大小,那么/dev/sda7的文件系统大小默认和磁盘分区大小相同
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/sda7 to 1171295 (4k) blocks.
The filesystem on /dev/sda7 is now 1171295 (4k) blocks long.

最后我们重新把/home分区挂载上就可以了。

root@virtual:~# mount -a
# 这条命令默认挂载/etc/fstab文件中所有指定的分区
root@virtual:~# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   32G  0 disk
├─sda1   8:1    0  190M  0 part /boot
├─sda5   8:5    0  487M  0 part [SWAP]
├─sda6   8:6    0 23.7G  0 part /
└─sda7   8:7    0  4.5G  0 part /home
sr0     11:0    1 1024M  0 rom

注意:最后需要注意的是调整磁盘分区大小以后,磁盘分区的UUID可能会改变,mount -a命令可能会失败,此时我们需要通过blkid命令来查看/home分区的大小,并相应地更改/etc/fstab配置文件中指定的/home分区的UUID。

查看磁盘uuid

1. sudo blkid
/dev/sda1:  LABEL="System"      UUID="5CA09A65A09A4604" TYPE="ntfs" 
...
2. ls -l /dev/disk/by-uuid

END STEP

格式化新分区:

查看当前磁盘信息
*执行 fdisk -l
可以看到系统有sda, sdb 两块硬盘,其中 sdb 是我刚刚加的5G硬盘, 可以看到里面是没有任何分区的

[root@virtual~]# fdisk -l
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xcca98924
   Device Boot      Start         End      Blocks   Id  System
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000dd21a
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
/dev/sda2              64        2611    20458496   8e  Linux LVM

*执行 df -lh
查看当前磁盘信息
sda2 挂载在根目录
sda1 挂载在/boot目录

[root@virtual~]# df -lh
Filesystem                      Size  Used  Avail  Use% Mounted on
/dev/mapper/vg_freeman-lv_root  18G    12G  4.9G   71%  /
tmpfs                           242M     0  242M   0%   /dev/shm
/dev/sda1                       477M   29M  424M   7%   /boot

创建分区

[root@virtual ~]# fdisk /dev/sdb
Command (m for help): n     <- 新建分区
Command action              <- 选择要创建的分区类型
   e   extended <- 扩展分区
   p   primary partition (1-4) <- 主分区
p <- 输入建立主分区
Partition number (1-4):1    <- 分区编号
First cylinder (1-652, default 1):  <- 柱面起始值,直接回车默认
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-652, default 652):     +1G  <-分区大小
Command (m for help): w     <- 保存分区表, 完毕会退出fdisk命令
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

...

*重复同样的方法再建立
——2G大小的主分区sdb2
——500M大小的扩展分区大小sdb3
——100M大小的逻辑分区sdb5, sdb6

[root@virtual~]# fdisk /dev/sdb
Command (m for help): p     <- 打印当前磁盘的分区信息
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         394     2104515   83  Linux
/dev/sdb3             395         459      522112+   5  Extended
/dev/sdb5             395         408      112423+  83  Linux
/dev/sdb6             409         422      112423+  83  Linux

我已经将sdb已经做了5个分区(实际上4个有效,因为sdb3是扩展分区,sdb5 是第一个逻辑分区所以起始柱面和sdb3一样从395开始)
建立好分区后,先不要急着去挂载,否则提示必须知道文件系统类型 ,需要先格式化分区

[root@virtual/]# mount /dev/sdb2 /my_mount2
mount: you must specify the filesystem type

*格式化分区
这里我使用ext4 filesystem type, 有关文件系统类型自己google

[root@virtual/]# mkfs.ext4 /dev/sdb1
[root@virtual/]# mkfs.ext4 /dev/sdb2
[root@virtual/]# mkfs.ext4 /dev/sdb5
[root@virtual /]# mkfs.ext4 /dev/sdb6

参考:

作者:Tyrion-Lannister
原文:https://blog.csdn.net/hmsiwtv/article/details/7525171
作者:黑翼天使56
原文:https://blog.csdn.net/u012291393/article/details/78636456
作者:jackytse_
原文:https://blog.csdn.net/xiexievv/article/details/50525783

标签
没有标签

© 著作权归作者所有

本文由 豆末 创作,采用 知识共享署名4.0 国际许可协议进行许可,本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。

吐槽一下吧

*选项为必填