VMware虚拟机添加磁盘

前言

最近在搞使用CDH安装Hadoop的时候,需要搭建一个内网的yum源(参考使用httpd搭建内网yum源),并把CDH的RPM包放上去,方便虚拟机内网使用yum进行安装。由于我最开始虚拟机内网yum源只设置了20G的磁盘,硬盘剩余空间已经不够用,因此考虑给该虚拟机添加硬盘,并将该硬盘挂载到httpd的子目录上,在该磁盘上单独放CDH的包。

新建硬盘

VMware添加硬盘非常简单,只需要鼠标右键想要添加硬盘的虚拟机,然后点击添加,选择硬盘,根据向导进行添加即可。

图形化的向导使用非常方便,在此不作赘述,从上图可以看出,我已经添加了一个20G的硬盘到该虚拟机上,在上图的设备名为硬盘2.

在虚拟机上查看磁盘信息

启动该虚拟机,在命令行使用fdisk命令查看添加的磁盘是否存在。

1
2
3
4
5
[root@master ~]# fdisk -l | grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors

打印出的/dev/sdb即是我添加的硬盘,由于它是新添加的硬盘,所以没有像sda那样的分区( 即sda1、sda2)。如果有在Windows上使用磁盘管理器的经验的话,就会知道新添加的硬盘是无法直接使用的,需要给该硬盘进行分区,使得Linux系统“认识”它。

fdisk工具添加分区

根据上一步的结果,我们知道新加的硬盘名称为/dev/sdb, 因此我们可以直接使用fdisk给该硬盘进行分区。fdisk是Linux上一个类似于Windows上的磁盘管理器的工具,它简便易用,可以方便的进行硬盘分区。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@master ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help):

输入m可查看提示,根据提示可知,输入n可以添加一个新分区。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@master ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (10485760-41943039, default 10485760):
Using default value 10485760
Last sector, +sectors or +size{K,M,G} (10485760-41943039, default 41943039):
Using default value 41943039
Partition 2 of type Linux and of size 15 GiB is set
Command (m for help):

输入n后,会有一个向导指引创建一个新分区,分为以下几步。

  1. 选择分区类型,根据上面的信息可以看出,默认是 primary类型
  2. 选择分区号,由于我已经创建了一个分区,因此它提示我输入2-4内的整数,当前默认为2,创建后的分区为/dev/sdb2。硬盘最多可以分为4个分区,这个跟MBR和扇区的知识有关系,大概是因为硬盘为分区表保留了64字节,而每个分区参数占16个字节,因此只能存4个分区表,但由于分区可以分为主分区和拓展分区,借助拓展分区,可以分4个以上的分区,可以把拓展分区想象成指向了一块新的硬盘。最新的电脑一般默认采用GPT分区表,几乎没有限制(128个),参考MBR和GPT表
  3. 选择所创建分区的起始位置,推荐默认,因为这样可以从硬盘剩余空间的开头创建新分区。
  4. 选择分区的终止扇区位置,只能输入提示范围内的整数值,这个需要进行简单的计算,由于我新增的硬盘为20G,而我希望新分区为5G,因此将最后一个扇区41943039除以4,再加上3步骤中的起始扇区位置即可。

上面四步结束后,新的分区已经创建成功,但该分区表目前还在内存中存储,并没有写入硬盘,需要输入w命令,将分区表写入,此时fdisk命令返回。

格式化新分区

新分区是没有任何格式的,因此操作系统无法进行读写,因此需要将新分区进行格式化。

查看新分区是否创建成功

1
2
3
4
5
6
[root@master ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 17 20:31 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 17 20:31 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 17 20:31 /dev/sda2
brw-rw----. 1 root disk 8, 16 Oct 19 15:04 /dev/sdb
brw-rw----. 1 root disk 8, 17 Oct 19 15:04 /dev/sdb1

可以看到,已经有一个/dev/sdb1的设备了,现在进行格式化,centos系统下,格式化ext4的格式。

1
[root@master ~]# mkfs.ext4 /dev/sdb1

新分区已经格式化成功,下面可以挂载了。

挂载新分区

因为我使用的是httpd搭建的内网yum源,需要放置CDH的文件目录为/var/www/html/cdh,因此我需要将新分区挂载到该目录下.

1
[root@master ~]# mount /dev/sdb1 /var/www/html/cdh

已经挂载了5G大小的硬盘分区到该目录了,下面可以将CDH的包解压到该目录下了。