时间:2018-07-04
作者:魏文应
一、说明
需求说明
有时,我们想把 /var
目录 独立挂载到一块磁盘 上。特别是在 磁盘空间不足 的情况下,通过新添加一块磁盘来解决的情况。这时,我们可以把某个目录(不影响操作系统运行的目录)挂载到新磁盘上。
系统环境
- linux系统版本:
Ubuntu 18.04 LTS 64bit
。 - linux系统运行环境:运行在 virtualbox虚拟机 内。
- virtualbox版本:
virtualbox 5.2.14
。
二、磁盘准备
创建一块新虚拟磁盘
我们这里没有真实的物理磁盘,可以用虚拟机的 虚拟磁盘。选中你要设置的虚拟机(虚拟机内的系统应处于 已停止状态),右键,选择设置:
在上图中, 选择 存储 -> 控制器:SATA ,点击添加新磁盘,创建新的磁盘, 选择通用格式 VMDK(以便迁移到其它虚拟机上使用):
然后选择 动态分配(动态分配的意思,即使物理磁盘没有那么多存储空间,也没有关系,磁盘在使用过程中慢慢增加。),给磁盘命名,并设置最大磁盘大小:
启动虚拟机里的ubuntu系统,用 fdisk -l 就可以看到我们刚才创建的磁盘了,这里是 /dev/sdb
(因为我原来只有一块磁盘 /dev/sda
,所以现在是 /dev/sdb
。如果原来有 /dev/sdb
,那么新添加的磁盘就是 /dev/sdc
)
磁盘分区
挂载使用磁盘前,要对磁盘进行分区和格式化。这里,请参考 《1-13-硬盘介绍和磁盘管理》 一文。我的设置如下,把整个磁盘作为一个分区:
查看一下原来 /dev/sda 的文件类型:df -lhT
。这里,我将 /dev/sdb1 格式化为 ext4 文件系统类型(sdb只有一个分区sdb1):
mkfs.ext4 /dev/sdb1
保存/var目录下的内容
- 创建一个挂载点:
mkdir /storage
。 - 挂载 /dev/sdb1 到 /storage 目录上:
mount /dev/sdb1 /storage
。 - 复制/var目录下的内容到/storage目录中:
cp -pdr /var /storage
。 - 清空 /var目录 中的内容:
rm -rf /var/*
(通过ls命令看一下是否清空)。 - 卸载 /dev/sdb1 :
umount /dev/sdb1
。 - 将 /dev/sdb1 挂载到 /var 上:
mount /dev/sdb1 /var
。
然后通过 ls /var/
命令查看 /var 中的内容。不过,我们会发现,原来的/var里的内容,现在被保存在了 /var/var/ 这样的目录下,而且还多了一个 lost+found 目录:
为了和原来的 /var 保持一致,我们调整一下目录结构,依次执行下面三个命令:
mv /var/var/* /var/
rm -rf /var/var
rm -rf /var/lost+found
开机自动挂载磁盘
我们需要设置 开机自动挂载磁盘 。打开 vim /etc/fstab
配置文件,在其后加上下面一句:
/dev/sdb1 /var ext4 defaults 0 0
不过,我们应该通过 blkid /dev/sdb1
查看一下磁盘分区UUID,将上面一句修改为:
UUID=2d0a900b-4083-4d97-86f4-c66a0cd8249c /var ext4 defaults 0 0
然后执行 mount -a
使得配置生效,或者 重启 我们的ubuntu虚拟机。