日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

融于心而表于行 之 磁盘的管理方式

發(fā)布時間:2024/9/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 融于心而表于行 之 磁盘的管理方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章?原始出處?、作者信息和本聲明。否則將追究法律責(zé)任。http://jagen.blog.51cto.com/2889774/1312868

2.5?磁盤的管理方式

用戶也好,權(quán)限也罷,它們總是要有一個證明自己的天地;文件也罷,程序也好,它們總是得有一個安身立命的家園;即便Linux自己也必須得有自己的棲身之所。那就是磁盤。其實Linux對磁盤的管理十分對得起兩個字:“不賴”!

2.5.1Linux的文件系統(tǒng)

只要是磁盤就得格式化,好像已經(jīng)是天經(jīng)地義的事情了,幾乎沒有人去問為什么。很多有經(jīng)驗的人在似乎都有個這樣的經(jīng)歷,就是風(fēng)風(fēng)火火的從朋友那里借來了一張裝滿高清A片的移動硬盤,暗爽過后還想留下一些待以后慢慢品味,可是總有那么一些質(zhì)量比較好的片子(尺寸超過4G)復(fù)制失敗。追問原因還往往被高手們嘲笑:都什么年代了你還用FAT32,趕緊換NTFS吧”。我想這個時候你就不得不追問一下,為什么FAT32不行而NTFS卻能行吧?

因為它們是不同的文件系統(tǒng),功能不同,能力不同。FAT32是在Windows95時代開始采用的文件系統(tǒng),到現(xiàn)在都有人在用(比如U盤),可以說是伴隨著我們成長的文件系統(tǒng)。FATFile Allocation Table的縮寫,從字面意義上就能看出這是一種類似表格一樣的文件系統(tǒng)。由于其用于描述文件大小的屬性是一個32位的值,導(dǎo)致其能夠支持的單個文件最大不能超過4G。而NTFS是微軟專門為NT系統(tǒng)設(shè)計的,單個文件最大可以達到2T。現(xiàn)在最為常用的Windows XPWindows 7都支持NTFS。至于NTFS是怎么管理文件的有點不太好說,因為微軟一直當(dāng)它是個“秘密

Linux也有自己的文件系統(tǒng)格式,被稱為ExtNN=234)。如果要追溯ExtN的起源,其實要比FAT32NTFS都要古老,也就是我們前面所說的基于inode的文件系統(tǒng)。如前面所述,ExtN文件系統(tǒng)必定要包含inode數(shù)據(jù)結(jié)構(gòu)來代表一個文件,并且存儲這個文件的各種屬性和權(quán)限。至于實際的數(shù)據(jù)則放在data block塊區(qū)中。除此之外,ExtN文件系統(tǒng)還有一個超級塊區(qū)(superblock),用于記錄整個文件系統(tǒng)的整體信息,包括inodedata block的總量、使用量和剩余量。

data blockinode一樣,每一個都有一個唯一編號,inode只需要記錄這些編號,就能夠定位整個文件的任意一段數(shù)據(jù)。我們假定有一個編號為3inode,它所代表的文件的數(shù)據(jù)被放置在編號為25681320的這幾個data block中。那么讀取這個文件的過程則如圖2.4所示。采用這種數(shù)據(jù)存取的方法的文件系統(tǒng)被稱之為索引式文件系統(tǒng)”。它與伴隨著很多人成長的FAT32有什么不同呢?圖2.5對比了這個過程。

通過對兩個圖的比較,我們可以清晰的看出,ExtN通過inode能夠一次性獲得文件數(shù)據(jù)所存放的位置,可以據(jù)此來安排磁盤的閱讀順序,盡量保證在磁盤只旋轉(zhuǎn)一圈的情況下將所有內(nèi)容讀出來。而FAT32則只有將對應(yīng)的data block讀入之后才知道下一個data block在什么地方。如果一個文件的data block比較分散的話,將很難保證在磁盤只旋轉(zhuǎn)一圈的情況下讀取全部數(shù)據(jù),有時候甚至要多轉(zhuǎn)很多圈才能讀完數(shù)據(jù)。

這就是我們非常熟悉的磁盤碎片問題。由于長時間的對文件進行創(chuàng)建、刪除、讀寫,很難保證同一個文件的data block的位置相鄰。而由于FAT32的讀寫特性,在data block不相鄰的情況下讀寫性能會極具下降。所以為了提高Windows系統(tǒng)的磁盤性能,經(jīng)常性的做磁盤碎片整理是非常有必要的。

而對于Linux這種文件系統(tǒng),則基本上不需要進行磁盤碎片整理。而且你也基本上找不到類似的工具。但是Linux系統(tǒng)經(jīng)過長時間使用之后,還是會有文件數(shù)據(jù)過于分散的問題的。即便能夠做到很好的規(guī)劃,但是對性能多多稍稍還是會有一些影響,只是沒有使用FAT32Windows那么嚴重罷了。所以,一個使用時間很久的Linux系統(tǒng)也會因為磁盤碎片問題而變慢,這也是事實。只是不需要太過在意它。

2.4 ExtN文件系統(tǒng)讀取數(shù)據(jù)過程示意圖

2.5 FAT32文件系統(tǒng)讀取數(shù)據(jù)過程示意圖

2.5.2?磁盤的基本操作

在前面的小結(jié)中介紹過幾個最常用的文件操作命令:lscdcprmmv。雖然它們也都是作用在磁盤上,但是它們面向的對象更為高級一些,屬于文件范疇的。而我們現(xiàn)在要介紹的是稍微低級一點,面對是的文件的載體——磁盤的一些基本操作。最常用的是:dfduddfsckmount

df命令用于查看系統(tǒng)中所有磁盤的整體使用量。在我們的測試系統(tǒng)中能夠得到如下所示信息:

Filesystem 1K-blocks Used Available Use% Mountedon

/dev/mapper/VolGroup-lv_root

51606140 5587240 43397460 12% /

tmpfs 250860 272 250588 1% /dev/shm

/dev/sda1 495844 31891 438353 7% /boot

/dev/mapper/VolGroup-lv_home

9877432 1681704 7693968 18% /home

可見df命令的輸出還是比較清晰的。但是有兩個概念可能需要解釋一下,就是這里所說的FilesystemMounted on。如果要翻譯成中文(很多人的機器中可能顯示的字段名)則是文件系統(tǒng)掛載點

這里所說的文件系統(tǒng)與我們之前所說的操作系統(tǒng)中的文件系統(tǒng)的概念有點不盡相同,著這里更多的含義指的是磁盤分區(qū)。之所以叫它是文件系統(tǒng),是因為每一個磁盤分區(qū)都是一個文件系統(tǒng)的具體實例,如果套用面向?qū)ο蟮恼f法就是,類和對象。諸如ExtN這樣的就是類,而具體的磁盤分區(qū)就是這個類的對象。至于掛載點則比較有趣,它是某個具體的目錄。

df每一個行的輸出上看,難道具體的磁盤分區(qū)會與某個具體的目錄有關(guān)?事實的確是這樣的。前面也是說過,Linux沒有Windows中的C盤、D盤的概念。精通Windows的同學(xué)都清楚,Windows中的分區(qū)會有一個盤符與它對應(yīng),在分區(qū)中的文件和目錄的組織結(jié)構(gòu)就像一顆樹一樣,樹根就是盤符+“:”Linux組織文件和目錄的方式最終也能被看作是一棵樹。但是由于沒有C盤、D盤的概念,更沒有盤符一說,于是就特意規(guī)定了一個總的樹根叫/,而具體某個分區(qū)的樹根就從某個目錄開始。至于不同的分區(qū)應(yīng)該從哪個目錄開始這個就沒有明確的規(guī)定。其實不規(guī)定也就是有規(guī)定,即你可以隨意指派。而具體指派哪個分區(qū)與哪個目錄對應(yīng),就由mount命令來指定了。之后只要訪問哪個目錄里的任何文件或目錄,都是對具體的分區(qū)進行訪問了。而這個目錄則被稱為掛載點

根據(jù)df命令的輸出內(nèi)容可以看出,Linux文件中的總樹根/分區(qū)/dev/mapper/VolGroup-lv_root相關(guān)聯(lián),而/dev/shm目錄與分區(qū)tmpfs相關(guān)聯(lián),/boot目錄與分區(qū)/dev/sda1相關(guān)聯(lián),……。這些分區(qū)名都什么含義呢?其實在這些所謂的分區(qū)中,只有/dev/sda1才是真正的磁盤分區(qū),而這個名稱則是這個磁盤分區(qū)的設(shè)備名。在Linux系統(tǒng)中,/dev目錄下的所有文件都與一個具體的設(shè)備有關(guān),有物理的,也有虛擬的。而sda1這個就是一個物理的設(shè)備。它對應(yīng)系統(tǒng)第一塊串口硬盤的第一個分區(qū)。那么如果是第二個分區(qū)呢?sda2,第三個是sda3……,而對應(yīng)整塊硬盤的則是sda。由此遞推,第二塊串口硬盤,應(yīng)該是sdb,第三塊應(yīng)該是sdc……。而/dev/mapper/*這些又是什么呢?這個就是虛擬的設(shè)備了,它實際上是邏輯卷。有關(guān)邏輯卷的概念我們稍后在說,現(xiàn)在你只要知道它是虛擬的磁盤分區(qū)就行了。不過更奇怪的是tmpfs,這個設(shè)備文件在什么地方呢?答案是沒有,因為它不對應(yīng)任何設(shè)備。它實際上是真正的文件系統(tǒng)名稱。而這個文件系統(tǒng)是在內(nèi)存中虛擬的,與具體的硬盤無關(guān),所以也沒有具體的設(shè)備。于是在df的輸出中所幸就與類名代替了。這樣的文件系統(tǒng)還有很多,比如procfssysfs等,本書會有專門的一章來介紹這些特種文件系統(tǒng)。

(可以這樣理解,一個filesystem就是一個分區(qū),分區(qū)就是實際的存儲空間,但是分區(qū)要掛載在目錄下才能訪問,而目錄可以隨便創(chuàng)建,只要把分區(qū)掛載在這個目錄下,就可以通過這個目錄訪問這個分區(qū)了)

df命令本身就沒有什么好繼續(xù)再介紹的了,上述的一些概念遠比df本身要重要很多,這個是大家應(yīng)該更加注意的。對于/dev目錄下的那些文件,本書不會逐個的去講述它們都代表誰。畢竟每個人的系統(tǒng)都不同,所以也沒法說,你沒看到你怎么信我呢?比較好辦的辦法是問百度或谷歌,它們是你學(xué)習(xí)Linux必不可少的工具。好了,我不能再說多了,因為這樣你們都會不買我的書而逛百度去了。

df命令是用來觀察總體磁盤使用量的,要觀察局部使用量,需要使用du命令。df命令可以通過讀取磁盤的superblock來實現(xiàn),而du命令則不同,它要搜索所有的inode來計算局部數(shù)據(jù),所以du命令的執(zhí)行效率,經(jīng)常要比df差很多。

從嚴格意義上來講,dd命令應(yīng)該不屬于管理磁盤的命令,因為在聯(lián)機幫助中說它的功能是convert and copy a file。但是如果你想要直接讀寫磁盤的每一個扇區(qū),或者鏡像整個磁盤,dd命令則是非常好的選擇。通常dd命令的格式如下:

dd if=input_file of=out_file

從這個基本用法,如果像聯(lián)機幫助中說描述的,復(fù)制一個文件,可以使用類似這樣的命令:

# dd if=/etc/bashrc of=./bashrc

這個命令與cp /etc/bashrc ./bashrc是等價的。其實“if”和“of”這兩個參數(shù)也不用給定,會有默認值。“if”的默認值是標(biāo)準(zhǔn)輸入,“of”的默認值是標(biāo)準(zhǔn)輸出。如果要模擬cat命令,可以使用這樣的命令:

# dd if=/etc/bashrc

根據(jù)前面的講述的內(nèi)容,具體的硬件設(shè)備在/dev目錄下會由具體的文件與之對應(yīng),比如/dev/sda1。如果要制作第一個串口磁盤第一個分區(qū)的鏡像文件,可以使用這樣的命令:

# dd if=/dev/sda1 of=./sda1.img

需要注意,執(zhí)行上面的命令時,輸出文件所在的分區(qū)必須大于sda1分區(qū),至于為什么我想你懂的。如果還希望對生成的鏡像文件壓縮一下,可以使用這樣的命令:

# dd if=/dev/sda1 | gzip -9 > ./sda1.img

按照這個思路,我們將整個磁盤都做一個鏡像呢?

# dd if=/dev/sda | gzip -9 > ./sda.img

如果要恢復(fù)這個磁盤的內(nèi)容,就可以這樣:# gzip -dc ./sda.img | ddof=/dev/sda

通過這兩條命令,大家想到了什么?這個是不是與我們在Windows下經(jīng)常使用ghost非常像呢?感覺塞門鐵克公司的老大應(yīng)該找塊豆腐撞死。而dd命令還不止這點本事,它還能指定讀寫數(shù)據(jù)量。比如bscount這兩個參數(shù),能夠指定依次讀寫的自己數(shù)和讀寫次數(shù),這樣就能夠指定讀寫數(shù)量了。比如我要備份磁盤的主引導(dǎo)記錄,可以這樣:

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

這要求值讀取sda磁盤的首個512個字節(jié)的信息,也就是第一個扇區(qū)的內(nèi)容,將它保存到mbr.img文件。對mbr內(nèi)容感興趣的同學(xué),可以使用反匯編工具,將這個文件反匯編掉,就能知道計算機是怎么啟動的了。

使用dd命令能夠做的事情還有很多,比如銷毀磁盤數(shù)據(jù)、測試磁盤讀寫速度、修復(fù)磁盤等,為了方便你使用,我將這些技巧列下來:

# dd if=/dev/urandom of=/dev/sda1

# dd if=/dev/zero of=./test.file bs=1024count=1000000

# dd if=./test.file bs=8k | dd of=/dev/null

# dd if=/dev/sda of=/dev/sda

看完這些,我覺得你們更會認為賽門鐵克公司的老大應(yīng)該買塊豆腐撞死。特別說明一下/dev/urandom/dev/zero/dev/null這三個虛擬設(shè)備設(shè)備文件非常有用。urandom代表隨即數(shù),每次讀入的數(shù)據(jù)都不會相同;zero代表0,每次讀入的數(shù)據(jù)都是0;而null主要面對寫,相當(dāng)于是一個黑洞一樣,無論寫什么都會消失得無影無蹤。

不知道通過我上面的介紹,大家是否已經(jīng)理解dd在磁盤管理中的作用了呢?既然到了這個份上,理不理解我也管不了了。生活還得繼續(xù),我們的內(nèi)容接著往下走,該說一下fsck了。

fsck一般我們很少手工執(zhí)行,基本上都是在系統(tǒng)啟動階段就執(zhí)行了。至于它是什么作用則非常簡單,與Windowsscandisk一樣,對文件系統(tǒng)的損壞進行修復(fù)。需要注意,fsck只能對文件系統(tǒng)的損壞進行修復(fù),對磁盤的損壞它是沒有辦法的。后面我們會有單獨的章節(jié)來介紹fsck的工作原理,這里就不做復(fù)述。具體的使用方法就是:

# fsck -t?文件系統(tǒng)設(shè)備名

比如

# fsck -f -t ext3 /dev/hda3

其中參數(shù)-f要求進行強制檢查。如果不增加-f選項,在沒有報錯的磁盤中是不會做檢查的。至于磁盤什么時候會報錯呢?一般就是非法關(guān)機的時候了!

期待已久的mount的終于登場了。前面已經(jīng)講過掛接點是個什么東西了,相信大家還在為Linux這種怪異的設(shè)計而嘖嘖稱奇呢。但是早已用慣Linux的我反倒覺得Windows的設(shè)計非常奇怪。相比之下,Linux的方式更為靈活。就比如在Windows下有一個軟件必須在D盤下的某個目錄中讀取文件,而這個軟件若是在一個沒有D盤的系統(tǒng)中就無法執(zhí)行了;相反的,在Linux下,只需要特意創(chuàng)建一個目錄即可,如果需要單獨的磁盤分區(qū)來存儲它,使用mount命令指定給它就好了。

雖說mount命令聽起來有點神奇,但是使用起來卻是非常簡單。一般的用法是這樣的:

# mount [-t?文件系統(tǒng)]?設(shè)備名稱掛接點

比如我們要將系統(tǒng)中第二塊串口硬盤的第一個分區(qū)(如果有的話)掛接到/data目錄下,可以這樣用:

# mount /dev/sdb1 /data

# mount -t vfat /dev/sdb1 /data

怎么樣,夠簡單的吧?對于第二種用法很多時候-t參數(shù)是多余的,因為類似ext2ext3這樣的ExtN類的基于inode的文件系統(tǒng),都是都有超級塊的。利用超級塊就能夠了解到具體的文件系統(tǒng)。所以第一種用法在大多數(shù)時候都會成功。而第二種用法多數(shù)用于掛接Windows分區(qū)時使用,因為這些文件文件系統(tǒng)不具備超級快。

其實掛接磁盤分區(qū)還只是mount命令的最平常的一種用法。由于Linux使用設(shè)備文件來描述一個設(shè)備,那么如果有一個實際的文件中的內(nèi)容與在某個磁盤設(shè)備文件中的讀到的內(nèi)容一致,那么這個實際的文件也能夠掛接進來。就比如我們之前使用dd命令創(chuàng)建的sda1.img文件(未壓縮的),就可以利用這樣的命令來掛進到一個目錄上:

# mount -o loop ./sda1.img /mnt/sda1

這樣你就會發(fā)現(xiàn)/mnt/sda1目錄下的內(nèi)容與/boot目錄下的內(nèi)容相同(別忘了之前df命令的輸出)。以此類推,我們下載到的*.iso文件也可以使用同樣的方法掛接到某個目錄上直接訪問了。例如:

# mount -o loop ./CentOS-6.4-x86_64-bin-DVD1.iso/mnt/centos

看到這里是不是覺得Windows下那些虛擬光驅(qū)軟件的作者們都開買塊豆腐撞死了?

在這種mount的用法中,比較重要的是“-o命令選項,這是個mount比較靈活的一個選項,有很多可選參數(shù)。比如“ro”說明掛接的磁盤是只讀的、“rw說明掛接的磁盤是可讀寫的等等。而loop則說明要掛接的文件是一個虛擬設(shè)備,而這個虛擬設(shè)備是環(huán)形的設(shè)備。為什么是“環(huán)形”呢?想想硬盤、光盤、軟盤等都是什么形狀就行了。還不知道?圓形的啊!

mount相反的操作就是卸載了,使用umount命令。它的操作更加簡單,給定掛接點目錄或具體設(shè)備就行了。比如

# umount /data

#umount /dev/sdb1

如果你的系統(tǒng)中有這些設(shè)備,則這兩種方法是等價的。

其余的有關(guān)進行磁盤分區(qū)和格式化的命令就不做詳細介紹了。因為很多人連Windows下這樣的工具怎么用都還搞不清楚,可見它們都是很少用到的東西。為了滿足一份同學(xué)的好奇心,我們在這里只說一下它們的名字。

用于磁盤分區(qū)的命令是fdisk,這與WindowsDOS下的命令名是一致的。比fdisk更好用一些的分區(qū)工具是cfdiskCent OS中有提供。而對磁盤做格式化的則不是format命令。在Linux是下mkfs.*命令。至于*是什么,取決于你格式化成什么系統(tǒng)。比如要格式化成ext3文件系統(tǒng),就應(yīng)該是mkfs.ext3。如果想了解系統(tǒng)中都對那些文件系統(tǒng)支持這樣的命令,直接到/sbin目錄下查看就是了。而更為通用的格式化命令則是mkfs,具體如何使用,查看聯(lián)機幫助吧。這類工具與之前介紹的那些磁盤工具也是一樣的,可以對某個磁盤中的一個具體文件進行分區(qū)和格式化。

2.5.3?/etc/fstab文件

現(xiàn)在大家已經(jīng)了解到了Linux磁盤的一些基本管理方式,也了解了掛接這個新鮮玩意兒。Windows是怎么操作的我們不是很清楚,但是在Linux啟動之后,其文件布局能夠像你所見到的這樣都是經(jīng)過一步一步的掛接來完成的。決定讓磁盤的各個分區(qū)具體要掛接到哪個目錄是由/etc/fstab文件所決定的,所以這個文件是Linux系統(tǒng)中十分重要的文件,一旦損壞或丟失,系統(tǒng)將無法正常啟動。所以掌握這個文件的格式并能手工恢復(fù)它,將是成為Linux系統(tǒng)管理員的必修課程。這個文件(/etc/fstab)在我們的測試系統(tǒng)中如下所示:

#

# /etc/fstab

# Created by anaconda on Sat Mar 17 05:12:212012

#

# Accessible filesystems, by reference, aremaintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8)and/or blkid(8) for more info

#

/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1

UUID=ec11a28b-9bf2-4f7e-95dc-2b7ccd5992ca /boot ext4 defaults 1 2

/dev/mapper/VolGroup-lv_home /home ext4 defaults 1 2

/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

我們可以清楚地看到,這個文件一共分為6個字段,分別是:

l設(shè)備文件、磁盤卷標(biāo)或者UUID

l掛接點

l文件系統(tǒng)類型

lmount命令的-o選項參數(shù),defaults不給定-o選項時的行為

l是否使用dump命令備份,0代表不做,1代表每天備份

l是否使用fsck命令檢查磁盤;0代表不檢查,1代表最早檢查(一般只有樹根“/”是1),2也是要檢查,只是比1要晚(除樹根之外的一般都使用這個)

在第一個字段中,我們看到了一些在df命令中出現(xiàn)的“分區(qū)”,而有一些則沒看到過。其實使用df –a就可以查看更多了。而比較讓人困惑的是/dev/sda1確不見了,但是能明顯看出來是“UUID=ec11a28b-2bf2-4f7e-95dc-2b7ccd5992ca這個設(shè)備。使用命令blkid命令就能露出真面目了。實際上在這里直接寫/dev/sda1也是沒有問題的。

雖然/dev/sda1找到主了,但是還有一個分區(qū)在df命令的輸出怎么也找不到,那就是類型為swap的這個分區(qū)。這個是什么呢?這個是交換分區(qū)!交換分區(qū)是什么概念呢?與Windows的頁面文件是相同的概念!

所謂的頁面交換文件,實際上就是虛擬內(nèi)存管理時要使用的內(nèi)存置換文件,就是用來擴展虛擬內(nèi)存空間的。當(dāng)然,也是拖慢系統(tǒng)的罪魁禍?zhǔn)字弧P枰⒁?#xff0c;如果你使用的是32位的系統(tǒng),而且已經(jīng)配備了4G的內(nèi)存,那么就沒有必要給Windows分配頁面交換文件(在沒有開啟PAE模式的情況下)。Linux下也有這樣的規(guī)矩,只是將頁面交換文件變成交換分區(qū)了。

創(chuàng)建交換分區(qū)可以使用fdisk命令,格式化它使用mkswap命令。這個似乎并沒有逃出我們之前所掌握的一些知識。但是到了具體掛接的時候就不一樣了,它不是掛接的,即不是使用mount命令來用的。取而代之的是使用swapon命令。如果需要關(guān)掉某個交換分區(qū),則使用swapoff命令。

此外,根據(jù)我們之前的經(jīng)驗,普通文件也是能夠成為交換分區(qū)的(還記得前面講的虛擬光驅(qū)嗎?),我們所幸就叫它交換文件好了。方法就是使用dd命令來創(chuàng)建一個空的文件,然后使用mkswap命令來格式化它。比如創(chuàng)建一個1G的交互文件,可以這樣:

# dd if=/dev/zero of=/tmp/swap bs=1Mcount=1024

# mkswap /tmp/swap

至于接下來該怎么做,我想你懂的。

2.5.4?邏輯卷

在前一小節(jié)中我們留下了一個小尾巴,說/dev/mapper/*這些都是邏輯卷。而具體邏輯卷是什么就沒有繼續(xù)說,主要是因為這個小尾巴其實并不小,一不小心可能夾到尾巴。

1.什么是邏輯卷

那么到底什么是邏輯卷呢?這個可能得需要一個比較實際的場景來解釋一下,正好還有一個。

前幾天我有一個同事,在自己的電腦中與他的Windows并行安裝了一個Ubuntu。他在使用Linux的時候總是顯得很小氣,只給他的Ubuntu分了10G的硬盤空間,并劃分了三個分區(qū)分別給了“/、“/homeswap。樹根“/分配2G的空間,“/home分配了7Gswap1G。這樣的分配方法還是比較專業(yè)的。只是沒過幾天他就遇到了麻煩。他想用這個Linux系統(tǒng)來定制一套Android系統(tǒng),于是就需要下載到Android的全部源代碼。但是沒想到Google實在是大方,7G的磁盤空間不夠裝Android的源代碼。好了,我想問問各位同學(xué),你遇到這樣的問題要怎么做?

按照我們前面掌握的知識可以這樣做。首先再從硬盤中劃分一個更大的分區(qū)出來,比如100G;然后再將這個分區(qū)格式化成Linux的文件系統(tǒng),并將/home目錄下的內(nèi)容全部復(fù)制到新的分區(qū);最后修改/etc/fstab文件,讓新的分區(qū)成為/home。重啟之后就大功告成了。看來問題解決的非常好,Linux的靈活性顯然不一般。但是如果覺得100G給的太多了呢,Windows又不夠用了怎么辦?難道再重復(fù)上述動作?天哪,復(fù)制文件是要花很長很長時間的,尤其是這種源代碼的東西,無數(shù)的小文件。

好了,邏輯卷就是來解決這個問題的,它能夠彈性的調(diào)整文件系統(tǒng)的容量。從理論上說,邏輯卷就是在磁盤分區(qū)和文件系統(tǒng)之間增加了一個邏輯層。這樣,當(dāng)文件系統(tǒng)的容量覺得不夠用時,可以向邏輯卷中增加新的分區(qū)來實現(xiàn)擴大容量的目的;而當(dāng)發(fā)現(xiàn)文件系統(tǒng)過大而有磁盤浪費的時候,可以選擇去除一些基本沒有使用的磁盤分區(qū)來達到容量的目的。在Linux系統(tǒng)中實現(xiàn)邏輯卷更能的是LVM,Logical Volume Manager,邏輯卷管理器。

2.基本術(shù)語與原理

在進一步講述邏輯卷之前,我們先了解一下它的基本術(shù)語。

lPhysical VolumePV,物理卷

物理卷就是具體的硬盤分區(qū),或者與硬盤分區(qū)具有相同功能的設(shè)備,比如raid等,是LVM的基本存儲單元。但是與基本的物理存儲介質(zhì),比如普通的硬盤分區(qū)等,物理卷還要包含與LVM相關(guān)的管理參數(shù)。

lVolume GroupVG,卷組

卷組類似于非LVM系統(tǒng)中的物理硬盤,由多個物理卷組成。可以在卷組上創(chuàng)建一個或多個LVM分區(qū)。

lPhysical ExtendPE,物理擴展區(qū)

每一個物理卷被進一步劃分成被稱為物理擴展區(qū)的基本單元,換句話說PELVM使用的最小存儲區(qū),與物理磁盤中的“扇區(qū)”或文件系統(tǒng)中的“簇”的概念基本相同。LVM的默認PE大小是4M,每個卷組最多僅能含有65534PE。所以,一個卷組的最大容量就是4M*65534=256G。如果改變PE的大小,就能夠改變卷組的最大容量。

lLogical VolumeLV,邏輯卷

最后我們說道正題上了,就是邏輯卷。這個邏輯卷就是在卷組之上再進行切分,與在物理磁盤上繼續(xù)劃分分區(qū)是一樣的道理。但是邏輯卷的大小必須是PE的整數(shù)倍。這就是LVM能夠彈性調(diào)整邏輯卷容量的秘密所在。需要增加容量,就增加PE;需要減少容量,就減少PELVM的構(gòu)成原理見圖2.6所示。

2.6?LVM的構(gòu)成原理

到了具體的邏輯卷上,就可以應(yīng)用mkfs命令進行格式化了,如此以來就能夠使用mount命令掛接到系統(tǒng)中了。

構(gòu)成原理現(xiàn)在算是搞定了,但是對于一個邏輯卷可能會對應(yīng)到多個物理分區(qū)上,那么在向硬盤中寫入數(shù)據(jù)的時候是怎么操作的呢?目前有兩種模式:

l線性模式(linear):即逐個物理分區(qū)使用。比如一個邏輯卷占用了/dev/sda1/dev/sda2兩個分區(qū),那么首先寫/dev/sda1,直到滿了之后才會使用/dev/sda2

l交錯模式(triped):這個就將一筆數(shù)據(jù)拆成兩個部分,分別寫入/dev/sda1/dev/sda2。這個與RAID 0很像。如果使用/dev/sda1/dev/sdb1這樣的組合來做邏輯卷,有相當(dāng)于一份數(shù)據(jù)用兩個硬盤來寫,理論上是能夠提升讀寫效率的。

需要注意,雖然交錯模式的邏輯卷有點像RAID,但是它的最終目的還是用于磁盤容量的彈性可調(diào)的。如果要關(guān)注性能,還是直接使用RAID比較好。而且triped模式的邏輯卷與RAID 0是類似的,即當(dāng)某個分區(qū)掛掉了,那么你的數(shù)據(jù)也會跟著灰飛煙滅的。所以邏輯卷的默認工作模式是linear的。

3.基本操作

Cent OS已經(jīng)默認支持邏輯卷了,所以如果選擇了Cent OS的同學(xué),現(xiàn)在就已經(jīng)在使用邏輯卷了。但是如果你選擇了Ubuntu這樣的發(fā)行版,就沒有這么幸運了,因為Ubuntu并沒有提供這方面的支持。但是也不要緊,我們可以手動安裝。

首先,邏輯卷必須有內(nèi)核支持才能工作。所以必須保證你所使用的內(nèi)核已經(jīng)開啟了的邏輯卷的支持(好在大多數(shù)主流發(fā)行版的內(nèi)核都支持);其次,需要安裝lvm2軟件包。當(dāng)這些都準(zhǔn)備妥當(dāng)之后,就可開始具體的工作了。

第一步就是準(zhǔn)備磁盤空余空間(PQ絕對是個好工具),硬盤多的同學(xué)可以考慮利用第二塊硬盤。然后在這些準(zhǔn)備好的空余空間中劃出幾個分區(qū)來,并設(shè)置分區(qū)類型為Linux LVM(分區(qū)標(biāo)志是8e)。我們這里正好有一個塊20G的老硬盤,我們將它劃分了4個分區(qū),平均每個分區(qū)5G

第二步是創(chuàng)建物理卷。與物理卷相關(guān)的命令有:pvcreatepvscanpvdisplaypvremove四個。具體都提供那些功能,相比通過名稱都能了解到。我們將剛剛劃分的4個分區(qū)都設(shè)置成物理卷,執(zhí)行這樣的命令:

# pvcreate /dev/hdb1

# pvcreate /dev/hdb2

# pvcreate /dev/hdb3

# pvcreate /dev/hdb4

# pvcreate /dev/hdb{1234

顯然后一種的風(fēng)格更加簡便,所以我們后面的所有操作都將采用這種風(fēng)格。

第三步就是創(chuàng)建卷組VG。操作卷組的命令有:vgcreatevgscanvgdisplayvgextendvgreducevgchangevgremove。創(chuàng)建一個新卷組可以執(zhí)行類似這樣的命令:

# vgcreate /dev/hdb{123} NewVolGroup

我們知道卷組是由多個物理卷構(gòu)成的,現(xiàn)在我們將/dev/hdb1/dev/hdb2/dev/hdb3做成一個名為NewVolGroup的卷組,留下的那個用于放在后面說明如果動態(tài)增加或減少容量用。在卷組中額外添加或刪除物理卷的命令是vgextendvgreduce。在創(chuàng)建創(chuàng)建卷組的這一時刻,可以給vgcreate命令傳遞“-s”選項指定物理擴展區(qū)PE的大小,比如16M。可能有同學(xué)會覺得設(shè)置較大的PE會導(dǎo)致磁盤的浪費。其實不然,PE與磁盤的最小存儲單元“扇區(qū)”或“簇”不同,他只是LVM用于進行動態(tài)伸縮尺寸的一個最小分配單元,而在真正存儲文件的時候,還是會利用磁盤本身的最小存儲單元。

第四步是創(chuàng)建邏輯卷LV,就相當(dāng)于對卷組這個大磁盤進行分區(qū)。與邏輯卷LV有關(guān)的命令有:lvcreatelvscanlvdisplaylvextendlvreducelvremovelvresize。出于方便考慮,我們將整個VG只劃分為一個LV,使用命令:

# lvcreate -l 3842 -n lv_data NewVolGroup

在這個命令中“-l”選項說明分配的PE數(shù)量,“-n”選擇則為新的LV命名。本例中3842正是我們現(xiàn)有的全部PE數(shù)量。我們從哪里獲得的呢?利用vgdisplay命令就行。

這樣,一個新的邏輯卷就創(chuàng)建完畢了。剩下的事情就是格式化并掛接它。我們使用如下命令:

# mkfs.ext4 /dev/mapper/NewVolGroup-lv_data

# mkdir /mnt/data

# mount /dev/mapper/NewVolGroup-lv_data/mnt/data

之后就可以使用df命令來確認這個新的磁盤使用情況了。

4.縮放邏輯卷

使用邏輯卷的目的就是沖著它能任意縮放的,所以如何縮放邏輯卷才是關(guān)鍵所在。我們先來看一下如何給邏輯卷增加容量。

我們之前特意留下了/dev/hda4來做這件事。在實際應(yīng)用中,還需要經(jīng)歷創(chuàng)建分區(qū)和物理卷的階段。將一個新的物理卷加入到一個已有的卷組中使用vgextend命令。在我們的例子中這樣操作:

$ vgextend NewVolGroup /dev/hda4

之后我們使用vgdisplay命令就能發(fā)現(xiàn)有新的Free PE出現(xiàn),在我們的測試機中是1274個。這個階段是擴大了卷組的容量,但是邏輯卷的還沒有改變。還需要使用lvresize命令將新增加的PE加入到邏輯卷中。在我們的例子中這樣操作:

$ lvresize -l +1274/dev/mapper/NewVolGroup-lv_data

這樣再使用vgdisply命令就發(fā)現(xiàn)已經(jīng)沒有Free PE了。不過這個時候我們使用df命令查看磁盤空間情況時,并沒有發(fā)現(xiàn)有什么變化。主要是因為我們還差一個步驟,就是執(zhí)行resize2fs命令。具體的原因其實很簡單,我們新增加的那些磁盤空間還沒有格式化呢。這個命令很簡單,在我們的例子中只需要這樣:

$ resize2fs /dev/mapper/NewVolGroup-lv_data

這樣,我們的磁盤容量就增大了,完全是在線的,是不是相當(dāng)神奇呢?

好了,說完了增加容量,就來看看如何減小容量吧。這次我們要把/dev/hda1抽出來。但是減小容量相對來講就要麻煩一些了,首先它就是不能在線的了。

我們先要確定/dev/hda1到底有多大,可以通過pvdisplay命令獲得。在我們的測試機中得到的結(jié)果是5.01G。而我們的硬盤是20G的,那么先要使用resize2fs命令將我們的磁盤調(diào)整到20G-5.01G=14990M的大小。我們執(zhí)行這樣的命令:

# umount /mnt/data

# e2fsck -f /dev/mapper/NewVolGroup-lv_data

# resize2fs /dev/mapper/NewVolGroup-lv_data14990M

# mount /dev/mapper/NewVolGroup-lv_data/mnt/data

這之后我們再通過df命令查看就能看出磁盤容量已經(jīng)縮減了。但是此時我們還有沒回收任何PE。這個時候還需要使用lvresize命令來回收PE。回收多少呢?當(dāng)然是/dev/hda1中含有的那些了。通過pvdisplay命令可以查到有1282個,所以執(zhí)行命令:

# lvresize -l -1282/dev/mapper/NewVolGroup-lv_data

那現(xiàn)在是不是就可以將/dev/hda1抽出來了呢?還不行。因為通過pvdisplay命令發(fā)現(xiàn),/dev/sda1并沒有空閑的PE,而空閑的PE現(xiàn)在在/dev/sda3/dev/sda4上。/dev/sda4上有1274Free PE,而/dev/sda3上有8Free PE(總共1280PE)。要抽出/dev/sda1,必須是的它的全部PEFree狀態(tài),這個可以借由pvmove命令完成。在我們這個場景中可以使用類似這樣的命令:

# psmove /dev/hda1:0-1273 /dev/hda4:0-1273

# psmove /dev/hda1:1274-1281/dev/hda3:1272-1279

這之后再使用pvdisplay查看,就發(fā)現(xiàn)/dev/sda1PE都為Free狀態(tài)了。這之后就可以使用vgreduce命令,將/dev/sda1抽出了。在我們的場景中可執(zhí)行類似這樣的命令:

# vgreduce NewVolGroup /dev/hda1

需要提醒大家一下,在我們這個例子中,由于/dev/sda1是所有分區(qū)中最大的一個,使得無法將它的整個數(shù)據(jù)移入到任何其他分區(qū)中,所以我們在使用psmove命令的時候參數(shù)有些復(fù)雜。但是這種情況卻是在實際應(yīng)用當(dāng)中經(jīng)常遇到的情況。如果遇到了目標(biāo)分區(qū)空余空間比原分區(qū)大的時候,PE編號范圍就可以省略了。順便提一句,PE編號是從零開始的。

總結(jié)

以上是生活随笔為你收集整理的融于心而表于行 之 磁盘的管理方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品后入内射日本在线观看 | 国产乱人伦app精品久久 | 国产精品久久av无码一区二区 | 67194午夜| 欧美日韩国产大片 | 久久久综合色 | 久久福利免费视频 | 欧美日韩不卡一区 | 欧美乱视频 | 免费国偷自产拍精品视频 | 久久99精品久久久久久园产越南 | 在线观看xxxx | 色呦呦中文字幕 | 黄色三级视频 | 美女aaa | 日本一区二区在线免费 | 殴美一级黄色片 | 91久久综合精品国产丝袜蜜芽 | 逼逼av| 500部大龄熟乱视频 亚洲乱码精品 | 影音先锋国产精品 | 国产日本欧美一区二区 | 日韩伦理视频 | 日韩视频一区二区在线观看 | 丰满少妇一区二区三区专区 | www久久久久久久 | 欧美精品在线一区二区三区 | 少妇搡bbbb搡bbb搡澳门 | 成人国产精品免费观看视频 | 免费观看久久久 | 91在线高清视频 | 狠狠人妻久久久久久综合麻豆 | 韩国av在线播放 | 中文字幕一区二区三区四区 | 中文字幕一区二区三区在线视频 | 伦理一级片 | 人妻久久一区二区三区 | 黑人巨大精品欧美一区免费视频 | 97中文字幕在线观看 | 91麻豆产精品久久久久久 | 久久精品麻豆 | 麻豆传媒视频入口 | 91高清免费| 亚洲色图在线观看视频 | 无码精品一区二区免费 | 精品久久久久中文慕人妻 | 天天爱综合 | 久久精品99久久久久久久久 | 无码人妻丰满熟妇区毛片蜜桃精品 | 羞羞的网站在线观看 | 性av网站 | 精品美女久久久久 | 日本黄色录象 | 亚洲国产精品久久久久爰色欲 | 亚洲国产精品欧美久久 | 91视频这里只有精品 | 日韩av男人的天堂 | 在线播放波多野结衣 | 成人影视在线播放 | www.激情五月 | 亚洲精品网站在线播放gif | 三级特黄视频 | 欧洲丰满少妇做爰 | 免费在线中文字幕 | 国产午夜亚洲精品午夜鲁丝片 | 日韩黄色精品 | 一级黄色在线观看 | 欧美丰满熟妇xxxxx | 黄色大片黄色大片 | 亚洲一道本 | 亚洲成人va | 亚洲精品中文字幕成人片 | 成人黄色性视频 | 大咪咪av| 中文字幕一区2区3区 | 色www国产亚洲阿娇 自拍一区在线 | youjizz麻豆 | 国产白嫩美女无套久久 | 岛国av噜噜噜久久久狠狠av | 会喷水的亲姐姐 | 国产精品对白刺激久久久 | 中文字幕二区在线观看 | 国产无 | 住在隔壁的她动漫免费观看全集下载 | 亚洲九九九九 | 午夜av影视 | 色悠悠国产 | 亚洲激情久久 | 久久综合伊人77777麻豆最新章节 | 91精品啪| 亚洲熟悉妇女xxx妇女av | 老外黄色一级片 | 少妇乱淫36部 | 男人的天堂av片 | 人妻av一区二区三区 | 爆乳熟妇一区二区三区 | 国产精品久久久久久久免费大片 | 一区二区日韩在线观看 | 狠狠撸在线观看 |