概要描述
本文主要讲述TDH5.X和TDH6.X的数据盘挂载原理,及数据写入。
详细说明
1、操作视角
1.在配置中使用数据盘配置的推荐值,或手工设定配置,为了举例,我们假设数据盘在Manager页面上的设定值为
/mnt/disk1/hadoop/data,/mnt/disk2/hadoop/data,/mnt/disk3/hadoop/data
2.Manager在写入配置文件时,后台会为每一个目录加一个/vdir前缀,如上例的设定值在配置文件中会被转换为
/vdir/mnt/disk1/hadoop/data,/vdir/mnt/disk2/hadoop/data,/vdir/mnt/disk3/hadoop/data
在配置这一步,还会建立bind mount,将/transwarp/mounts/${sid}/${datadir}挂载到${datadir},例如为hdfs1的/mnt/disk1/hadoop/data这个目录,会执行以下操作:
mount --bind /mnt/disk1/hadoop/data /transwarp/mounts/hdfs1/mnt/disk1/hadoop/data
并保证/etc/fstab里面有如下行
/mnt/disk1/hadoop/data /transwarp/mounts/hdfs1/mnt/disk1/hadoop/data none bind 0 0
3.在容器启动后,会将容器中的/vdir挂载到容器外的/transwarp/mounts/${sid}目录
2、数据视角
1.容器内的进程看到的配置是带/vdir的,例如容器里的/vdir/mnt/disk1/hadoop/data,因此从容器里看数据被写到这些目录
2.容器中的/vdir挂载到容器外的/transwarp/mounts/${sid}目录,因此上例中,在HDFS的容器内向/vdir/mnt/disk1/hadoop/data写数据,是写到了主机的/transwarp/mounts/hdfs1/mnt/disk1/hadoop/data
3.由于建立了bind mount
mount –bind /mnt/disk1/hadoop/data /transwarp/mounts/hdfs1/mnt/disk1/hadoop/data
向主机的/transwarp/mounts/hdfs1/mnt/disk1/hadoop/data写数据最终写入了/mnt/disk1/hadoop/data
3、注意事项
当服务的数据盘损坏、重新挂载后,应确保bind mount的重新正确建立。如果bind mount建立不正确,会导致容器里写的数据实际写入了主机的根分区。