首页 > 代码库 > shell 脚本实战笔记(4)--linux磁盘分区重新挂载

shell 脚本实战笔记(4)--linux磁盘分区重新挂载

背景:
  Hadoop的HDFS文件系统的挂载, 默认指定的文件目录是/mnt/disk{N}. 当运维人员, 不小心把磁盘挂载于其他目录, 比如/mnt/data, /mnt/disk01, /mnt/diska时, HDFS会选择根分区, 当往HDFS里灌数据时, 导致的结果往往是根分区被快速的消耗尽, 而其他分区未见使用.
  在CDH版本中, HDFS的配置如下所示:

dfs.datanode.data.dir => /mnt/disk{N}/dfs/dndfs.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% /devtmpfs 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