背景:
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后的磁盘如下所示:
[email protected]:~ # 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
# <file system> <mount point> <type> <options> <dump> <pass> /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里的配置项的含义
<file system> <mount point> <type> <options> <dump> <pass>
<file system>: 设备名或者设备卷标名
<mount point>: 设备挂载目录
<type>: 设备文件系统, vfat, ext3, ext4, swap等
<options>: 挂载参数, 可选用defaults
<dump>: 指明是否要备份。(0为不备份,1为要备份,一般根分区要备份)
<pass>: 指明自检顺序。 (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
/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
shell 脚本实战笔记(4)--linux磁盘分区重新挂载