任务:
增加一个8T硬盘来扩容/home目录的大小(同理扩容其他分区大小,如果是扩容/boot,则需要在fdisk中用指令a添加boot标签)
环境:
Ubuntu16.04
步骤:
1、添加硬盘
在电脑关机(断电)状态下添加新硬盘。
2、查看硬盘状况
sudo fdisk -l
因为硬盘超过2T(硬盘小于2T可以参考),此时用以下命令
$ sudo fdisk /dev/sdb
会出现一段警告:
"WARNING: The size of this disk is 8.0 TB (7995995979776 bytes).DOS partition table format can not be used on drives for volumes
larger than 2.2 TB (2199023255040 bytes).
MBR分区表(主引导):
支持的最大卷:2T(1T=1024GB)
对分区的限制:最多4个主分区或3个主分区和一个扩展分区
GPT分区表(GUID分区表):
支持最大卷:18EB(1EB=1024T)
对分区的限制:每个磁盘最多支持128个分区
8T的硬盘需要用GPT格式,而fdisk不能用于GPT分区,所以要用另外一个工具parted来分区:
$ parted /dev/sdb #选择要分区的硬盘,此处为/dev/sdb
此时会进入命令交互式
GNU Parted 1.8.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel GPT #建立磁盘标签
(parted) mkpart primary 0% 80%
(parted) mkpart primary 81% 100% #这里表示吧8T硬盘分成两个区,一个从0%至80%(6.4T),另一个则是剩余的
(parted) print #显示分区信息,可以看到分的两个区
(parted) quit
分区完成,还需要让内核知道添加了新的分区:
$ sudo partprobe
3、格式化
$ sudo mkfs.ext4 /dev/sdb1 #将刚刚两个分区进行ext4格式化,磁盘格式化需要等待漫长的时间
$ sudo mkfs.ext4 /dev/sdb2
4、挂载
把硬盘分区和格式化之后就可以进行存储数据了,但还需要一个节点来挂载这个分区(存储需要一个路径,可以说这个节点是一个指针,类似于window的盘符)
$ mkdir /node #把新建的文件夹作为存储到硬盘上的路径
$ mount -t ext4 -o rw /dev/sdb1 /node #将/node挂载到/dev/sdb1
但是最后的目的是挂载到/home下。PS:此处,不能直接将/dev/sdb1挂载在/home下,因为会把/home里面的内容被覆盖不可见(内容还存在,但是不可见,原来的内容在原来的盘(分区)里面,但是指向那个分区的路径被覆盖了)。
所以先把原来/home的内容转移到新的分区(/node)里面:
$ sudo rsync -aXS --exclude='/*/.gvfs' /home/. /node/. #这时已经将原来/home的内容移到新的硬盘上了
此时就可以把现在/home下的文件删除(删除/home当前分区的文件)
$ rm -rf /home/*
$ umount -l /home
接下来获取新建分区/dev/sdb1的UUID
$ sudo blkid #找到/dev/sdb1那一行,并记录其UUID
添加到fstab中:
$ sudo nano /etc/fstab
#在最后一行添加,然后保存并退出
UUID=???????? /home ext4 defaults 0 2
然后重新挂载分区:
$ sudo mount -a
最后更新一下引导,防止重启出错:
$ sudo update-grub
$ sudo update-grub2
欢迎大家一起讨论!