背景:
Hadoop的HDFS文件系统的挂载, 默认指定的文件目录是/mnt/disk{N}. 当运维人员, 不小心把磁盘挂载于其他目录, 比如/mnt/data, /mnt/disk01, /mnt/diska时, HDFS会选择根分区, 当往HDFS里灌数据时, 导致的结果往往是根分区被快速的消耗尽, 而其他分区未见使用.
在CDH版本中, HDFS的配置如下所示:
dfs.datanode.data.dir => /mnt/disk{N}/dfs/dn
dfs.datanode.data.dir.perm => 755
由此可见: HDFS选择/mnt/disk{N}作为数据的存储目录是有来由的
这种情况如何处理? 该问题的本质解决方案是, 通过重新挂载相应的磁盘分区到/mnt/diskn即可, 通过编辑fstab, 重启来实现.
解决方案:
1. 采用mount的方式
*) 创建/mnt/disk{N}
mdkir -p /mnt/disk1
mdkir -p /mnt/disk2
*) 挂载/mnt/disk{N}
mount /dev/sdb2 /mnt/disk1
mount /dev/sdc1 /mnt/disk2
mount后的磁盘如下所示:
root@server-ip:~ # df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 459G 358G 100G 79% /
devtmpfs 32G 188K 32G 1% /dev
tmpfs 32G 104K 32G 1% /dev/shm
/dev/sdb2 457G 320G 136G 71% /mnt/disk1
/dev/sdc1 459G 289G 147G 67% /mnt/disk2
但采用mount的方式, 能解决一时的问题, 但重启之后, 之前mount的信息就丢失了.
2. 采用fstab的方式
*) 编辑/etc/fstab
#
/dev/sdb2 /mnt/disk1 ext3 defaults 0 0
/dev/sdc1 /mnt/disk2 ext3 defaults 0 0
*) 进行挂载测试
mount -a
echo $?
mount -a没有任何输出, 并且echo $?返回结果为0, 则表示/etc/fstab配置没问题
*) 系统重启
reboot
相关内容:
1. 如何查看磁盘分区等信息
fdisk -l
ls /dev/sd*
2. /etc/fstab里的配置项的含义
/dev/sdb2 /mnt/disk1 ext3 defaults 0 0
/dev/sdc1 /mnt/disk2 ext3 defaults 0 0
参考链接:
http://blog.sina.com.cn/s/blog_6ce9e88701014jgl.html
http://www.shangxueba.com/jingyan/121709.html