Linux運維學習筆記之九:網絡管理和磁盤管理

第十六章 網絡管理

一、修改主機名

1、臨時修改(重啓失效)

(1)hostname  主機名

hostname chuji001

(2)hostname查看

hostname

chuji001

(3)退出shell重新登陸即可生效,重啓後失效

[root@ chuji001 ~]

2、永久修改:方法一
(1)修改/etc/sysconfig/network文件中的HOSTNAME

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=mylinux

(2)修改/etc/hosts文件中對應的主機名

vi /etc/hosts

127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4mylinux

10.11.12.13 mylinux

(3)重啓後生效

/etc/init.d/network restart或source /etc/sysconfig/network均無法生效。

2、永久修改:方法二
(1)setup命令
(2)選擇Network configuration
(3)選擇DNS configuration
(4)修改Hostname
(5)說明:

在CentOS5中setup修改完保存退出後立刻生效,並且/etc/sysconfig/network和/etc/hosts均被修改。

在CentOS6中setup修改完保存退出後並沒有立刻生效,並且只改了/etc/sysconfig/network文件,

/etc/hosts文件沒有被修改。

3、生產環境修改主機名並永久生效
(1)說明:生產環境一般不能隨便重啓服務器。
(2)首先:用hostname臨時修改主機名
(3)其次:修改/etc/sysconfig/network文件和/etc/hosts文件
(4)如果不改/etc/hosts文件中的127.0.0.1後面的主機名,則會導致系統啓動非常慢。

如:sendmail服務啓動緩慢

ldap服務解析緩慢

sudo切換用戶緩慢

二、網卡配置

1、網卡配置文件目錄/etc/sysconfig/network-scripts/ 
2、網卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 

    cat/etc/sysconfig/network-scripts/ifcfg-eth0

   DEVICE=eth0                  #網卡設備名稱,第1塊網卡爲eth0,第二塊爲eth1...

   ONBOOT=yes                   #啓動時是否激活 yes | no

   BOOTPROTO=static             #協議類型 dhcp bootp none

   IPADDR=192.168.1.90          #網絡IP地址

   NETMASK=255.255.255.0        #網絡子網地址

   GATEWAY=192.168.1.1          #網關地址

   BROADCAST=192.168.1.255      #廣播地址

   HWADDR=00:0C:29:FE:1A:09 #網卡MAC地址

   TYPE=Ethernet                #網卡類型爲以太網

DNS1=192.168.1.10              #DNS1

DNS2=192.168.2.10              #DNS2

3、網卡操作命令

/etc/init.d/network restart      :重啓所有網卡 (stop | reload)

ifdown eth0 && ifup eth0     :重啓eth0網卡

ifdown eth0                        :關閉eth0網卡

ifup eth0                          :打開eth0網卡

ifconfig eth0                    :臨時配置etho網卡IP

4、臨時配置網卡IP
(1)配置網卡eth0:

ifconfig eth0 192.168.1.91

(2)給網卡eth0配置第二個IP

ifconfig eth0:1 192.168.1.92/24

ifconfig eth0:1 192.168.1.92 netmask 255.255.255.0 up

ifconfig

eth0      Linkencap:Ethernet  HWaddr00:50:56:A3:61:79 

          inet addr: 192.168.1.91  Bcast: 192.168.1.255  Mask:255.255.255.0

eth0:1    Linkencap:Ethernet  HWaddr00:50:56:A3:61:79 

          inet addr: 192.168.1.92  Bcast: 192.168.1.255  Mask:255.255.255.0

(3)刪除網卡eth0配置第二個IP

ifconfig eth0:1 down

三、DNS配置

1、/etc/resolv.conf: 本地客戶端DNS文件

cat /etc/resolv.conf

# Generated by NetworkManager

domain openstacklocal

search openstacklocal

nameserver 192.168.90.161

nameserver 192.168.58.2

2、/etc/hosts: 設定用戶IP與名字(或域名)的對應解析表,相當於本地局域網的DNS文件

cat /etc/hosts

    127.0.0.1   localhost localhost.localdomain localhost4localhost4.localdomain4

    ::1     localhost localhost.localdomain localhost6localhost6.localdomain6

    192.168.8.198  study.linux.rhel

    192.168.8.198  localhost

3、注意事項

CentOS6中要在網卡配置文件ifcfg-eth0中配置DNS,如果在resolv.conf文件中配置,則重啓網卡服務後,

系統會自動從網卡配置文件ifcfg-eth0中同步DNS,並將resolv.conf文件中的配置項替換。

CentOS5中要在/etc/resolv.conf,不要在網卡配置文件ifcfg-eth0中配置DNS否則有可能出現問題。

四、網關配置

1、網卡配置文件中配置網關(優先級高)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

GATEWAY=192.168.1.1            #網關地址

2、在/etc/sysconfig/network文件中配置網關(優先級低)

vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=LS-B

GATEWAY=192.168.1.1

3、網關查找順序

首先在網卡配置文件中查找網關,沒找到的話纔會到/etc/sysconfig/network文件中查找

4、查看網關

route  #最後一條就是默認網關

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.1.0     *               255.255.255.0   U    0      0        0 eth0

link-local      *               255.255.0.0     U    1002   0        0 eth0

default        192.168.1.1     0.0.0.0         UG   0      0        0 eth0

5、刪除默認網關

route del default gw 192.168.1.1

6、添加默認網關

route add default gw 192.168.1.1

五、網絡檢查

1、網絡檢查
(1)ping命令

ping www.baidu.com

(2)traceroute命令

traceroute www.baidu.com

(3)telnet命令

telnet 192.168.8.12 1521

(4)nmap命令

nmap 192.168.8.12

2、查看DNS解析
(1)dig命令

dig www.baidu.com

(2)nslookup命令

nslookup www.baidu.com

(3)host命令

host www.baidu.com

3、tcpdump抓包命令

tcpdump -i eth1

六、網絡排錯

1、局域網的機器無法上網排錯
基本檢查思路:

(1)查檢物理鏈路是否通暢

(2)本機IP、路由、DNS的設置是否正確

(3)測試到網關或路由器的網絡通暢情況。先測網關再測路由,一級一級的測

(4)測試ping到其它IP的網絡通暢情況

(5)測試DNS的通暢情況

(6)根據每一級的結果來排查,還可以在網關路由上逐級排查

2、網站服務器訪問慢,打不開排錯
基本檢查思路:

(1)首先判斷是否是路由的問題,由於不同地的ISP有不同的DNS地址,所以有可能是路由器或網卡無法與ISP的DNS服務連接,若是這種情況,可將路由器重啓一下,更換一個IP試試。

(2)DNS解析時間。DNS解析包括往返解析的次數及每次解析所花費的時間,它們兩者的積是DNS解析所消耗的時間,

(3)網絡防火牆的問題,若是網絡防火牆設置不當,不小心把IE放進了阻止訪問列表也會出現這樣的問題,我們可直接關掉防火牆或降低防火牆的安全等級再試試能否恢復。

第十七章 磁盤管理

一、磁盤基礎

1、磁盤選型

(1)線上業務:SAS磁盤(15K/分)。

主要是對外提供服務,如:數據庫服務、存儲業務、圖片業務、及相關高併發業務。如沒有特殊要求,SAS盤是生產環境首選。

(2)線下業務:SATA磁盤(7200-10K/分)

主要是應用在不對外提供服務的應用,如備份,併發訪問不是很大的業務應用,對性能要求不高。

(3)線上高併發、小容量業務:SSD盤

(4)根據數據訪問熱度,智能分析分層存儲:SATA+SSD

智能分析:一般作法是數據的每次訪問都進行記錄,一旦發現該數據訪問非常頻繁,就將其移到SSD盤中。當數據訪問熱度降下來後,就將其移回SATA盤裏.如淘寶的服務器就是SATA500G+SSD80G。

解決大規模併發的問題,一般採用SSD+內存緩存的技術,也就是在SSD盤前面加上內存緩存。大的公司還會在內存緩存的前面再加上一層全局緩存CDN。

CDN的全稱是ContentDelivery Network,即內容分發網絡。依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術。

CDN的基本原理是廣泛採用各種緩存服務器,將這些緩存服務器分佈到用戶訪問相對集中的地區或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工作正常的緩存服務器上,由緩存服務器直接響應用戶請求。

2、磁盤選型特別注意事項(生產案例8)

千萬不要用SATA磁盤來做在線高併發服務的數據存儲或數據庫業務,這是有血的教訓。某公司曾經採用SATA盤做數據庫的存儲盤,結果導致數據庫連續宕機一個月。

解決辦法是:將SATA(RAID5)換成SAS(RAID10)

3、磁盤相關名詞翻譯

序號

英文

中文

1

Disk

磁盤

2

Head

磁頭

3

Sector

扇區

4

Track

磁道

5

Cylinder

柱面

6

Units

單元塊(一個柱面的大小)

7

Block

數據塊

8

Inode

索引節點

4、計算Linux系統掛載磁盤的大小
(1)公式

磁盤大小 = 柱面數 × 柱面大小

= 柱面數 × (磁頭數 × 磁道大小)

= 磁道數 × 磁頭數 × 磁道大小    

= 磁道數 × 磁頭數 × (512字節 × 扇區數)

= cylinders × heads × 512 × sectors/track

說明:柱面數 = 磁道數,

Linux系統分區的扇面大小因固定爲512字節

(2)計算

a、查看磁盤信息

fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

b、計算

磁盤大小 = 磁道數 × 磁頭數 × (512字節 × 扇區數)

= cylinders × heads × 512 × sectors/track

= 5221 * 255 *512 * 63

= 42944186880

 

用Linux命令計算:

echo 5221*255*512*63 | bc    或echo $((5221*255*512*63))

42944186880

與fisk –l出來的42949672960稍稍有點誤差。大盤有點誤差,但如果用幾百兆的小盤是沒有誤差的了。

5、磁盤讀寫原理小結
(1)從上到下,然後從外到內。數據的讀/寫按柱面進行,而不先按盤面進行

系統將文件存儲到磁盤上時,按柱面、磁頭、扇區的方式進行,即最先是第1磁道的第一磁頭下(也就是第1盤面的第一磁道)的所有扇區,然後,是同一柱面的下一磁頭,……,一個柱面存儲滿後就推進到下一個柱面,直到把文件內容全部寫入磁盤。也就是文件的記錄在同一盤組上存放是應先集中放在一個柱面上,然後再順序存放在相鄰的柱面上,對應同一柱面,則應該按盤面的次序順序存放。

系統也以相同的順序讀出數據。讀出數據時通過告訴磁盤控制器要讀出扇區所在的柱面號、磁頭號和扇區號(物理地址的三個組成部分)進行。磁盤控制器則直接使磁頭部件步進到相應的柱面,選通相應的磁頭,等待要求的扇區移動到磁頭下。在扇區到來時,磁盤控制器讀出每個扇區的頭標,把這些頭標中的地址信息與期待檢出的磁頭和柱面號做比較(即尋道),然後,尋找要求的扇區號。待磁盤控制器找到該扇區頭標時,根據其任務是寫扇區還是讀扇區,來決定是轉換寫電路,還是讀出數據和尾部記錄。找到扇區後,磁盤控制器必須在繼續尋找下一個扇區之前對該扇區的信息進行後處理。如果是讀數據,控制器計算此數據的ECC碼,然後,把ECC碼與已記錄的ECC碼相比較。如果是寫數據,控制器計算出此數據的ECC碼,與數據一起存儲。在控制器對此扇區中的數據進行必要處理期間,磁盤繼續旋轉。

(2)不同磁頭間的切換是電子切換(如果不作磁頭切換,則是所有磁頭同時讀同一柱面),而不同磁道的間的切換(尋道)需要磁頭做徑向運動,需要步進電機調節,這個動作是機械切換,效率最差。

二、CDN百度百科

1、簡介

CDN的全稱是ContentDelivery Network,即內容分發網絡。CDN是構建在網絡之上的內容分發網絡,依靠部署在各地的邊緣服務器,通過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網絡擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術。

CDN的基本原理是廣泛採用各種緩存服務器,將這些緩存服務器分佈到用戶訪問相對集中的地區或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工作正常的緩存服務器上,由緩存服務器直接響應用戶請求。

2、服務模式

內容分發網絡(CDN)是一種新型網絡構建方式,它是爲能在傳統的IP網發佈寬帶豐富媒體而特別優化的網絡覆蓋層;而從廣義的角度,CDN代表了一種基於質量與秩序的網絡服務模式。

簡單地說,內容分發網絡(CDN)是一個經策略性部署的整體系統,包括分佈式存儲負載均衡、網絡請求的重定向和內容管理4個要件,而內容管理和全局的網絡流量管理(Traffic Management)是CDN的核心所在。通過用戶就近性和服務器負載的判斷,CDN確保內容以一種極爲高效的方式爲用戶的請求提供服務。

總的來說,內容服務基於緩存服務器,也稱作代理緩存(Surrogate),它位於網絡的邊緣,距用戶僅有"一跳"(Single Hop)之遙。同時,代理緩存是內容提供商源服務器(通常位於CDN服務提供商的數據中心)的一個透明鏡像。這樣的架構使得CDN服務提供商能夠代表他們客戶,即內容供應商,向最終用戶提供儘可能好的體驗,而這些用戶是不能容忍請求響應時間有任何延遲的。

3、應用對比

首先簡單表述一下傳統的動態系統的訪問方法:用戶的請求過程是,用戶經過網絡中的路由A、B的傳輸,最終將發送的請求交於動態系統來處理,但是由於IP網絡本身的“盡力而爲的原則”、網絡鏈路中複雜的環境及硬件的不可靠性的確實存在,致使用戶要出現重複發送的請求的現狀,所以最終導致用戶的請求在提交的過程中出現等待、數據加載時間過長的一些現象的普遍存在,這些在線提交式系統的緩慢直接地影響到辦公人員的工作效率,這也是制約着很多大型企業在協同辦公OA、ERP、SAP等信息化建設中,出現最多的問題。

而CDN分發解決方案解決了與靜態網站相關的性能和可靠性問題,而在當今在線業務體驗中,與分發靜態和動態元素和應用相關的獨特挑戰,則由速網的動態網站加速(動態網站加速)來解決。

4、關鍵技術

(1)內容發佈:它藉助於建立索引、緩存、流分裂、組播(Multicast)等技術,將內容發佈或投遞到距離用戶最近的遠程服務點(POP)處;

(2)內容路由:它是整體性的網絡負載均衡技術,通過內容路由器中的重定向(DNS)機制,在多個遠程POP上均衡用戶的請求,以使用戶請求得到最近內容源的響應;

(3)內容交換:它根據內容的可用性、服務器的可用性以及用戶的背景,在POP的緩存服務器上,利用應用層交換、流分裂、重定向(ICP、WCCP)等技術,智能地平衡負載流量;

(4)性能管理:它通過內部和外部監控系統,獲取網絡部件的狀況信息,測量內容發佈的端到端性能(如包丟失、延時、平均帶寬、啓動時間、幀速率等),保證網絡處於最佳的運行狀態。

5、主要特點

1、本地Cache加速 提高了企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度,並大大提高以上性質站點的穩定性

2、鏡像服務 消除了不同運營商之間互聯的瓶頸造成的影響,實現了跨運營商的網絡加速,保證不同網絡中的用戶都能得到良好的訪問質量。

3、遠程加速 遠程訪問用戶根據DNS負載均衡技術智能自動選擇Cache服務器,選擇最快的Cache服務器,加快遠程訪問的速度

4、帶寬優化 自動生成服務器的遠程Mirror(鏡像)cache服務器,遠程用戶訪問時從cache服務器上讀取數據,減少遠程訪問的帶寬、分擔網絡流量、減輕原站點WEB服務器負載等功能。

5、集羣抗攻擊 廣泛分佈的CDN節點加上節點之間的智能冗餘機制,可以有效地預防黑客入侵以及降低各種D.D.o.S攻擊對網站的影響,同時保證較好的服務質量 。

6、產品優勢

CDN能幾乎涵蓋國內所有線路。而在可靠性上, CDN 在結構上實現了多點的冗餘,即使某一個節點由於意外發生故障,對網站的訪問能夠被自動導向其他的健康節點進行響應。CDN能輕鬆實現網站的全國鋪設,不必考慮服務器的投入與託管、不必考慮新增帶寬的成本、不必考慮多臺服務器鏡像同步、不必考慮更多的管理維護技術人員。

三、磁盤分區基礎

1、導出分區表(備份分區表)
(1)導出

dd if=/dev/sda of=mbr.bin bs=512 count=1

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.000469442 s, 1.1 MB/s

(2)查看導出的文件類型

file ~/mbr.bin

/root/mbr.bin: x86 boot sector; GRand Unified Bootloader, stage1version 0x3, boot drive 0x80, 1st sector stage2 0x849e8, GRUB version 0.94;partition 1: ID=0x83, active, starthead 32, startsector 2048, 1024000 sectors;partition 2: ID=0x8e, starthead 221, startsector 1026048, 82860032 sectors,code offset 0x48

(3)查看文件內容(二進制文件用od命令查看,不常用)

od –ax mbr.bin

0000000   k   H dle dle so   P   < nul  0   8 nul nul  so  X  so   @

           48eb    1090   d08e    00bc    b8b0   0000    d88e    c08e

0000020   {   > nul  |   ? nul ack   9 nul stx  s   $   j   !ack nul

           befb    7c00   00bf    b906    0200   a4f3    21ea    0006

0000040 nul   >   > bel  8 eot   u  vt etx  F dle soh   ~   ~ bel  u

           be00    07be   0438    0b75    c683   8110    fefe    7507

...

0000760 nul nul nul nul nul nul nul nul nul nul nul nul nul nul   U   *

           0000    0000   0000    0000    0000   0000    0000    aa55

2、fdisk分區命令:只能對小於2T的磁盤進行分區
(1)查看系統磁盤情況

fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes

255 heads, 63 sectors/track, 5221 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000c4f1d

 

   Device Boot      Start        End      Blocks  Id  System

/dev/sda1   *           1          64      512000  83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              64        5222   41430016   8e  Linux LVM

 

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

(2)查看指定磁盤情況

fdisk -l /dev/sdb

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

(3)分區

a、對新加磁盤/dev/sdb進行分區

fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI orOSF disklabel

Building a new DOS disklabel with disk identifier 0x476481da.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.

 

Warning: invalid flag 0x0000 of partition table 4 will be correctedby w(rite)

 

WARNING: DOS-compatible mode is deprecated. It's stronglyrecommended to

         switch off the mode(command 'c') and change display units to

         sectors (command'u').

Command (m for help):

b、輸入m,打開幫助

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

   o   create a new empty DOS partition table

   p   print the partition table

   q   quit without saving changes

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit

   x   extra functionality (experts only)

Command (m for help):

c、輸入n,創建一個新分區

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

d、輸入p,創建一個主分區

p

Partition number (1-4):

e、輸入1,爲新創建的主分區指定分區號

Partition number (1-4): 1

First cylinder (1-130, default 1):

f、輸入1,也可以直接回車(默認爲1),爲新創建的主分區指定起始柱面號

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):

g、輸入+100M(終止柱面號不好判斷,直接通過大小來指定),指定新創建的主分區的大小

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130):+100M    

Command (m for help):

h、輸入p,打印查看新創建的主分區

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x476481da

 

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1          14      112423+ 83  Linux

 

Command (m for help):

i、輸入n,創建一個新分區(擴展分區)

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

j、輸入e,創建一個擴展分區

e

Partition number (1-4):

k、輸入2,爲新創建的擴展分區指定分區號

Partition number (1-4): 2

First cylinder (15-130, default 15):

l、直接回車(默認從15號柱面開始),爲新創建的擴展分區指定起始柱面號

First cylinder (15-130, default 15):

Using default value 15

Last cylinder, +cylinders or +size{K,M,G} (15-130, default 130):

m、直接回車(默認從130號柱面結束,也就是把全部剩餘空間全給該分區),爲創建的擴展分區指定結束柱面號

Last cylinder, +cylinders or +size{K,M,G} (15-130, default 130):

Using default value 130

Command (m for help):

n、輸入p,打印查看新創建的分區

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x6e0db631

 

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1          14      112423+ 83  Linux

/dev/sdb2              15         130      931770   5  Extended

o、輸入n,在擴展分區上創建新的邏輯分區

Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

p、輸入l,創建一個邏輯分區

l

First cylinder (15-130, default 15):

q、直接回車(默認從15號柱面開始),爲新創建的邏輯分區指定起始柱面號

First cylinder (15-130, default 15):

Using default value 15

Last cylinder, +cylinders or +size{K,M,G} (15-130, default 130):

r、輸入+400M,指定新創建的邏輯分區的大小

Last cylinder, +cylinders or +size{K,M,G} (15-130, default 130):+400M

Command (m for help):

s、輸入p,打印查看新創建的分區

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x6e0db631

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1          14      112423+ 83  Linux

/dev/sdb2              15         130      931770   5  Extended

/dev/sdb5              15          66      417658+ 83  Linux

Command (m for help):

t、輸入n,再在擴展分區上創建新的邏輯分區

Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

u、輸入l,再創建一個新邏輯分區

l

First cylinder (67-130, default 67):

v、直接回車,爲新創建的邏輯分區指定起始柱面號

First cylinder (67-130, default 67):

Using default value 67

Last cylinder, +cylinders or +size{K,M,G} (67-130, default 130):

w、直接回車,指定新創建的邏輯分區的大小

Last cylinder, +cylinders or +size{K,M,G} (67-130, default 130):

Using default value 130

Command (m for help):

x、輸入p,打印查看新創建的分區

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x6e0db631

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1          14      112423+ 83  Linux

/dev/sdb2              15         130      931770   5  Extended

/dev/sdb5              15          66      417658+ 83  Linux

/dev/sdb6              67         130      514048+ 83  Linux

Command (m for help):

y、輸入w,保存新創建的分區

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

z、查看指定磁盤/dev/sdb分區情況

fdisk -l /dev/sdb

Disk /dev/sdb: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x6e0db631

 

   Device Boot      Start         End      Blocks  Id  System

/dev/sdb1               1          14      112423+ 83  Linux

/dev/sdb2              15         130      931770   5  Extended

/dev/sdb5              15          66      417658+ 83  Linux

/dev/sdb6              67         130      514048+ 83  Linux

(4)通知操作系統分區表已發生變化

a、方法一:重啓操作系統

b、使用partprobe命令

partprobe 

Warning: WARNING: the kernel failed to re-read the partition tableon /dev/sda (Device or resource busy). As a result, it may not reflect all of your changes until after reboot.

partprobe /dev/sdb

注:partprobe如不接磁盤,有時會出現Warning,最好是接上磁盤名,通知系統指定磁盤的分區表已發生變化。

c、查看設備文件

ll /dev/sd*

brw-rw----. 1 root disk 8,  0Feb  6 22:57 /dev/sda

brw-rw----. 1 root disk 8,  1Feb  6 22:00 /dev/sda1

brw-rw----. 1 root disk 8,  2Feb  6 22:00 /dev/sda2

brw-rw----. 1 root disk 8, 16 Feb 6 22:59 /dev/sdb

brw-rw----. 1 root disk 8, 17 Feb 6 22:59 /dev/sdb1

brw-rw----. 1 root disk 8, 18 Feb 6 22:59 /dev/sdb2

brw-rw----. 1 root disk 8, 21 Feb 6 22:59 /dev/sdb5

brw-rw----. 1 root disk 8, 22 Feb 6 22:59 /dev/sdb6

(5)改變分區格式

a、fdisk分區所在的磁盤

fdisk /dev/sdb

b、輸入t,進行分區格式修改

Command (m for help): t

c、輸入5,對5號分區進行修改

Partition number(1-6):5

d、輸入L,列出Linux所支持的所有分區格式

Hex code (type L to List codes):L

e、輸入8e,修改分區格式爲 Linux LVM

Hex code (type L to List codes):8e

f、輸入p,打印查看新創建的分區

g、輸入w,保存改變

(6)刪除分區

a、fdisk分區所在的磁盤

fdisk /dev/sdb

b、輸入d,表示要刪除分區

Command (m for help): d

c、輸入5,對5號分區進行刪除

Partition number(1-6):5

d、輸入p,打印查看新創建的分區

f、輸入w,保存改變

(7)格式化分區

mkfs.ext4 /dev/sdb1

(8)取消文件系統的自動檢查

tune2fs -c -l /dev/sdb1

(9)掛載分區

mount /dev/sdb1 /data/bak1

3、parted分區命令:適合於對大於2T的磁盤進行分區,且必須將磁盤轉爲GPT格式
(1)通過parted命令查看磁盤信息

parted /dev/sdc

GNU Parted 2.1

使用 /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted)

(2)輸入help,查看parted幫助

(parted) help                                                            

  align-check TYPE N                        check partition N forTYPE(min|opt) alignment

  check NUMBER                             do a simple checkon the file system

  cp [FROM-DEVICE] FROM-NUMBERTO-NUMBER   copy file system to anotherpartition

  help [COMMAND]                           print general help,or help on COMMAND

  mklabel,mktableLABEL-TYPE               create a newdisklabel (partition table)

  mkfs NUMBER FS-TYPE                      make a FS-TYPE filesystem on partition NUMBER

  mkpart PART-TYPE [FS-TYPE]START END     make a partition

  mkpartfs PART-TYPE FS-TYPESTART END     make a partition with afile system

  move NUMBER START END                    move partition NUMBER

  name NUMBER NAME                         name partition NUMBERas NAME

  print[devices|free|list,all|NUMBER]    display the partition table, available devices, free space, all foundpartitions, or a particular partition

  quit                                     exit program

  rescue START END                         rescue a lostpartition near START and END

  resize NUMBER START END                  resize partition NUMBER andits file system

  rm NUMBER                                delete partition NUMBER

  select DEVICE                            choose the deviceto edit

  set NUMBER FLAG STATE                    change the FLAG onpartition NUMBER

  toggle [NUMBER [FLAG]]                   toggle the state of FLAG onpartition NUMBER

  unit UNIT                                set the defaultunit to UNIT

  version                                  display theversion number and copyright information of GNU Parted

(parted)

(3)輸入p,查看指定磁盤分區信息

(parted) p                                                               

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

 

Number  Start   End    Size    Type      File system  標誌

 1      32.3kB 1069MB  1069MB  extended

 5      64.5kB 535MB   535MB   logical

 6      535MB  1069MB  535MB   logical

(parted) 

(4)輸入rm加磁盤Number,刪除指定分區,如查磁盤已mount,則必須先umount

(parted) rm 6                                                             

(parted)          

(5)輸入p,查看是否刪除成功

(parted) p                                                               

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

 

Number  Start   End    Size    Type      File system  標誌

 1      32.3kB 1069MB  1069MB  extended

 5      64.5kB 535MB   535MB   logical

(parted)  

(6)同理輸入rm 5和rm 1,刪除5號分區和1號分區

(parted) rm 5                                                            

(parted) rm 1                                                            

(parted)

(7)輸入p,查看是否刪除成功

(parted) p                                                               

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Number  Start  End Size  Type  File system 標誌

(parted)

(8)輸入mklabel gpt,修改磁盤分區標識,將磁盤轉換爲gpt格式

(parted) mklabel gpt                                                      

警告: The existing disk label on /dev/sdcwill be destroyed and all data on this disk will be lost. Do you want tocontinue?

是/Yes/否/No? yes  

(parted)

(7)輸入p,查看轉換後的磁盤信息                                                     

(parted) p                                                                

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start  End Size  File system  Name  標誌

(parted)  

(9)輸入mkpart命令,創建一個500M主分區(默認爲MB)

(parted) mkpart primary 0 500                                            

警告: The resulting partition is notproperly aligned for best performance.

忽略/Ignore/放棄/Cancel? Ignore

(parted)

(10)再次輸入mkpart命令,創建一個500M邏輯分區

(parted) mkpart logical 501 1000

(parted)

(11)輸入p,查看分區信息      

(parted) p                                                               

Model: VMware Virtual disk (scsi)

Disk /dev/sdc: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start   End     Size  File system  Name     標誌

 1      17.4kB 500MB   500MB               primary

 2      501MB  1000MB  499MB               logical

(parted)

(12)輸入quit,直接退出(與fdisk不同,parted是直接修改,不需保存)

(parted) quit                                                            

信息: You may need to update/etc/fstab.    

(13)在Linux系統查看設備文件

ll /dev/sdc*

brw-rw----. 1 root disk 8, 32 2月   7 12:37 /dev/sdc

brw-rw----. 1 root disk 8, 33 2月   7 12:30 /dev/sdc1

brw-rw----. 1 root disk 8, 34 2月   7 12:30 /dev/sdc2

(14)格式化分區sdc1

mkfs -t ext4 /dev/sdc1

mkfs -t ext4 /dev/sdc2

(15)掛載/dev/sdc1到/tmp

mount /dev/sdc1 /tmp

4、parted命令:使用腳本進行非交互式分區

vi /server/scripts/parted.sh

parted /dev/sdb mklabel gpt

parted /dev/sdb mkpart primary 0 500

parted /dev/sdb mkpart logical 501 1000

parted /dev/sdb p

mkfs -t ext4 /dev/sdc1 /dev/sdc2

mount /dev/sdc1 /tmp

5、分區的建議

(1)有數據的單個業務服務要分出數據分區。如/data

(2)存放重要數據業務的服務器要分出數據分區。如/data

四、文件系統基礎

1、常見文件系統類型
(1)常用操作系統一般所使用的文件系統

Windows:FAT、FAT32、NTFS

Linux/Unix:UFS、ext2、ext3、ext4、zfs、xfs、Reiserfs

網絡文件系統:NFS、MFS、GFS(MFS和GFS屬於分佈式文件系統)

(2)查看Linux系統支持的文件系統

ll /lib/modules/2.6.32-358.el6.i686/kernel/fs/

drwxr-xr-x. 2 root root  409612月  1 2014 autofs4

drwxr-xr-x. 2 root root  409612月  1 2014 btrfs

drwxr-xr-x. 2 root root  409612月  1 2014 cachefiles

drwxr-xr-x. 2 root root  409612月  1 2014 cifs

drwxr-xr-x. 2 root root  409612月  1 2014 configfs

drwxr-xr-x. 2 root root  409612月  1 2014 cramfs

drwxr-xr-x. 2 root root  409612月  1 2014 dlm

drwxr-xr-x. 2 root root  409612月  1 2014 ecryptfs

drwxr-xr-x. 2 root root  409612月  1 2014 exportfs

drwxr-xr-x. 2 root root  409612月  1 2014 ext2

drwxr-xr-x. 2 root root  409612月  1 2014 ext3

drwxr-xr-x. 2 root root  409612月  1 2014 ext4

drwxr-xr-x. 2 root root  409612月  1 2014 fat

drwxr-xr-x. 2 root root  409612月  1 2014 fscache

drwxr-xr-x. 2 root root  409612月  1 2014 fuse

drwxr-xr-x. 2 root root  409612月  1 2014 gfs2

drwxr-xr-x. 2 root root  409612月  1 2014 jbd

drwxr-xr-x. 2 root root  409612月  1 2014 jbd2

drwxr-xr-x. 2 root root  409612月  1 2014 jffs2

drwxr-xr-x. 2 root root  409612月  1 2014 lockd

-rwxr--r--. 1 root root 12592 1月  30 2013 mbcache.ko

drwxr-xr-x. 2 root root  409612月  1 2014 nfs

drwxr-xr-x. 2 root root  409612月  1 2014 nfs_common

drwxr-xr-x. 2 root root  409612月  1 2014 nfsd

drwxr-xr-x. 2 root root  409612月  1 2014 nls

drwxr-xr-x. 2 root root  409612月  1 2014 squashfs

drwxr-xr-x. 2 root root  409612月  1 2014 ubifs

drwxr-xr-x. 2 root root  409612月  1 2014 udf

(3)查看Linux系統默認安裝的文件系統

ll /sbin/mkfs.*

-rwxr-xr-x. 1 root root 22476 1月   9 2013 /sbin/mkfs.cramfs

-rwxr-xr-x. 5 root root 61072 10月 13 2012 /sbin/mkfs.ext2

-rwxr-xr-x. 5 root root 61072 10月 13 2012 /sbin/mkfs.ext3

-rwxr-xr-x. 5 root root 61072 10月 13 2012 /sbin/mkfs.ext4

-rwxr-xr-x. 5 root root 61072 10月 13 2012 /sbin/mkfs.ext4dev

lrwxrwxrwx. 1 root root     712月  1 2014 /sbin/mkfs.msdos -> mkdosfs

lrwxrwxrwx. 1 root root     712月  1 2014 /sbin/mkfs.vfat -> mkdosfs

2、文件系統選擇
(1)SAS/SATA硬盤:

Reiserfs:大量小文件業務首選

xfs      :數據庫業務(如MySQL)

ext4     :視頻下載、流媒體、數據庫、小文件業務

ext2     :藍汛cache業務(CDN網站加速業務)

(2)SSD硬盤:

a、ext4和Reiserfs可以做爲SSD盤的文件系統,但沒對SSD做優化,不能充分發揮SSD盤的性能,並影響SSD盤的使用時間。

b、Btrfs對SSD盤做了優化,由mount通過參數啓用。但Btrfs仍處於實驗階段,生產環境需謹慎使用。

c、JFFS2、Nilfs2和YAFFS是常見的falsh filesystem,在嵌入式環境中廣泛應用,建議使用。性能目前還未做測試評估。

(3)選擇時的注意事項:

a、ext2是沒有日誌功能,ext3和ext4是有日誌的,如查損壞比較容易恢復(藍訊CDN)。

b、xfs和reiserfs 文件系統是需要單獨安裝的。默認不支持的。所以維護起來可能不方便。

xfs:數據庫、淘寶

reiserfs:大量小文件(10K到幾百K)的首選

c、大併發並不是過多的做硬盤的優化,而是在前端加緩存(架構師的能力)。

d、CentOS默認的文件系統都是比較優秀的。

對於CentOS5.x系列,常規應用就選默認的ext3文件系統即可。

對於CentOS6.x系列,常規應用就選默認的ext4文件系統即可。

五、NFS網絡文件共享服務基礎

1、NFS簡介
(1)NFS(Network FileSystem)即網絡文件系統.

它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。但併發比較大的時候,NFS的性能不是太好。

(2)各NFS協議版本的主要區別( 主要是V3相對V2): 
a、文件尺寸 
V2最大隻支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技術。 
b、文件傳輸尺寸
 V3沒有限定傳輸尺寸,V2最多隻能設定爲8k,可以使用-rsize and -wsize 來進行設定。 
c、完整的信息返回 
V3增加和完善了許多錯誤和成功信息的返回,對於服務器的設置和管理能帶來很大好處。 
d、增加了對TCP傳輸協議的支持 
V2只提供了對UDP協議的支持,在一些高要求的網絡環境中有很大限制,V3增加了對TCP協議的支持 
e、異步寫入特性 
f、改進了SERVER的mount性能 
g、有更好的I/O WRITES 性能。 
h、更強網絡運行效能,使得網絡運作更爲有效。 
i、更強的災難恢復功能。
2、NFS的應用場景及優缺點
(1)NFS的應用場景

NFS服務可以讓不同的客戶端掛載使用同一個目錄,作爲共享存儲使用,可以保證不同節點客戶端數據的一致性,NFS一般用於企業集羣架構的工作場景中,用來存儲共享視頻、圖片、附件等靜態資源文件(一般用戶上傳的文件都放在NFS共享裏,例如BBS的圖片、附件、頭像,但網站BBS程序不要放在NFS共享裏),NFS是當前互聯網系統架構中最常用的數據存儲服務之一,特別是中小型網站公司應用頻率很高。大公司、大網站的門戶除了使用NFS外,還可能會使用MFS、GFS、FASTFS、TFS等分佈式文件系統。

中小型網站(每天2000萬PV以下)線上應用,都有用武之地。門戶網站也會有其它方面的應用,當然未必是線上存儲使用。(一般網上定義大網站爲100萬IP/天以上)

(2)NFS的優點

a、簡單。容易上手,容易掌握,數據是文件系統之上的(文件看得到,不象分佈式的gfs、mfs,文件是看到見的)。

b、方便。部署快速,維護簡單。

c、可靠。從軟件層面上看,數據可靠性高,經久耐用。

d、穩定。這個穩定依賴於操作系統的。

(3)NFS的缺點

a、侷限性是存在單點故障。如果NFSServer宕機了,所有客戶端都不能訪問共享目錄。需要通過負載均衡及高可用方案來彌補。

b、在高併發的場合,NFS效率和性能有限。一般幾千萬以下PV的網站不是瓶頸,除非網站架構太差(參考值:2000萬PV/天)。

c、客戶端認證基於IP和主機名,權限是根據ID來識別的,安全性一般(用於內網問題不大)。

d、NFS的數據是明文的,對數據完整性不作驗證。

e、多臺機器掛載NFS服務器時,連接管理維護麻煩。耦合度太高(架構師的重要職責就是解耦),尤其NFS服務端出問題後,所有NFS客戶端都處於掛掉狀態(測試環境可以使用autofs自動掛載解決,生產環境一般不會用autofs)。

3、NFS掛載的原理
(1)掛載命令格式

mount 參數 IP:目錄 本地目錄

(2)RPC服務

由於NFS支持的功能相當多,而不同的功能都會使用不同的程序來啓動,每啓動一個功能就會啓用一些端口來傳輸數據,因此NFS在傳輸數據時使用的端口會隨機選擇,無法固定。那麼NFS客戶端是如何知道NFS服務端使用哪個端口呢?答案就是RPC(Remote Procedure Call,中文意思是遠程過程調用)協議/服務來實現的。

NFS的RPC服務最主要的功能就是記錄每個NFS功能所對應的端口號,並且在NFS客戶端請求時將該端口和功能對應的信息傳遞給請求數據的NFS客戶端,從而可以確保客戶端可以連接到正確的NFS端口上,達到數據傳輸、交互的目的。這個RPC服務很類似於在NFS服務端和NFS客戶端之間的一箇中介。

CentOS5.x的隨機端口一般小於1024,RPC服務名是portmap

CentOS6.4的隨機端口都比較大,RPC服務名是rpcbind

4、NFS服務流程
(1)服務端啓動NFS服務

首先,啓動rpcbind服務,等待接收NFS服務端口信息

然後,啓動NFS服務,向rpcbind服務註冊相應服務端口

(2)客戶端使用NFS服務

首先,客戶端通過RPC服務,向服務羰的RPC服務的111端口發起NFS存取請求。

其次,服務端的RPC服務找到對應的已註冊的NFS服務端口後,通知客戶端的RPC服務。

然後,客戶端就獲取到服務端NFS服務的正確端口,直接與服務端NFS服務進行數據操作。

最後,客戶端完成操作後,將結果通知用戶。

5、NFS軟件包
(1)nfs-utils:NFS服務的主程序

包括rpc.nfsd、rpc.mountd兩個daemons和相關文檔說明及執行命令文件等。

(2)portmap/rpcbind:RPC的主程序

CentOS5.x的RPC服務名是portmap

CentOS6.x的RPC服務名是rpcbind

6、NFS常用參數
(1)訪問權限選項

ro:設置輸出目錄只讀

rw:設置輸出目錄讀寫

(2)用戶映射選項

all_squash:將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);

no_all_squash:與all_squash取反(默認設置);

root_squash:將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);

no_root_squash:與rootsquash取反,如果是root用戶使用NFS時,對共享目錄有root權限(權限過大);

anonuid=xxx:將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);

anongid=xxx:將遠程訪問用戶組都映射爲匿名用戶組賬戶,指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx);

(3)其它選項

secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);

insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;

sync:將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;

async:將數據先保存在內存緩衝區中,必要時才寫入磁盤;

wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);

no_wdelay:若有寫操作則立即執行,應與sync配合使用;

subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);

no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;

7、NFS服務器的配置

NFS服務器的配置相對比較簡單,只需要在相應的配置文件中進行設置,然後啓動NFS服務器即可。

NFS的常用目錄

/etc/exports               NFS服務的主要配置文件

/usr/sbin/exportfs          NFS服務的管理命令

/usr/sbin/showmount         客戶端的查看命令

/var/lib/nfs/etab           記錄NFS分享出來的目錄的完整權限設定值

/var/lib/nfs/xtab           記錄曾經登錄過的客戶端信息

8、NFS的權限問題:

nfs的權限由兩部分組成

1.遠端主機對該目錄的權限(rw,ro),在exports中決定,這是第一扇門;

2.被共享目錄在nfs服務器端的權限,由該目錄的屬組,屬主,權限大小決定,這是第二扇門

注意:如果,第一扇門的權限是ro,即使第二扇門的權限是777,那麼這個目錄也是不可寫的。

如果,第一扇門的權限是rw,客戶端的用戶在該目錄的權限就和客戶端用戶的身份和該目錄本身的權限,屬主,屬組有關,客戶端用戶的身份會被折射到服務器端:比如:客戶端以along的身份登錄,而在服務器端改目錄的屬主也是along,客戶端和服務器端along的UID也要一樣,那麼客戶端就可以在該目錄爲所欲爲;如果客戶端是以root的身份登錄,因爲服務器端默認有root_squash參數,所以root的身份會被壓縮成nfsnobody,假如改目錄的屬主是along,權限是755,那麼客戶端的權限是隻讀。

9、NFS的掛載
(1)查看是否可以查看服務端共享

showmount –e 192.168.1.8

(2)通過mount命令掛載(重啓後失效)

mount –t nfs 192.168.1.8:/data /mnt/nfs

(3)查看掛載是否成功

df –h

(4)掛載永久生效的辦法

a、方法一:寫入/etc/rc.local文件

vi /etc/rc.local

/bin/mount –t nfs 192.168.1.8:/data /mnt/nfs

b、方法二:寫入/etc/fstab文件

vi /etc/fstab

192.168.1.8:/data   /mnt/nfs    nfs    default   0    0

注意:最後2個選項必須用0(不備份,不做磁盤檢查),不能用1,否則很有可能啓不來

c、兩種方法的優缺點

(i)寫入/etc/rc.local文件中:

優點是不會影響系統的啓動,當NFS服務出現問題時,系統可以正常啓動

缺點是偶爾開機會掛載不了

(ii)寫入/etc/fstab文件中:

缺點上當NFS服務端處於不可用狀態時,那麼客戶端開機後可能會導致系統無法啓動的風險。因爲fstab可能會優先於網絡啓動,此時還連不上NFS,所以儘量不要將NFS放在/etc/fstab文件中掛載。

d、永久掛載方法的建議

把NFS的rpc 服務的啓動命令和掛載命令均放入/etc/rc.local文件中,然後通過nagios監控軟件監控開機後的掛載情況。

tail -2 /etc/rc.local

/etc/init.d/rpcbind start

/bin/mount –t nfs 192.168.1.8:/data /mnt/nfs

e、經驗:統一開機啓動位置的規範。

要麼把所有開機啓動服務放到rc.local中。相當於把/etc/rc.local當作服務器的檔案,所有服務器啓動配置都放到檔案裏,做好註釋。

要麼寫好啓動腳本,都用chkconfig管理。

10、客戶端mount掛載參數
(1)-t vfstype 指定文件系統的類型

Windows NT ntfs文件系統:ntfs 

UNIX(LINUX) 文件網絡共享:nfs

(2)-o 參數

async:異步處理,不會同步寫磁盤,會提高性能,但會降低數據安全。不推薦使用

atime:每次訪問時,更新訪問時間,是默認選項,在高併發時,建議明確加上noatime,取消此默認項,提升IO。

auto:能夠被自動掛載通-a選項。相當於mount -a了一次

defaults:缺省值包括rw、suid、dev、auto、nouser、async

noatime:不更新文件訪問時間。(常用優化參數)

nodiratime:不更新目錄訪問時間。高併發建議使用.(常用優化參數)

noauto:不會自動掛載文件系統。

noexec:掛載的文件系統裏不能執行二進制文件

nosuid:不允許有 suid   , 防止遠程用戶運行setuid程序獲得更高權限

nouser:使用者可以執行umount 的動作

user:使用者可以執行 mount 的動作

owner:

remount:重新掛載一個已掛載的文件系統,且不會改變設備或掛載點。當系統故障進入single或rescue模式修復系統時,會發現根文件常常變只讀,不允許修改,這時可以mount -oremount,rw /,將/設爲讀寫。

suid:允許設置suid

sync:同步(常用優化參數)

ro:採用只讀方式掛接設備

rw:採用讀寫方式掛接設備
bg: 如果安裝失敗(服務器沒有響應),在後臺一直嘗試,繼續發其它的安裝請求
hard :以硬方式安裝文件系統(這是默認情況)。如果服務器當機,讓試圖訪問它的操作被阻塞,直到服務器恢復爲止。
soft: 以軟方式安裝文件系統。如果服務器當機,讓試圖訪問它的操作失敗,返回一條出錯消息。這項功能對於避免進程“掛”在無關緊要的安裝操作上來說非常有用。(常用優化參數)
intr: 允許用戶中斷被阻塞的操作(並且讓它們返回一條出錯消息)(常用優化參數)
nointr: 不允許用戶中斷
retrans=n :指定在以軟方式安裝的文件系統上,在返回一條出錯消息之前重複發出請求的次數。
timeo=n :設置請求的超時時間(以十分之一秒爲單位)
rsize=n :設置讀緩衝的大小爲n字節。對TCP和UDP安裝都適用,32K較好。(常用優化參數)
wsize=n: 設置寫緩衝的大小爲n字節。對TCP和UDP安裝都適。(常用優化參數)
nfsvers=n 設置NFS協議的版本 2 或者 3 (在正常情況下是自動的)
tcp: 選擇通過TCP來傳輸。默認選擇UDP
fg 和bg正好相反,是默認的參數

mountport :設定mount的端口

(3)客戶端查看NFS掛載的參數(/proc/mounts文件中)

grep nfs /proc/mounts

sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0

192.168.1.8:/wddg/nfs /mnt/nfs nfs4rw,relatime,vers=4,rsize=262144,

wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.158.168,minorversion=0,local_lock=none,addr=192.168.1.80 0

六、NFS操作實踐

1、檢查環境
(1)服務端

cat /etc/redhat-release

Red HatEnterprise Linux Server release 6.8 (Santiago)

uname -r

2.6.32-642.el6.x86_64

uname -m

x86_64

(2)客戶端

cat /etc/redhat-release

Red Hat EnterpriseLinux Server release 6.4 (Santiago)

uname -r

2.6.32-358.el6.i686

uname -m

i686

(3)安裝NFS軟件包

方法一:安裝NFS服務組

yum groupinstall"NFS file server" -y  #可先通過yum grouplist查看程序組名

方法二:安裝rpm包

yum installnfs-utils rpcbind -y

(4)查看NFS軟件包

rpm -qa nfs-utils portmap rpcbind

服務端:

rpcbind-0.2.0-12.el6.x86_64

nfs-utils-1.2.3-70.el6.x86_64

客戶端:

nfs-utils-1.2.3-36.el6.i686

rpcbind-0.2.0-11.el6.i686

2、啓動NFS服務
(1)服務端

a、啓動服務,先啓動rpcbind,後啓動nfs

/etc/init.d/rpcbind start

/etc/init.d/nfs start

b、查看服務是否啓動

/etc/init.d/rpcbind status

/etc/init.d/nfs status

c、查看本機rpc中註冊的服務

rpcinfo -plocalhost

   program vers proto   port service

    100000   4   tcp    111 portmapper

    100000   3   tcp    111 portmapper

    100000   2   tcp    111 portmapper

    100000   4   udp    111 portmapper

    100000   3   udp    111 portmapper

    100000   2   udp    111 portmapper

    100011   1   udp    875 rquotad

    100011   2   udp    875 rquotad

    100011   1   tcp    875 rquotad

    100011   2   tcp    875 rquotad

    100005   1   udp  33814 mountd

    100005   1   tcp  38970 mountd

    100005   2   udp  50071 mountd

    100005   2   tcp  51864 mountd

    100005   3   udp  52190 mountd

    100005   3   tcp  37160 mountd

    100003   2   tcp   2049 nfs

    100003   3   tcp   2049 nfs

    100003   4   tcp   2049 nfs

    100227   2   tcp   2049 nfs_acl

    100227   3   tcp   2049 nfs_acl

    100003   2   udp   2049 nfs

    100003   3   udp   2049 nfs

    100003   4   udp   2049 nfs

    100227   2   udp   2049 nfs_acl

    100227   3   udp   2049 nfs_acl

d、將nfs和rpcbind服務設置爲開機自啓動

chkconfig nfson                 

chkconfigrpcbind on

chkconfig --listnfs

chkconfig --listrpcbind

e、如果RPC服務沒啓動的報錯信息

service rpcbindstop

Stopping rpcbind:[  OK ]

rpcinfo -plocalhost

rpcinfo: can't contact portmapper: RPC: Remote system error -Connection refused

(2)客戶端

a、啓動服務,只需啓動rpcbind

/etc/init.d/rpcbind start

b、查看服務是否啓動

/etc/init.d/rpcbind status

c、將rpcbind服務設置爲開機自啓動               

chkconfig rpcbindon

chkconfig --listrpcbind

3、服務端配置nfs
(1)配置文件:/etc/exports
(2)創建需共享的目錄

mkdir /mnt/nfs#nfs的權限爲755,後面新建文件時會報錯的

ll

drwxr-xr-x. 2root root 4096 Jan 22 13:38 nfs

(3)編輯配置文件/etc/exports

vi /etc/exports

/mnt/nfs       192.168.16.0/24(rw,sync)

(4)重啓nfs服務

/etc/init.d/nfsreload

注:不要用restart,要用reload。restart是將所有連接直接斷開後重啓,reload是已請求的正常運行,沒請求的則不能在連接了,所有操作完畢後纔會重啓,用戶體驗較好。reload等同於exportfs -r

(5)本機檢查目錄是否被共享出來

showmount -elocalhost

Export list forlocalhost:

/mnt/nfs        192.168.16.0/24

4、客戶端掛載nfs
(1)客戶端檢查目錄是否可以共享

showmount -e 192.168.58.22

Export list for 192.168.58.22:

/mnt/nfs        192.168.16.0/24

(2)掛載

mount -t nfs 192.168.58.22:/mnt/nfs/tmp

(3)查看

df -h

192.168.58.22:/mnt/nfs   50G 8.4G   39G  19% /tmp

5、客戶端操作nfs
(1)查看nfs目錄

ls -l /tmp   #成功

(2)創建文件

touch /tmp/a.txt

報錯是:touch: cannot touch `a.txt': Permission denied

(3)報錯原因

文件的權限分爲兩種,一種是本地訪問權限,另一種是網絡訪問權限。兩者必須都有權限,才能進行相應的操作。

在/etc/exports文件內容中的/mnt/nfs   192.168.16.0/24(rw,sync),rw表示網絡訪問有讀寫權限,

但/mnt/nfs目錄的權限是755,由於nfs訪問默認用戶是nfsnobody,屬於其它組,沒有寫權限。

(4)查看對nfs目錄進行操作的用戶

a、先將服務端/mnt/nfs目錄權限改爲777

chmod 777/mnt/nfs

b、客戶端創建文件

touch /tmp/a.txt#成功

c、查看新創建的文件a.txt的屬主和屬組

ls -l /tmp/a.txt

-rwxrwxrwx. 1 nfsnobodynfsnobody 0 Jan 22 13:38 a.txt

d、通過/etc/passwd文件查看nfsnobody用戶信息

grep nfsnobody/etc/passwd

nfsnobody:x:65534:65534:AnonymousNFS User:/var/lib/nfs:/sbin/nologin

e、通過/var/lib/nfs/etab文件中生成nfs實例的配置信息

cat/var/lib/nfs/etab

/mnt/nfs

192.168.220.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,ro,root_squash,no_all_squash)

f、修改nfs目錄的權限並修改其屬主和屬組

chmod 755/mnt/nfs

chmod -R nfsnobody.nfsnobody/mnt/nfs

g、客戶端創建文件

touch /tmp/b.txt#成功

6、查看系統啓動的rpc和nfs服務進程
 (1)查詢服務進程

ps -ef | grep -E "rpc|nfs"

rpcuser   2720     1  0Jan16 ?        00:00:00 rpc.statd

root      3234     2  0Jan16 ?        00:00:00 [rpciod/0]

root      3235     2  0Jan16 ?        00:00:00 [rpciod/1]

root      3236     2  0Jan16 ?        00:00:00 [rpciod/2]

root      3237     2  0Jan16 ?        00:00:00 [rpciod/3]

root      3238     2  0Jan16 ?        00:00:00 [rpciod/4]

root      3239     2  0Jan16 ?        00:00:00 [rpciod/5]

root      3240     2  0Jan16 ?        00:00:00 [rpciod/6]

root      3241     2  0Jan16 ?        00:00:00 [rpciod/7]

root      3242     2  0Jan16 ?        00:00:00 [rpciod/8]

root      3243     2  0Jan16 ?        00:00:00 [rpciod/9]

root      3244     2  0Jan16 ?        00:00:00 [rpciod/10]

root      3245     2  0Jan16 ?        00:00:00 [rpciod/11]

root      3246     2  0Jan16 ?        00:01:46 [rpciod/12]

root      3247     2  0Jan16 ?        00:00:00 [rpciod/13]

root      3248     2  0Jan16 ?        00:00:00 [rpciod/14]

root      3249     2  0Jan16 ?        00:00:00 [rpciod/15]

root      3251     2  0Jan16 ?        00:00:50 [nfsiod]

rpc      11191     1  0Feb08 ?        00:00:00 rpcbind

root     11236     1  0Feb08 ?        00:00:00 rpc.rquotad

root     11241     1  0Feb08 ?        00:00:00 rpc.mountd

root     11247     2  0Feb08 ?        00:00:00 [nfsd4]

root     11248     2  0Feb08 ?        00:00:00 [nfsd4_callbacks]

root     11249     2  0Feb08 ?        00:00:00 [nfsd]

root     11250     2  0Feb08 ?        00:00:00 [nfsd]

root     11251     2  0Feb08 ?        00:00:00 [nfsd]

root     11252     2  0Feb08 ?        00:00:00 [nfsd]

root     11253     2  0Feb08 ?        00:00:00 [nfsd]

root     11254     2  0Feb08 ?        00:00:00 [nfsd]

root     11255     2  0Feb08 ?        00:00:00 [nfsd]

root     11256     2  0Feb08 ?        00:00:00 [nfsd]

root     11287     1  0Feb08 ?        00:00:00 rpc.idmapd

(2)各服務進程說明

a、rpcbind:rpc服務主進程 #CnetOS5.x是portmap

b、rpc.rquotad:磁盤配額進程

c、rpc.mountd:NFS權限管理進程

rpc.mountd的主要功能是管理NFS文件系統。當NFS客戶端順利通過rpc.nfsd登入NFS主機後,在它可以使用NFS服務器提供是數據之前,會去讀NFS的配置文件/etc/exports來比對NFS客戶羰的權限。通過後,再經過NFS服務器本地文件系統的權限驗證,才能讀取數據。

d、nfsd:NFS服務主進程

nfsd也叫rpc.nfsd,主要功能是管理NFS客戶端是否能夠登入NFS服務端主機,其中還包含登入者的ID判別。

e、rpc.statd:檢查文件一致性進程(非必要)

rpc. statd的主要功能是用來檢查文件一致性進程,與rpc.lockd有關,需要客戶端和服務端同時開啓纔有效。是非必要進程

f、rpc.lockd:鎖定文件進程(非必要)

rpc.locked的主要功能是用來鎖定文件進程,用於多客戶端的同時寫入。是非必要進程

(3)查看進程幫助的方法

man rpc.statd

man rpc.mountd

man nfsd

man rpc.rquotad

man rpcbind

七、NFS服務常用命令、路徑文件和格式說明

1、NFS配置文件說明

NFS常用路徑

說明

/etc/exports

NFS服務主配置文件,配置NFS具體共享服務,默認內容爲空。以行爲單位。

格式:目錄  IP1/子網(權限1, 權限2,...) IP2/子網(權限1, 權限2,...)

如:/data 10.11.12.13/24(rw,sync)

/usr/sbin/exportfs

NFS服務的管理命令。可以加載NFS配置生效和,還可以直接配置NFS共享目錄,也就是無需配置/etc/exports實現共享(但重啓後失效)

如:exportfs -rv :加載配置生效,等價於/etc/init.d/nfs reload

/usr/sbin/showmount

查看NFS配置及掛載結果的命令

如:服務端查看:showmount -e localhost

    客戶端查看:showmount -e 服務端IP

/var/lib/nfs/etab

NFS配置文件的完整參數設定的文件(會自動加上默認參數)

/var/lib/nfs/xtab

CentOS5.x曾經掛載過的NFS客戶端信息,包括IP等信息。CentOS6.x有此文件,但是空文件。

2、NFS服務常用查看命令

(1)mount:客戶端可以查看NFS掛載情況

(2)nfsstat:查看nfs服務狀態

3、NFS配置文件/etc/exports的格式說明
(1)格式

共享目錄 主機1/子網(權限1, 權限2,...) 主機2/子網(權限1, 權限2,...)

(2)各列含義

a、第1列共享目錄:是NFS服務端實際要共享的目錄,要用絕對路徑。

b、第2列客戶端地址:是NFS服務端授權的可訪問共享目錄的NFS客戶端地址。

客戶端地址可是是單獨的IP或主機名、域名,也可以是整個網段,還可以用*號匹配所有客戶端服務器,

配置寫法如下:

客戶端地址要求

具體地址例子

說明

授權單一客戶端訪問

10.11.12.13

一般情況,生產環境中此配置不多

授權整個網段客戶端訪問

10.0.0.0/24

24等同於255.255.255.0,生產環境最常用配置,簡單且維護方便

授權整個網段客戶端訪問

10。0。0。*

指定網段的另外一個寫法(需要驗證)

授權某個域名客戶端訪問NFS

kk.dd.cn

不常用

授權整個域名客戶端訪問NFS

*.dd.cn

不常用

c、第3列權限參數集:對授權的NFS客戶端的訪問權限進行設置。

4、關於NFS服務的防火牆控制
(1)一般NFS都在企業內部網絡,一般情況下是不用開防火牆的。如查非要開,可在防火牆中有兩種方法設置。
(2)方法一:僅允許IP段訪問

iptables –A INPUT –s 192.168.1.0/24 –j ACCEPT

(3)方法二:允許IP段加端口訪問

iptables –A INPUT –i eht1 –p tcp –s 192.168.1.0/24 –dport 111 –jACCEPT

iptables –A INPUT –i eht1 –p udp –s 192.168.1.0/24 –dport 111 –jACCEPT

iptables –A INPUT –i eht1 –p udp –s 192.168.1.0/24 –dport 2049 –jACCEPT

iptables –A INPUT –i eht1 –p udp –s 192.168.1.0/24 –j ACCEPT

 

5、注意事項

(1)共享目錄要用絕對路徑。

(2)要注意共享目錄的本地權限。如查需要讀寫共享,就一定要讓本地目錄被NFS服務用戶nfsnobody可以讀寫。

(3)如果應用是有多臺NFS服務器共用一個共享目錄,需確保所有服務器對NFS共享目錄具務相同的權限。

a、首先使用all_squash參數,把所有客戶端都壓縮成匿名用戶

b、其次使用anonuid和anongid參數,使用指定的UID和GID用戶

(4)所有客戶端和服務端都需要有一個相同的UID和GID的用戶,即nfsnobody用戶(UID和GID必須相同)。

八、客戶端NFS掛載時的參數選擇和優化

1、安全優化掛載參數

mount –t nfs –o nosuid,noexec,nodev,rw 192.168.1.8:/data /mnt/nfs

2、安全優化參數測試演示
(1)將原有掛載的nfs目錄取消掛載

umount /mnt/nfs

(2)查看是否取消成功

df –h

(3)指定安全參數掛載

mount –t nfs –o nosuid,noexec,nodev,rw 192.168.1.8:/data /mnt/nfs

(4)查看是否掛載成功

df –h | tail -1

192.168.1.8:/wddg/nfs  35G  3.5G   30G 11% /mnt/nfs

(5)查看掛載參數

grep nfs /proc/mounts

sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0

192.168.1.8:/wddg/nfs /mnt/nfs nfs4rw,nosuid,nodev,noexec,relatime,vers=4,

rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.9,minorversion=0,local_lock=none,addr=192.168.1.80 0

(6)向NFS共享目錄中寫入可執行腳本,並賦予可執行權限

echo 'echo Today is $(date +%F)' >/mnt/nfs/test.sh

vi /mnt/nfs/test.sh   

echo Today is $(date +%F)

chmod +x /mnt/nfs/test.sh

(7)查看/mnt/nfs/test.sh的權限

ls -l /mnt/nfs

-rwxr-xr-x 1 nobody nobody 26 Feb 11 21:09 test.sh

(8)服務端執行test.sh成功

./test.sh

Today is 2017-02-11

(9)服務端執行test.sh報錯,提示無權限

./test.sh

-bash: ./test.sh: Permission denied

(10)原因是因爲客戶端在mount時使用noexec參數,不允許在NFS共享目錄中執行程序
(11)使用解釋器(sh等)來執行test.sh則可以成功執行

sh /mnt/nfs/test.sh

Today is 2017-02-11

3、性能優化掛載參數

性能優化:寫文件一般是調整rsizewsize參數,讀文件時還應加上noatimenodiratime

4、性能優化參數寫測試演示
(1)將原有掛載的nfs目錄取消掛載

umount /mnt/nfs

(2)查看是否取消成功

df –h

(3)指定性能參數掛載(先將rsize和wsize調小)

mount -t nfs -o noexec,rsize=1024,wsize=1024,rw 192.168.1.8:/wddg/nfs/mnt/nfs

(4)查看是否掛載成功

df –h | tail -1

192.168.1.8:/wddg/nfs  35G  3.5G   30G 11% /mnt/nfs

(5)查看掛載參數

grep nfs /proc/mounts

sunrpc /var/lib/nfs/rpc_pipefsrpc_pipefs rw,relatime 0 0

192.168.1.8:/wddg/nfs /mnt/nfs nfs4rw,nosuid,noexec,relatime,vers=4,

rsize=1024,wsize=1024,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.9,minorversion=0,local_lock=none,addr=192.168.1.80 0

(6)用dd測試文件系統,用time查看運行時間

time dd if=/dev/zero of=/mnt/nfs/test.txt bs=9k count=200

200+0 records in

200+0 records out

1843200 bytes (1.8 MB) copied, 12.6434 s, 146 kB/s

 

real    0m12.727s

user    0m0.000s

sys     0m0.067s

(7)重新掛載nfs共享目錄,擴大rsize和wsize參數的值(無須寫這2個參數,使用系統默認值)

umount /mnt/nfs

mount -t nfs -o noexec,rw 192.168.1.8:/wddg/nfs /mnt/nfs

(8)查看掛載參數

grep nfs /proc/mounts

sunrpc /var/lib/nfs/rpc_pipefsrpc_pipefs rw,relatime 0 0

192.168.1.8:/wddg/nfs /mnt/nfs nfs4rw,noexec,relatime,vers=4,rsize=262144,

wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.158.168,minorversion=0,local_lock=none,addr=192.168.1.80 0

(9)再次用dd測試文件系統,用time查看運行時間

time dd if=/dev/zero of=/mnt/nfs/test.txt bs=9k count=200

200+0 records in

200+0 records out

1843200 bytes (1.8 MB) copied, 11.9824 s, 154 kB/s

 

real    0m12.077s

user    0m0.000s

sys     0m0.042s

(10)虛擬機網絡問題,測試失敗。下回再測
5、性能優化參數讀測試演示
(1)將原有掛載的nfs目錄取消掛載

umount /mnt/nfs

(2)查看是否取消成功

df –h

(3)不加noatimenodiratime參數

mount -t nfs -o rw 192.168.1.8:/wddg/nfs /mnt/nfs

(4)查看是否掛載成功

df –h | tail -1

192.168.1.8:/wddg/nfs  35G  3.5G   30G 11% /mnt/nfs

(5)查看掛載參數

grep nfs /proc/mounts

sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0

192.168.158.198:/wddg/nfs /mnt/nfs nfs4rw,relatime,vers=4,rsize=262144,

wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.158.168,minorversion=0,local_lock=none,addr=192.168.158.1980 0

(6)測試文件系統讀性能,用time查看運行時間

time for ((i=1;i<20000;i++));do cat /mnt/nfs/test.sh>/dev/null;done

real    0m24.590s

user    0m0.921s

sys     0m17.638s

(7)重新掛載nfs共享目錄,加noatimenodiratime參數

umount /mnt/nfs

mount -t nfs -o rw,noatime,nodiratime 192.168.1.8:/wddg/nfs /mnt/nfs

(8)查看掛載參數

grep nfs /proc/mounts

sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0

192.168.158.198:/wddg/nfs /mnt/nfs nfs4rw,noatime,nodiratime,vers=4,rsize=262144,

wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.158.168,minorversion=0,local_lock=none,addr=192.168.158.1980 0

(9)再次用dd測試文件系統,用time查看運行時間

time for ((i=1;i<20000;i++));do cat /mnt/nfs/test.sh>/dev/null;done

real    0m24.468s

user    0m1.042s

sys     0m18.126s

6、優化建議

(1)對於CentOS5.8_x86_64:

mount -t nfs –onoatime,nodiratime,rw,bg,soft,rsize=32768,wsize=32768  192.168.1.8:/wddg/nfs /mnt/nfs

(2)對於CentOS6.5_x86_64:

mount -t nfs –onoatime,nodiratime,rw,bg,soft,rsize=131072,wsize=131072  192.168.1.8:/wddg/nfs /mnt/nfs

九、mount和/etc/fstab配置故障現象說明

1、磁盤沒有格式化

mount /dev/sdb1 /mnt時報錯:mount:you must specify the filesystem type

2、/etc/fstab配置了檢查文件系統,但指定的掛載磁盤或目錄有問題,導致無法進入系統
(1)查看/etc/fstab文件中的掛載項

tail -1 /etc/fstab

/dev/sdb1    /mnt    ext4   default  0    1

最後一列的1,表示對/dev/sdb1要進行文件系統檢查。

(2)重新服務器,報錯,無法進入系統。

由於/dev/sdb1沒有格式化,檢查文件系統時會報錯,無法進入系統。

(3)進入維護模式,修改/etc/fstab文件。

這是在系統提示下,輸入root用戶進行維護模式,文件系統也自動進入只讀模式,無法編輯/etc/fstab文件。

(4)重新掛載根目錄

mount –o remount,rw / 

(5)再次修改/etc/fstab文件

vi /etc/fstab

tail -1 /etc/fstab

/dev/sdb1    /mnt    ext4   default  0    0

(6)重啓服務器,進入系統

十、NFS故障及解決思路

1、NFS故障常見報錯提示
(1)啓動NFS服務時報錯

a、操作命令:啓動NFS服務

/etc/init.d/nfs start

b、錯誤提示

Starting NFS services:  [  OK  ]

Starting NFS quotas: Cannot register service: RPC: Unable toreceive; errno = Connection refused

rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS,udp).[FAILED]

Starting NFS mountd: [FAILED]

Stopping RPC idmapd: [ OK  ]

Starting RPC idmapd: [ OK  ]

Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno111 (Connection refused)

rpc.nfsd: unable to set any sockets for nfsd[FAILED]

c、錯誤原因

NFS服務先於rpcbind服務啓動

d、解決方法

先啓動rpcbind服務,再啓動nfs服務

/etc/init.d/rpcbind start

/etc/init.d/nfs start

(2)mount NFS文件系統時,文件訪問拒絕

a、操作命令:mount NFS

mount -t nfs 192.168.158.198:/wddg/nfs /mnt/nfs

b、錯誤提示

mount.nfs:access denied by server while mounting. 192.168.1.8:/nfs/mnt

c、錯誤原因

/etc/exports文件中沒有共享目錄

d、解決方法

修改/etc/exports文件,

(3)showmount NFS時,提示程序沒註冊

a、操作命令:showmount NFS

showmount –e 192.168.1.8

b、錯誤提示

clnt_create: RPC: Program not registered

c、錯誤原因

NFS服務啓動後,rpcbind服務因爲其它原因重啓

d、解決方法

重啓nfs服務

/etc/init.d/nfs restart

(4)showmount NFS時,提示無法找到主機

a、操作命令:showmount NFS

showmount –e 192.168.1.8

b、錯誤提示

clnt_create:RPC:Port mapper failure – Unable to receive;errno 113(Noroute to host)

c、錯誤原因

如果網絡沒問題,一般是防火牆開啓的原因

d、解決方法

檢查防火牆,如果打開則將其關閉

/etc/init.d/iptables status

/etc/init.d/iptables stop

/etc/init.d/ip6tables stop

(5)啓動NFS服務時,連接被拒絕

a、操作命令:啓動NFS服務

/etc/init.d/nfs start

b、錯誤提示

Cannot register service:RPC: Unable to receive;errno = Connectionrefused

c、錯誤原因

要麼是rpc服務沒有啓動,要麼是防火牆的阻擋

d、解決方法

檢查rpc服務是否啓動,檢查防火牆是否關閉

rpcinfo –p localhost

service iptables status

2、NFS故障的一般解決思路
(1)首先,檢查服務端的rpcbind和nfs服務是否開啓,客戶端rpcbind服務是否開啓

/etc/init.d/rpcbind status

/etc/init.d/nfs status

(2)其次,通過ping命令,檢查網絡是否通暢。

ping 192.168.1.8

(3)然後,通過telnet命令,檢查rpc服務端口是否正常。如mount時無反映

telnet 192.168.1.8 111  

(4)然後,檢查防火牆是否關閉

/etc/init.d/iptables status

防火牆開了,一般會遇到下面的報錯:

showmount –e 192.168.1.8

clnt_create:RPC:Port mapper failure – Unable to receive;errno 113(Noroute to host)

(5)最後,通過showmount和mount來檢查配置是否正常

showmount –e localhost  #查看服務端配置是否正常

showmount –e 192.168.1.8 #查看客戶端是否能正常獲取服務端的共享目錄列表

mount –t nfs 192.168.1.8:/data /mnt #測試服務端是否能正常持載。服務端自已掛載自己

mount –t nfs 192.168.1.8:/data /mnt/nfs #測試客戶端是否能正常掛載。

十一、基於NFS網絡文件系統的Linux內核優化實戰(官方建議)

1、與NFS性能相關的系統參數

rmem_default:指定接收套接字緩衝區大小的缺省值(以字節爲單位,缺省值:112640)

rmem_max :指定接收套接字緩衝區大小的最大值(以字節爲單位,缺省值:112640)

wmem_default:指定發送套接字緩衝區大小的缺省值(以字節爲單位,缺省值:110592)

wmem_max :指定發送套接字緩衝區大小的最大值(以字節爲單位,缺省值:131071)

2、查看與NFS性能相關的系統參數

cat /proc/sys/net/core/rmem_default

112640

cat /proc/sys/net/core/rmem_max

112640

3、根據官方建議臨時調整相關參數

echo 8388608 > /proc/sys/net/core/rmem_default

echo 16777216 > /proc/sys/net/core/rmem_max

4、查看是否生效

cat /proc/sys/net/core/rmem_default

8388608

cat /proc/sys/net/core/rmem_max

16777216

5、測試查看效果
(1)調整前的效果

time for ((i=1;i<20000;i++));do cat /mnt/nfs/test.sh>/dev/null;done

real    0m24.468s

user    0m1.042s

sys     0m18.126s

(2)調整後的效果

time for ((i=1;i<20000;i++));do cat /mnt/nfs/test.sh>/dev/null;done

real    0m22.579s

user    0m0.467s

sys     0m8.391s

6、根據調整效果,將相關參數寫入系統配置文件/etc/sysctl.conf,永久生效

cat >> /etc/sysctl.conf << EOF

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_default = 8388608

net.core.wmem_max = 16777216

EOF

sysctl –p

7、生產環境NFS共享存儲優化
(1)硬件:SAS/SSD磁盤,做raid0/raid10。網卡要好。
(2)服務端參數:rw,async,all_squash,anonuid=xxx,anongid=xxx

/wddg/nfs192.168.1.0/24(rw,async,all_squash,anonuid=555,anongid=555)

(3)客戶端參數:rsize,wsize,noatime,nodirtime,nosuid,noexec,soft(or hard,intr)

mount -t nfs –o noatime,nodiratime,rsize=131072,wsize=131072  192.168.1.8:/snfs /cnfs

(4)內核調優(不僅僅針對NFS,對其它文件系統也有用)

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_default = 8388608

net.core.wmem_max = 16777216

十二、NFS的狀態信息和相關知識小結

1、通過/var/lib/nfs/etab文件中生成nfs實例的配置信息

cat /var/lib/nfs/etab

/mnt/nfs

192.168.220.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,ro,root_squash,no_all_squash)

2、CentOS5.x中還可能通過通過/var/lib/nfs/rmtab文件查看當前有哪此客戶端在掛載NFS Server

cat /var/lib/nfs/rmtab

192.168.1.9:/snfs:0x00000001

3、NFS相關命令及常用參數

(1)mount: –t –o –a

(2)umount: -l –f

(3)showmount: -e

(4)exportfs: -rv -o

(5)rpcinfo: -p

(6)ping: -c -t

(7)telnet

4、NFS相關文件

(1)/etc/fstab

(2)/etc/exports

(3)/var/lib/nfs/etab

(4)/proc/mounts

(5)/etc/mtab

5、其它注意事項

(1)NFS的開機自動掛載一定要放在/etc/rc.local中,並要帶註釋。不要放在fstab中,因爲nfs的掛載是需要網絡的,加載fstab時,網絡還沒有啓動。

(2)NFS服務端的共享目錄可寫時,不要給777權限。只要修改屬主和屬組爲nfsnobody就行了,可讀進,權限不需要改,默認就行了。

(3)由於NFS的默認用戶爲nfsnobody,且uid和gid均爲65534,所以需要確保所有服務器的nfsnobody用戶的uid和gid爲65534

十三、NFS客戶端自動掛載(autofs)部署。只需瞭解

1、爲什麼會需要autofs?

autofs可以實現當用戶訪問的時候才掛載,如果沒有用戶訪問,會在一定時間後自動卸載。可以解決服務器和客戶端緊密耦合的問題。缺點是用戶請求才掛載,所以在開始請求的瞬間效率較差。

autofs一般用於測試環境,或併發很低的生產環境(如家目錄漫遊LDAP)。一般的企業不用它。

2、只需在客戶端安裝autofs服務(CentOS5.x默認已安裝,CentOS6.x默認沒有安裝)

yum install autofs -y

3、配置autofs
(1)配置/etc/auto.master

a、格式

/mnt /etc/auto.misc --timeout 60

b、說明

/mnt:表示掛載點所在的目錄 

/etc/auto.misc:定義mount的動作

--timeout 60:超時時間60秒.在/etc/sysconfig/autofs設置的默認值爲300秒

(2)配置/etc/auto.misc文件

a、格式

cnfs    -fstype=nfs     192.168.1.8:/data

b、說明

cnfs:共享目錄名,將被掛載到/etc/auto.master文件中配置的/mnt目錄下。即/mnt/cnfs

-fstype= nfs:掛載的文件系統和參數

192.168.1.8:/data:服務端的共享目錄

4、啓動autofs服務

/etc/init.d/autofs start

5、操作演示
(1)查看系統掛載信息,未發現nfs

df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda3            35G   14G  20G  41% /

tmpfs               1012M   72K 1012M  1% /dev/shm

/dev/sda1            485M   36M  424M  8% /boot

(2)查看/mnt目錄,未發現cnfs

ls -l /mnt

(3)直接進入/mnt/cnfs目錄,操作成功,可以進入/mnt/cnfs

cd /mnt/cnfs

(4)再次查看系統掛載信息,發現nfs掛載

df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sda3            35G  14G   20G  41% /

tmpfs               1012M   72K 1012M   1% /dev/shm

/dev/sda1            485M   36M  424M  8% /boot

192.168.1.8:/data   50G  8.5G  39G  19% /mnt/cnfs

發佈了40 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章