为什么这样做
需求:
-
希望实体机win10 与虚拟机Ubuntu共享数据
-
共享的数据有1T左右
-
数据方便迁移
-
数据写入速度不要太慢
最早是把1T的物理硬盘放在win下面,通过VMware tools 共享文件夹方式来共享,发现缺点如下:
-
解压50G的数据要4个小时,瓶颈在硬盘。
-
有些链接文件会错误。
由此判断共享文件夹方式不太适合大量数据复杂场景。
决定选用挂载一个物理硬盘单独做数据存储盘的方式。
实际操作方式
查看当前硬盘窗台
添加虚拟硬盘后,我们启动虚拟机,进入系统后,我们可以通过 fdisk 命令检查当前的硬盘状态。
sudo fdisk -l
执行以上命令后,我们可以看到以下输出:
这里我们可以看到,我们原来的硬盘标为 /dev/sda 。下面还能看到一个名为 /dev/sdb ,容量为 2G 的硬盘,这个就是我们刚刚新设置的 NewVirtualDisk1.vid 虚拟硬盘。
为新硬盘分区
我们将使用 fdisk 对 /dev/sdb 进行分区操作,为了简化操作,我们会将这个新硬盘全部分为一个分区,具体操作如下:
sudo fdisk /dev/sdb
进入分区工具后,我们可以输入 m 看指令说明:
我们接下来要创建新分区,所以我们将会输入 n
Command (m for help): n
>>
Partition type
p primary (0, primary, 0 extended, 4free)
e extended (container for logical partitions)
这里,我们可以给一块硬盘创建最多4个主分区,和若干逻辑分区,由于我们这里只为该硬盘创建一个分区,那么我们即创建一个主分区即可。
Select (default p):p
Partition number (1-4, default 1): 1
Frist sector (2048-4194303, default 2048): 2048
Last sector, *sectors or *size{K,M,G,T,P} (2048-4194303, default 4194303): 4194303
>> Create a new partition 1 of type 'Linux' and of size 2GiB
Command (m for help):w
我们创建分区的操作为:- p 命令创建一个主分区- 选择默认创建第一个分区- 设置分区的开始位置- 设置分区的结束位置,因为只设置一个分区,因此都选择默认选项- w 命令保存分区设置
格式化分区
我们可以使用 mkfs 命令格式化分区,具体命令如下:
sudo mkfs -t ext4 /dev/sdb1
输入命令后,可以看到分区格式化成功:
挂载分区
分区我们需要先创建一个目录,然后再把这个新分区挂载到目录上。具体操作如下:
# 我们在 ~ 目录下创建一个 data 的目录,并将新分区挂载到这里
mkdir ~/data
sudo mount /dev/sdb1 ~/data
挂载后,我们再通过 df 命令查看是否挂载成功:
开机自动挂载设置
我们使用以上方法挂载分区,重启系统之后,分区并不会自动挂载。
上图为虚拟机重启之后,再次运行 df 命令,我们可以看到,/dev/sdb1 分区并没有正常挂载,为解决这一问题,我们需要修改 /etc/fstab 配置文件。为配置 /etc/fstab ,我们需要先获取硬盘的 uuid,方法如下
ls -l /dev/disk/by-uuid
>>
lrwxrwxrwx 1 root root 10 Apr 17 11:40 287caa60-faa1-4eed-a3c0-2643afab9913 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Apr 17 11:40 4fed8d9b-8318-4cf5-8380-c8d052d28306 -> ../../dm-1
lrwxrwxrwx 1 root root 10 Apr 17 11:40 54b28c93-c6c0-48e1-9e39-54157c61f519 -> ../../sda1
lrwxrwxrwx 1 root root 10 Apr 17 11:40 ea195de6-725c-4701-98c3-1fa6a44bc102 -> ../../sdb1
# 我们因为知道我们的新硬盘是 sdb,因此可以配合 grep 命令查询
ls -l /dev/disk/by-uuid | grep sdb
lrwxrwxrwx 1 root root 10 Apr 17 11:40 ea195de6-725c-4701-98c3-1fa6a44bc102 -> ../../sdb1
接下来,我们将先备份原有的 /etc/fstab 文件
sudo cp /etc/fstab /etc/fstab.bak
然后我们将以下内容添加到 /etc/fstab 末尾
# /home/speculatecat/data
UUID=ea195de6-725c-4701-98c3-1fa6a44bc102 /home/speculatecat/data ext4 defaults 0 2
这里配置的含义如下:- UUID 为硬盘分区的 UUID 值- 路径 为挂载的目标路径- 分区格式 这里一般为 ext4- 挂载参数 一般为默认 defaults- 备份 0为不备份, 1为每天备份,2为不定期备份- 检测 0为不检测,其他为优先级
完成设置后,我们尝试重启虚拟机,看分区是否能被自动挂载。
我们可以从截图中看到,分区已经能被正常挂载。
硬盘异常情况
还存在一种常见的情况,如果硬盘被移除,或者硬盘损坏了,配置了 fstab 自动挂载,将会出现不能正常启动情况。为模拟这种情况,我们将从虚拟机中将新创建的虚拟硬盘删除。重启虚拟机,将出现以下情况:
我们可以使用命令行工具,恢复我们备份的 fstab 配置,即可修复完成。
cp /etc/fstab.bak /etc/fstab
我们可以看到,恢复了备份的 fstab 配置文件后,系统能正常启动了。
参考:
https://zhuanlan.zhihu.com/p/35774442
关于硬盘分区权限问题
默认挂载后文件夹是root才能写。
通过如下三种方法任何一种修改权限解决
chown -R tao:tao /codebase ==> 我目前用这种
chmod 777 /codebase
设置用户组,太麻烦。
后面要移动的话
Linux不要格式化如何挂载一个有数据的硬盘!
我有个远程服务器,系统硬盘换了,但是重要数据都在另一个硬盘上,这个时候客服将硬盘帮我装到机器上后我如何才能挂载呢?linux服务器插上一块有数据的硬盘,如何挂载硬盘不格式化,其中…
1、fdisk -l或parted /dev/sdb print检查硬盘加载bai成功了没有,有哪些分区。
例如du:
Disk /dev/sda: 600.1 GB, 600127266816 bytes
255 heads, 63 sectors/track, 72961 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 72961 586059201 83 Linux
Disk /dev/sdb: 1199.1 GB, 1199101181952 bytes
255 heads, 63 sectors/track, 145782 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13054 104856223+ 83 Linux
/dev/sdb2 13055 17231 33551752+ 82 Linux
/dev/sdb3 17232 145782 1032585907+ 83 Linux
2、创建zhi目录mkdir /data1 /data2
3、加载
mount /dev/sdb1 /data1
mount /dev/sdb2 /data2
4、检查分区
df -h
5、为了重启仍然dao可以加载/dev/sdb1
vi /etc/fstab
/dev/sdb1 /data1 ext3 defaults 1 2
暂无评论内容