2012年10月13日 星期六

NFS Export different LUN with parent directory

今天客戶遇到NFS server的奇怪問題,註記一下以免忘記
情境:
有兩個空間分別mount在/new與/new/2012並將/new nfs分享出去,client端使用指令將server的/new mount起來後,可以看到/new裡面有一個2012資料夾,但資料寫入卻是寫在/new那個空間

測試:
NFS server
1. NFS server 新增兩個硬碟空間,分別為/dev/vdb1,/dev/vdc1

# fdisk -l
….......
Disk /dev/vdb: 2147 MB, 2147483648 bytes
16 heads, 63 sectors/track, 4161 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8e79b1b7

  Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1        4161     2097112+  83  Linux

Disk /dev/vdc: 2147 MB, 2147483648 bytes
16 heads, 63 sectors/track, 4161 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x7c784fd8

  Device Boot      Start         End      Blocks   Id  System
/dev/vdc1               1        4161     2097112+  83  Linux


2. Server 建立Dir:/new 並將/dev/vdb1 mount 在/new
3. 在/new 目錄下建立2012目錄,修改權限後,mount /dev/vdc1 在/new/2012

   [root@node2 ~]# chmod -R 777 /new
[root@node2 ~]# ll /new
total 20
drwxrwxrwx. 3 777 root  4096 Sep 19 15:28 2012
drwxrwxrwx. 2 777 root 16384 Sep 19 14:29 lost+found
[root@node2 ~]# ll /new/2012/
total 16
drwxrwxrwx. 2 777 root 16384 Sep 19 14:29 lost+found
[root@node2 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root         5.5G  2.9G  2.4G  56% /
/dev/vdb1             2.0G   36M  1.9G   2% /new
/dev/vdc1             2.0G   35M  1.9G   2% /new/2012





4. # vi /etc/exports   加入
  /new     *(sync,rw)


5. # /etc/init.d/nfs restart      重啟nfs service
[root@node2 ~]# /etc/init.d/nfs restart
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS quotas:                                  [  OK  ]
Shutting down NFS services:                                [  OK  ]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]



NFS client
1. # showmount -e “NFSserverIP”
2. # mount IP:/new /mnt
[root@solutions ~]# mount 172.16.1.136:/new /mnt
[root@solutions ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_soldtions-LogVol00                   97G   14G   78G  16% /
…...
172.16.1.136:/new     2.0G   35M  1.9G   2% /mnt


3. # ls -al /mnt
[root@solutions ~]# ls /mnt
2012  lost+found
  [root@solutions ~]#


4. # touch /mnt/2012/test    
5. # ls /mnt/2012   
[root@solutions ~]# touch /mnt/2012/test
[root@solutions ~]# ls /mnt/2012/test
/mnt/2012/test
[root@solutions ~]#


6. # ls -al /new/2012    回到NFS server檢查,發現檔案並沒產生
[root@node2 ~]# ls /new/2012/
lost+found
[root@node2 ~]#


7. # /etc/init.d/nfs stop
   # umount /new/2012          停掉NFS並umount /dev/vdc1
   # ls -al /new/2012             發現剛產生的檔案在這邊(dev/vdb1)
[root@node2 ~]# ls /new/2012/
lost+found
[root@node2 ~]# /etc/init.d/nfs stop
Shutting down NFS mountd:                                  [  OK                                     ]
Shutting down NFS daemon:                                  [  OK                                     ]
Shutting down NFS quotas:                                  [  OK                                     ]
Shutting down NFS services:                                [  OK                                     ]
[root@node2 ~]# umount /new/2012/

[root@node2 ~]# ls /new/2012/
test
[root@node2 ~]#


解決方法:(在/etc/exports裡面加上nohide & crossmnt兩個參數)
1. # vim /etc/exports
  /new     *(sync,rw,nohide,crossmnt)

2. # /etc/init.d/nfs start        重啟nfs 服務
3.到Client 將/new mount 起來後
  # echo `date` >  /mnt/2012/test2
  # ls -al /mnt/2012             應該會看到剛產生的檔案
[root@solutions ~]# mount 172.16.1.136:/new /mnt
[root@solutions ~]# echo `date` > /mnt/2012/test2
[root@solutions ~]# ls /mnt/2012/
lost+found  test2
[root@solutions ~]# cat /mnt/2012/test2
Wed Sep 19 15:57:00 CST 2012
[root@solutions ~]#


4. 到NFS server的 /new/2012/ 查看有無看到一樣的檔案
  # cat /new/2012/test2
  # df -h    確認mount point是想要的
[root@node2 ~]# cat /new/2012/
lost+found/ test2
[root@node2 ~]# cat /new/2012/test2
Wed Sep 19 15:57:00 CST 2012
[root@node2 ~]#


5.完工!!

2012年7月12日 星期四

Linux 透過proxy連外的設定方式

由於小弟的公司一定要透過proxy才能上網,所以一直在找系統proxy設定的方法

一 RHEL(Fedora,centos應該也差不多)
1.CMD方式
暫時生效
# export http_proxy=http://username:password@"Proxy IP":port
# export ftp_proxy=http://username:passord@"Proxy IP":port
//其中如果proxy server不須要帳密,就只要打http://"Proxy IP":port即可

永久生效
# vim ~/.bashrc   //將上面兩行export加入即可
# source ~/.bashrc

YUM更新
# vim /etc/yum.conf   //加入
proxy=http://username:passord@"Proxy IP":port

2.在Desktop上設定
選擇『系統』>『偏好設定』>『代理伺服器』
輸入IP跟port 如果需要帳密,點選詳細設定後輸入

2012年5月15日 星期二

Ubuntu 產生軟碟機映像檔給虛擬機使用,

最近Max因為工作用的軟體只能在XP上使用,且只能用軟碟機提供程式需要的Config
為了再虛擬機上產生軟碟機,試了很多方式,還是dd最簡單:

# cd /虛擬機所在目錄
# dd if=/dev/zero of=floppy.img bs=512 count=2880

再來到虛擬機設定中,產生新的軟碟控制器(如果已經有了就不需要新增),
然後將新增的floppy掛載上去













再來將XP重開機,就可以看到嚕


2011年5月21日 星期六

Linux備份工具-dump與restore實做

系統在怎麼穩定都會有掛的一天,所以平常就好做好備份策略,以往MAX通常都用tar來作備份,最近剛好客戶需要使用dump來備份,就來作個測試練習並記錄下來以免忘記

參考資料:鳥哥有一篇關於dump的介紹

環境準備:
利用虛擬軟體準備兩台Linux OS(我用的是CentOS5.2)
配置兩台一樣的環境,基本上我只設定以下三項:
項目A (Source)B (Target)
Mem512M512M
網卡一張一張
硬碟一顆8G,一顆5G一顆8G


測試步驟:
1. 先在虛機A上安裝CentOS5.2,硬碟分割如下
/boot  (/dev/sda1)100M
/  (dev/sda2)5G
swap  (dev/sda3)1G
/var  (/dev/VolGroup00/LogVol00)1G
/data  (/dev/VolGroup00/LogVol01)896M

前三個分割區切完後,我將剩餘的空間作成LVM並切成兩個partition,主要是要測試在LVM下的dump作法

2.安裝好OS並登入後,將另一顆5G的硬碟格式化為ext3並掛載起來
# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         666     5245222+  83  Linux
/dev/sda3             667         797     1052257+  82  Linux swap / Solaris
/dev/sda4             798        1044     1984027+   5  Extended
/dev/sda5             798        1044     1983996   8e  Linux LVM

Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System

# fdisk /dev/sdb   //分割成一個即可
#fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         652     5237158+  83  Linux

#mkfs.ext3 /dev/sdb1
# mkdir /bakup          //目錄名稱自取
# mount /dev/sdb1 /bakup    //可寫到fstab,這邊只是測試就帶過
# df -h
檔案系統              容量  已用 可用 已用% 掛載點
/dev/sda2             4.9G  2.0G  2.7G  43% /
/dev/mapper/VolGroup00-LogVol00
                     992M   69M  873M   8% /var
/dev/mapper/VolGroup00-LogVol01
                     868M   17M  807M   3% /data
/dev/sda1              99M   11M   83M  12% /boot
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sdb1             5.0G 139M  4.6G   3% /bakup

這個硬碟是用來放備份的資料的,所以要用nfs來分享給B到時要來還原用
# vim /etc/exports
/bakup 192.168.56.0/24(ro,sync)      //不了解的請參考鳥哥關於nfs的介紹

#/etc/init.d/nfs restart
#chkconfig nfs on

準備動作到此完成,可以開始備份嚕

2. 備份
#dump -0uf /bakup/root.dmp /     //其中0表示完整備份,如果1就是差異化備份
#dump -0uf /bakup/boot.dmp /boot
#dump -0uf /bakup/var.dmp /var
#dump -0uf /bakup/data.dmp /data

#dump -W    //檢查有無備份成功
Last dump(s) done (Dump '>' file systems):
 /dev/sda2    (     /) Last dump: Level 0, Date Tue Mar 15 09:07:11 2011
 /dev/mapper/VolGroup00-LogVol00    (  /var) Last dump: Level 0, Date Tue Mar 15 09:18:51 2011
 /dev/mapper/VolGroup00-LogVol01    ( /data) Last dump: Level 0, Date Tue Mar 15 09:20:55 2011
 /dev/sda1    ( /boot) Last dump: Level 0, Date Tue Mar 15 09:18:31 2011
 /dev/sdb1    (/bakup) Last dump: never

//會有最後一次備份的時間
//建議將fdisk -l,fstab,ifconfig,lvm內容都存一份起來,這樣在還原時可以比對
完成後準備用另一台還原,這種方法一般都是同機還原,但因為利用虛擬技術產出的硬體都一樣,所以可以簡單作到異機還原

3. 還原
在虛機B用CentOS光碟開機,並進入Rescue Mode   //不需安裝,直接用備份檔來作
# fdisk -l     //沒有安裝應該都是空的,根據虛機A的fdisk -l內容來作分割
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         666     5245222+  83  Linux
/dev/sda3             667         797     1052257+  82  Linux swap / Solaris
/dev/sda4             798        1044     1984027+   5  Extended
/dev/sda5             798        1044     1983996   8e  Linux LVM


# mkfs.ext3 /dev/sda1
# mkfs.ext3 /dev/sda2
# mkswap /dev/sda3
製作LVM分割       //根據虛機A的LVM來作
# lvm pvcreate /dev/sda5
# lvm vgcreate VolGroup00 /dev/sda5
# lvm lvcreate -L 1G -n LogVol00 VolGroup00
# lvm lvcreate -L 896M -n LogVol01 VolGroup00
//盡可能建制的一樣,同機還原比較不會有不同的問題
# mkfs.ext3 /dev/VolGrup00/LogVol00
# mkfs.ext3 /dev/VolGrup00/LogVol01

建立一個mountpiont掛載nfs上的還原source
# mkdir /source
# mount -t nfs 192.168.56.101:/bakup /source   //這個ip是我的環境,每個人應該不同
作一個mountpoint來掛載”/”,並在裡面建立相對應的目錄來掛載其他devices
# mkdir /disk
# mount /dev/sda2 /disk
# cd /disk
# restore -rf root.dmp     //直接還原”/”,裡面會有其他應有的目錄,沒有的話要自己建立
還原完成後,依序進入/disk/boot,/disk/data,/disk/var 還原相對應的內容
# cd /disk/boot
# restore -rf boot.dmp
# cd /disk/var
# restore -rf var.dmp
# cd /dev/datadc
# restore -rf data.dmp
根據虛機A的fstab去設定devices正確資訊,主要是label要對
# e2label /dev/sda1 /boot
# e2label /dev/sda2 /
swap的label我不會設定,乾脆把fstab改掉
# vi /disk/etc/fstab


4. 安裝GRUB
# grub
grub> root (hd0,0)     //這個數值請自己參考正確位置
grub> setup (hd0)
grub> setup (hd0,0)

5. 將光碟取出用硬碟重開機應該就可以嚕

2011年1月21日 星期五

Apache Disable method方法

最近由於客戶資安等級升高,在做弱點掃描時發現apache有以下幾個Method有被攻擊的疑慮,所以請我們幫他們關閉,爬文很久後,找到方法如下:
1.關閉PUT,DELETE,CONNECT:
根據原廠文件:文件
在需要關閉這些功能的目錄下加入底下三行
<Limit PUT DELETE CONNECT>
   Deny from all
</Limit>
這個範例是整個網站都要關,就放到<Directory / ></Directory>裡面
2.關閉TRACE Method,在同一份文件中,也可以查到    //關鍵字:TraceEnable
根據文件,這個設定適用於Apache HTTP server 1.3.34 與2.0.55之後的版本
在設定檔本體加入
TraceEnable off                  //不可放到<>區段內

如果是舊版的設定方式:  //即1.3.34與2.0.55之前的版本
<Directory />
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
</Directory>
//這個方式必須安裝並啟用mod_rewrite

補充:
查詢apache版本方式:
1.rpm or dpkg安裝方式
# /etc/init.d/httpd -v
2.source code 安裝方式
# 安裝路徑/bin/httpd -v
//預設是安裝在/usr/local/apache

2010年12月14日 星期二

Ubuntu iscsi安裝與設定

先準備好iscsi設備,我準備的是以NA模擬器弄出來的iscsi硬碟
NA部份設定略過不談,本篇只討論在ubuntu10.04上怎使用iscsi....

1.相關套件:


open-iscsi
//建議用apt-get 安裝,會帶open-iscsi-utils

2.相關目錄與檔案:

/etc/iscsi/
/etc/init.d/open-iscsi   //服務起停

3.實做:
$ sudo cat /etc/iscsi/initiatorname.iscsi     //查詢iscsi name,類似san 的wwn
InitiatorName=iqn.1993-08.org.debian:01:8c1d5772487a   //"="後那一串必須加到NA裡面作設定

$ sudo iscsiadm -m discovery -t st -p NA的IP    //尋找target
//找到後會列出可用的iSCSI Target名稱,而且在/etc/iscsi/nodes下會產生對應的目錄

$ sudo iscsiadm -m node -T "iscsi target名稱" -p "NA IP" -l   //登入,成功會有success訊息
Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.99929383, portal: 192.168.56.200,3260]
Login to [iface: default, target: iqn.1992-08.com.netapp:sn.99929383, portal: 192.168.56.200,3260]: successful

$ sudo fdisk -l    //應該要能夠看到分享出來的目錄

如果沒有出現,可試試下面的方式:
$ sudo su -    //因為導向不支援sudo所以要變換成root
$ echo "- - -" > /sys/class/iscsi_host/host7/device/scsi_host/host7/scan
//其中,hostX號碼會變動,請依實際情況修正

之後就可以開始使用iscs硬碟嚕


4.補充:
$ sudo iscsiadm -m node -T "iscsi target名稱" -p "NA IP" -l   //登出
$ sudo iscsiadm -m node -o delete -T 要刪除的Target名稱 -p NAS的IP     //刪除已不用的iscsi目錄




Windows上使用:

1.安裝工具:
到微軟下載工具程式:Initiator-2.08-build3825-x86fre.exe 並安裝

2.設定:
從開始功能表中選取"Microsoft iSCSI Initiator"


將Initiator Node Name 設到NA的initiator group中

到"Discovery頁面",找到"Target Portals",點選Add -->會跳出右邊視窗,輸入NA IP

完成後,在targets就可以看到NA的資料:
點選Logon...到磁碟管理應該就可以看到新的iscsi硬碟



2010年12月8日 星期三

Linux套件管理工具介紹

Linux上只要有網路,安裝套件算相當容易,而安裝指令依據不同distro有分兩大派系,
一邊是RedHat的YUM+RPM,另一邊就是Debian的apt-get + dpkg,另外還有opensuse的yast
但由於max對這個不熟,且opensuse可以用yum...所以暫時略過不談

yum伺服器指向設定:
/etc/yum.repo.d/*.repo           //內容請參考鳥哥網站

apt-get伺服器指向設定:
/etc/apt/sources.list

以下針對兩邊常用的部份作簡單介紹:

1.RPM:     //必須自己下載rpm檔
安裝:
rpm -ivh  套件檔案
i:安裝
v:詳細模式
h:顯示安裝進度

更新:
rpm -Uvh 套件名稱
U:更新
移除:
rpm -e 套件名稱

查詢:
rpm -qa
q:查詢
qa:列出所有已安裝的套件
//常配合 |grep "關鍵字" --查詢是否有安裝相關套件

rpm -ql 套件名稱
ql:列出所有該套件所安裝之目錄與檔案

2.YUM:     //用以解決相依性問題
安裝:
yum install 套件名稱

搜尋套件:
yum search 套件名稱
or
yum list |grep 套件關鍵字   //如果不確定名稱可用這個找

更新:
yum update 套件名稱   //更新已安裝套件

清除yum暫存檔:
yum clean    //清除位在/var/cache/yum的暫存檔,可加上all參數全部清除

套件移除
yum remove 套件名稱   //依據相依性移除套件
套件群組查詢與安裝
yum grouplist    //列出所有群組

yum groupinstall 群組名稱   //根據群組名稱安裝,建議使用英文名稱
yum 使用proxy
# vim /etc/yum.conf
proxy=http://proxy.moe.edu.tw:3128     //根據自己的環境設定

3.dpkg:     //必須下載deb檔
安裝:
dpkg -i  套件檔案

更新:
dpkg --update-avail 套件檔案

移除:
dpkg -r 套件名稱

查詢:
dpkg -s 套件名稱   //查詢已安裝套件內容

4.apt-get:
安裝:
apt-get install  套件名稱    //根據相依性安裝

移除:
apt-get remove  套件名稱   //根據相依性移除套件,保留設定檔

apt-get remove --purge  套件名稱   //完整移除,連設定檔都不留

更新:
apt-get update   //更新套件資料庫內容,建議安裝套件前先做

apt-get upgrade   //查詢套件資料庫有無安裝套件新版本,若有就更新



參考文件:
1.鳥哥私房菜
2.http://wiki.ubuntu.org.cn/index.php?title=Apt%E5%92%8Cdpkg%E5%BF%AB%E9%80%9F%E5%8F%82%E8%80%83&variant=zh-tw
3.http://jerome.anyday.com.tw/archives/47

2010年11月19日 星期五

雲端主機(二)--再加一台linux為node2



h2準備:
1.新增user: hadoop,並設定金鑰登入
# useradd hadoop
# su - hadoop
$ ssh-keygen
//然後將自己的public_key丟給server並放到authorized_keys中
//取回server上hadoop的key放到authorized_keys中
//完成後互相ssh看是否正常

2.修改/etc/hosts    //讓兩邊一致,用ping測試
140.137.215.238 a238
192.168.188.10 h2

3.安裝sun-jdk
//下載tar檔
# sh jdk-6u22-linux-i586-rpm.bin
................

4.修改a238上的XML檔案:
$ vim core-site.xml







$ vim mapred-site.xml






5直接將a238上的hadoop 拷貝過來
# scp -r a238:~/hadoop-0.21.0 .
//記得改過server上的XML後再拷貝

//將a238與h2都啟動
$ cd hadoop-0.21.0
$bin/start-all.sh

測試:
用browser看http://a238:50070
應該會看到兩個node