標籤:style class blog http ext com
背景:
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後的磁碟如下所示:
[email protected]:~ # 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