注1:作者水平极度有限,整个扩容过程全靠网上的各个帖子+自己摸索,因为网上的各个帖子都有这样那样的小错误,而且几乎全是某一帖子的复制粘贴,为了让之后遇到同样问题的同学少走弯路,记录了一下自己的扩容过程。其中夹带了一些自己的理解,如有不对之处欢迎指正。
注2:码字不易,转载请注明出处,侵权必究。
起因:Hbase创建表时一直失败,查看了/usr/local/hbase/logs/hbase-hadoop-master-hadoop-VirtualBox.log日志发现,原来是hadoop的安全模式没有关,于是进入到/usr/local/hadoop/bin中,试图通过./hadoop dfsadmin -safemode leave命令退出安全模式,返回Safe mode is OFF。然而再次创建表时发现依然失败,于是又查看了一次上述日志,发现依然显示Waiting for dfs to exit safe mode… 于是又回到了/usr/local/Hadoop/bin文件夹下,结合./hadoop dfsadmin -safemode get命令,发现在执行leave命令时虽然显示了OFF,但是执行完之后又会马上重新启动安全模式。在网上找了许多帖子发现可能是因为内存不够了,于是使用df -Th命令查看文件系统使用情况:
发现根目录/dev/sda1果然已经满了,于是就开始着手对/dev/sda1进行扩容。
Tips:在此之前,请先检查一下给虚拟机分配的内存空间,假如本身就只有十多G的空间,那想来是无法扩容的,我的虚拟机之前就只分配了十多G的空间(这也是为什么根目录如此之小),后来因为IntelliJ Idea装不下,就已经进行过一次扩容了,给虚拟机硬盘分配了50G的空间,不过只是对.vdi文件进行了更改,对于我们这个linux系统而言它依然只索引了原来那么多的空间,所以这里依旧这么小。给虚拟机挂载的硬盘进行扩容可参考Virtual Box内虚拟机的硬盘扩容方式_2tong-CSDN博客_virtualbox虚拟机磁盘扩容。如果是真机的话,多挂个硬盘吧
首先第一步——进入分区管理系统。在终端中输入sudo fdisk /dev/sda
因为对/dev/sda进行修改需要权限,所以需要输入sudo获取权限,下文中的操作如果出现了权限不够的问题都需要在命令的最前面加入sudo。
需要管理的分区名为/dev/sda 虽然刚才df -Th查看到的根目录是/dev/sda1,但这里的1其实只是编号而已,在我的虚拟机里相应的还有sda2、sda5,而我们需要管理的是sda这一个系列。
第二步——查看现有分区。输入命令p。
结果如下:
第三步——删除分区,虽然我们只需要修改sda1,但是我计划中要将其扩容到30G,这个时候势必会被sda2、sda5 “挡道”,所以我这里干脆把三个都删了。
使用命令d,默认会从后往前删,所以输入三次d即可
第四步——创建新的分区。输入命令n,这里会先要你选择分区类型
首先我们要先创建一个Linux类型的分区,这里我们选择primary,输入p,然后输入分区号1。然后输入分区的第一个扇区,按照刚才查询的结果写即可(即填2048)。然后输入最后一个扇区,这里我们需要计算一下。
我计划扩容为30G,因此是30*1024*1024*1024,因为这里的单位为扇区,一个扇区512字节,所以还要除以一个512,再加上头扇区的扇区号,结果就是62912512。后面sda2、sda5的计算方式类似,因为我们只想要对sda1进行扩容,所以尽量保证其他扇区原来的结构不变即可。
对sda2,根据前面的查询结果,这是一个extended类型的分区,因此type这里我们选择e,编号依旧命名为2。第三次new分区时type选择l,就会自动把扇区编号设为5,这个时候我们p一下,发现sda5变成了Linux类型,但原来它是Linux 交换 / Solaris类型,因此我们使用t命令对其类型进行修改。并将其类型修改为82(查询结果中有)。
第五步——设置启动分区,对比原来的查询结果时,我发现sda1在启动这一栏有一个*号是新建的sda1没有的,于是使用命令a将其设置为启动分区。
第六步——保存并退出。使用命令w保存。使用q命令退出。
第七步——这个时候系统还是使用的原索引,我们需要重启一次,使用reboot命令进行重启。
第八步——应用更改。输入sudo resize2fs [-f] /dev/sda1
[-f]表示强制执行调整大小操作,如果sudo resize2fs /dev/sda1调整失败就加上-f再试一次。
这一步网上很多帖子都说是sudo resize2fs /dev/sda,也许是因为我使用的是Ubuntu和他们使用的CentOS不同的缘故,使用CentOS的同学可以试试sudo resize2fs /dev/sda。
第八步执行完之后再使用df -Th查看文件系统
——————————————————我是分割线————————————————————
调整了/dev/sda1的大小之后再次使用./hadoop dfsadmin -safemode get命令查看安全模式时直接就返回Safe mode is OFF了,甚至不需要执行一次leave来关闭。
完结撒花~~~❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀
问题没解决欢迎私信



