一. 什么是磁盤
絕大多數(shù)人對(duì)硬盤都不陌生,
一塊小小的硬盤里坠敷,就可以存儲(chǔ)海量的照片妙同、音樂和電影等射富,尤其是你們喜愛的各類**動(dòng)作片。
但如此小的空間渐溶,是如何存儲(chǔ)那么多信息的呢辉浦?
每個(gè)硬盤中心都是一摞高速運(yùn)轉(zhuǎn)的圓盤,圓盤由一層帶磁的微型金屬顆粒組成茎辐,每個(gè)顆粒也被稱為一個(gè)比特宪郊,都有自己的磁化程度,用于存儲(chǔ)0個(gè)1拖陆。
當(dāng)記錄數(shù)據(jù)時(shí)弛槐,硬盤的磁頭開始通電,行成強(qiáng)磁場(chǎng)依啰,數(shù)據(jù)在磁場(chǎng)的作用下轉(zhuǎn)變成電流乎串,從而將信息記錄在圓盤上。
由海量顆粒組成的信息速警,就是我們存在硬盤里的數(shù)據(jù)叹誉。
1.什么是磁盤、軟盤闷旧、硬盤长豁?
1.1.什么是磁盤?
磁盤是指利用磁記錄技術(shù)存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器忙灼,是所有硬式存儲(chǔ)的統(tǒng)稱匠襟,如最早出現(xiàn)的軟盤,現(xiàn)在的硬盤该园,都是磁盤中的一部分酸舍。
1.2.什么是軟盤?
磁盤開始指的是1.44MB的3.5英寸磁盤里初,這是很早時(shí)候的電腦儲(chǔ)存盤啃勉,也叫軟盤。
軟盤在如今已經(jīng)很少被使用了双妨,使用軟盤需要安裝軟盤驅(qū)動(dòng)淮阐。軟盤容量小,容易損壞斥难。隨著數(shù)據(jù)的大量增長(zhǎng)枝嘶,軟盤已經(jīng)不滿足日益所需的數(shù)據(jù)存儲(chǔ)需求帘饶,所以哑诊,硬盤便被研發(fā)了出來。
1.3什么是硬盤及刻?
硬盤就是一種最為常見的外存儲(chǔ)器镀裤,它好比是數(shù)據(jù)的外部倉(cāng)庫(kù)一樣竞阐。電腦除了要有“工作間”,還要有專門存儲(chǔ)東西的倉(cāng)庫(kù)暑劝。是計(jì)算機(jī)中的最大的存儲(chǔ)裝置了骆莹,我們會(huì)將磁盤的儲(chǔ)存片裝到硬質(zhì)金屬盒子里,這樣就可以得到更好的保護(hù)担猛,而且在使用壽命上也比軟盤優(yōu)越得多幕垦,只有低格的時(shí)候才會(huì)對(duì)硬盤有很大的傷害。
1.4.磁盤與軟盤硬盤的關(guān)系傅联?
磁盤是一種統(tǒng)稱先改,即是一開始的軟盤,又是現(xiàn)如今的硬盤蒸走,但是在現(xiàn)在仇奶,說起磁盤,都指的是硬盤比驻。
2. 磁盤的基本結(jié)構(gòu)
2.1 什么是盤片
盤片是硬盤中承載數(shù)據(jù)存儲(chǔ)的介質(zhì)该溯。硬盤盤片是以堅(jiān)固耐用的材料為盤基,將磁粉附著在鋁合金(新材料也有用玻璃)圓盤片的表面上别惦,表面被加工的相當(dāng)平滑狈茉。這些磁粉被劃分成稱為磁道的若干個(gè)同心圓,在每個(gè)同心圓的磁道上就好像有無數(shù)的任意排列的小磁鐵步咪,它們分別代表著0和1的狀態(tài)论皆。當(dāng)這些小磁鐵受到來自磁頭的磁力影響時(shí),其排列的方向會(huì)隨之改變猾漫。
利用磁頭的磁力控制指定的一些小磁鐵方向点晴,使每個(gè)小磁鐵都可以用來儲(chǔ)存信息。硬盤是由多個(gè)盤片疊加在一起悯周,互相之間由墊圈隔開粒督。
硬盤中一般會(huì)有多個(gè)盤片,每個(gè)盤片包含兩個(gè)面禽翼,每個(gè)盤面都對(duì)應(yīng)地有一個(gè)讀/寫磁頭(Head屠橄,簡(jiǎn)寫為H)。受到硬盤整體體積和生產(chǎn)成本的限制闰挡,盤片數(shù)量都受到限制锐墙,一般都在5片以內(nèi)。盤片的編號(hào)自下向上從0開始长酗,如最下邊的盤片有0面和1面溪北,再上一個(gè)盤片就編號(hào)為2面和3面。
2. 2什么是磁道
當(dāng)磁盤旋轉(zhuǎn)時(shí),磁頭若保持在一個(gè)位置上之拨,則每個(gè)磁頭都會(huì)在磁盤表面劃出一個(gè)圓形軌跡茉继,這些圓形軌跡就叫做磁道。
每個(gè)盤片的盤面在出廠的時(shí)候被劃分出了多個(gè)同心圓環(huán)蚀乔,數(shù)據(jù)就存儲(chǔ)在這樣的同心圓環(huán)上面烁竭,每個(gè)盤面可以劃分多個(gè)磁道,但是肉眼不可見吉挣。通常一塊盤面有成千上萬個(gè)磁道派撕。
磁盤上的磁道是一組記錄密度不同的同心圓。磁表面存儲(chǔ)器是在不同形狀(如盤狀睬魂、帶狀等)的載體上腥刹。
2.3 什么是扇區(qū)
在硬盤出廠時(shí)會(huì)對(duì)磁盤進(jìn)行一次低級(jí)格式化,其實(shí)就是再將每個(gè)磁道劃分為若干個(gè)弧段汉买,每個(gè)弧段就是一個(gè)扇區(qū)(Sector)衔峰。若干個(gè)扇區(qū)就組成整個(gè)盤片,硬盤的讀寫以扇區(qū)為基本單位蛙粘。這種以簇為最小分配單位的機(jī)制垫卤,使硬盤對(duì)數(shù)據(jù)的管理變得相對(duì)容易。現(xiàn)在每個(gè)扇區(qū)可存儲(chǔ)512字節(jié)數(shù)據(jù)出牧,已經(jīng)成了業(yè)界的約定穴肘。
低級(jí)格式化就是將空白的磁盤劃分出柱面和磁道,再將磁道劃分為若干個(gè)扇區(qū),每個(gè)扇區(qū)又劃分出標(biāo)識(shí)部分ID、間隔區(qū)GAP和數(shù)據(jù)區(qū)DATA等舔痕。
硬盤低級(jí)格式化的功用:硬盤低級(jí)格式化是對(duì)硬盤最徹底的初始化方式评抚,經(jīng)過低格后的硬盤,原來保存的數(shù)據(jù)將會(huì)全部丟失伯复,所以一般來說低格硬盤是非常不可取的慨代,只有非常必要的時(shí)候才能低格硬盤。而這個(gè)所謂的必要時(shí)候有兩種啸如,一是硬盤出廠前侍匙,硬盤廠會(huì)對(duì)硬盤進(jìn)行一次低級(jí)格式化;另一個(gè)是當(dāng)硬盤出現(xiàn)某種類型的壞道時(shí)叮雳,使用低級(jí)格式化能起到一定的緩解或者屏蔽作用想暗。
2.4 什么是柱面
柱面實(shí)際上就是我們抽象出來的一個(gè)邏輯概念,簡(jiǎn)單來說就是處于同一個(gè)垂直區(qū)域的磁道稱為柱面帘不,即各盤面上面相同位置的集合说莫,這樣數(shù)據(jù)如果存儲(chǔ)到相同半徑磁道上的同一扇區(qū),這樣可以實(shí)現(xiàn)并行讀取寞焙,主要是減少磁頭尋道時(shí)間储狭。
2.5 什么是磁頭
磁頭是硬盤中最昂貴的部件告唆,也是硬盤技術(shù)中最重要和最關(guān)鍵的一環(huán)。主要作用是讀取磁盤磁道上面的金屬塊晶密,負(fù)責(zé)讀或?qū)懭霐?shù)據(jù)。
磁盤整體結(jié)構(gòu)圖
二. 磁盤的預(yù)備知識(shí)
我們需要了解下磁盤的接口類型模她,磁盤涉及的相關(guān)術(shù)語稻艰,磁盤在Linux下的命令方式
2.1 磁盤的接口類型
IDE,SCSI (已經(jīng)被淘汰)
SATA III 與 SAS (企業(yè)使用較多)
SSD(支持SATA侈净、PCI-E)
固態(tài)硬盤SATA和MSATA有什么區(qū)別旋膳?
機(jī)械和固態(tài)的對(duì)比
機(jī)械(HDD) | 固態(tài)(SSD) |
---|---|
容量大價(jià)格低 | 容量小價(jià)格高 |
抗擊打能力弱 | 抗擊打能力高 |
讀寫速度慢 | 讀寫速度很快 |
數(shù)據(jù)恢復(fù)易 | 數(shù)據(jù)恢復(fù)難 |
使用時(shí)間無限 | 使用時(shí)間1-2w次 |
2.2 磁盤的基本術(shù)語
尺寸:2.5英寸澎语、3.5英寸
容量:B、KB验懊、MB擅羞、GB、TB义图、PB减俏、EB
轉(zhuǎn)速:5.4k、7.2k碱工、10k娃承、15k,單位表示為RPM怕篷,RPM是Revolutions per minute的縮寫历筝,是轉(zhuǎn)/每分鐘。
IOPS:每秒能夠發(fā)生IO的次數(shù)
2.3 磁盤在系統(tǒng)上的命名方式
設(shè)備名稱 | 分區(qū)信息 | 設(shè)備類型 |
---|---|---|
/dev/sda | /dev/sda1 | 第一塊物理磁盤第一分區(qū) |
/dev/sdb | /dev/sdb2 | 第二塊磁盤第二個(gè)分區(qū) |
/dev/vdd | /dev/vdd4 | 第四塊虛擬磁盤的第四個(gè)分區(qū) |
PS1:系統(tǒng)中分區(qū)由數(shù)字編號(hào)表示廊谓,1-4表示給主分區(qū)使用和擴(kuò)展分區(qū)漫谷,邏輯分區(qū)從5開始,為什么分區(qū)還有限制蹂析?不應(yīng)該是隨意分配舔示?因?yàn)镸BR分區(qū)表只能分配4個(gè)主分區(qū)?why电抚?
[MBR為什么只能劃分4個(gè)主分區(qū)惕稻?]
PS2:前面我們已經(jīng)提到過MBR分區(qū)表只能分配4個(gè)主分區(qū),但現(xiàn)在還有一種新型的分區(qū)表GPT蝙叛,GPT支持分配128個(gè)主分區(qū)俺祠。注意MBR與GPT之間不能互轉(zhuǎn),會(huì)導(dǎo)致數(shù)據(jù)丟失。
MBR與GPT之間又有什么區(qū)別蜘渣?
MBR位置:0磁頭0磁道1扇區(qū)淌铐。
常用查看磁盤的命令
#如何查看磁盤的大小及文件內(nèi)容的大小
[root@qls ~]# du -sh /etc/
34M /etc/
#查看磁盤使用情況
[root@qls ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 5.8G 32G 16% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 508K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
tmpfs 184M 0 184M 0% /run/user/0
?
#查看設(shè)備詳情,以及分區(qū)的情況
[root@qls ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
在linux中,當(dāng)我們給系統(tǒng)添加一塊新硬盤時(shí)蔫缸,我們是無法使用的腿准,因?yàn)樗€沒有分區(qū)和格式化,只有當(dāng)我們將新硬盤分區(qū)并格式化之后拾碌,掛載在某個(gè)目錄下吐葱,才能供我們正常使用,接下來我們要學(xué)習(xí)兩種種硬盤分區(qū)工具校翔,F(xiàn)disk弟跑,Gdisk;分別是針對(duì)于MBR分區(qū)格式防症,GPT分區(qū)格式進(jìn)行分區(qū)孟辑。還有一種高級(jí)分區(qū)工具Parted(可以針對(duì)于多種分區(qū)表進(jìn)行分區(qū),使用起來也是比較復(fù)雜的蔫敲,不建議使用)扑浸。
三. 磁盤基本分區(qū)Fdisk
適用于磁盤小于2TB的磁盤,分區(qū)類型MBR燕偶,主分區(qū)4或主分區(qū)3+擴(kuò)展分區(qū)(邏輯分區(qū)+…)喝噪,分區(qū)后需要保存后才能生效
1. 先準(zhǔn)備磁盤
由于沒有真實(shí)的服務(wù)器,只能添加虛擬的磁盤,VMware中添加硬盤指么,添加一塊20G的硬盤酝惧。
2.分區(qū)fdisk--->分低于2TB的磁盤
[root@qls ~]# ll /dev/sd*
brw-rw---- 1 root disk 8, 0 7月 5 19:21 /dev/sda
brw-rw---- 1 root disk 8, 1 7月 5 19:21 /dev/sda1
brw-rw---- 1 root disk 8, 2 7月 5 19:21 /dev/sda2
brw-rw---- 1 root disk 8, 16 7月 5 19:21 /dev/sdb
brw-rw---- 1 root disk 8, 32 7月 5 19:21 /dev/sdc
[root@qls ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sdc 8:32 0 4T 0 disk
?
[root@qls ~]# fdisk /dev/sdb
Command (m for help): m #輸入m列出常用的命令
Command action
a toggle a bootable flag #切換分區(qū)啟動(dòng)標(biāo)記
b edit bsd disklabel #編輯sdb磁盤標(biāo)簽
c toggle the dos compatibility flag #切換dos兼容模式
d delete a partition #刪除分區(qū)
l list known partition types #顯示分區(qū)類型
m print this menu #顯示幫助菜單
n add a new partition #新建分區(qū)
o create a new empty DOS partition table #創(chuàng)建新的空白分區(qū)表
p print the partition table #顯示分區(qū)表的信息
q quit without saving changes #不保存退出
s create a new empty Sun disklabel #創(chuàng)建新的Sun磁盤標(biāo)簽
t change a partitions system id #修改分區(qū)ID,可以通過l查看id
u change display/entry units #修改容量單位,磁柱或扇區(qū)
v verify the partition table #檢驗(yàn)分區(qū)表
w write table to disk and exit #保存退出
x extra functionality (experts only) #拓展功能
?
#分配第1個(gè)分區(qū)
[root@qls ~]# fdisk /dev/sdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p #選擇分配主分區(qū)
Partition number (1-4, default 1): #主分區(qū)編號(hào)
First sector (2048-41943039, default 2048): #開始的扇區(qū) 回車即可
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G #設(shè)置分區(qū)的大小
Partition 1 of type Linux and of size 1 GiB is set
?
Command (m for help): p #查看當(dāng)前磁盤的分區(qū)情況
?
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x44d0ef75
?
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
?
?
#分配第2個(gè)分區(qū)
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (2099200-41943039, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +2G
Partition 2 of type Linux and of size 2 GiB is set
?
Command (m for help): p
?
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x44d0ef75
?
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
#分配6個(gè)分區(qū) (超出了4個(gè)主分區(qū),最佳 3p+1e+3l 2p+1e+4l)
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 6293503 2097152 83 Linux
/dev/sdb3 6293504 10487807 2097152 83 Linux
/dev/sdb4 10487808 41943039 15727616 5 Extended
/dev/sdb5 10489856 20975615 5242880 83 Linux
/dev/sdb6 20977664 31463423 5242880 83 Linux
/dev/sdb7 31465472 41943039 5238784 83 Linux
#檢查分區(qū)情況
[root@qls ~]# lsblk
sdb 8:16 0 20G 0 disk
|-sdb1 8:17 0 1G 0 part
|-sdb2 8:18 0 2G 0 part
|-sdb3 8:19 0 2G 0 part
|-sdb4 8:20 0 1K 0 part
|-sdb5 8:21 0 5G 0 part
|-sdb6 8:22 0 5G 0 part
`-sdb7 8:23 0 5G 0 part
3. 格式化->創(chuàng)建文件系統(tǒng)(裝修)
[root@qls ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4. 掛載
[root@qls /]# mount /dev/sdb1 /soft/ #將/soft作為/dev/sdb1分區(qū)的一個(gè)入口目錄
[root@qls /]# touch /soft/1111 #添加111文件,實(shí)際上是在/dev/sdb1分區(qū)上添加的數(shù)據(jù)
[root@qls /]# ls /soft/
1111
[root@qls /]# umount /soft/ #卸載/soft掛載信息
[root@qls /]# ls /soft/ #soft又回到了原來的目錄屬性
nginx nginx-1.16.0
---------注意: 原來寫入到/dev/sdb1分區(qū)的數(shù)據(jù)不會(huì)被刪除,當(dāng)重新掛載一個(gè)新的目錄,文件還會(huì)回來.
[root@qls /]# mkdir /data
[root@qls /]# mount /dev/sdb1 /data/
[root@qls /]# ls /data/
1111
5. 實(shí)現(xiàn)永久掛載,寫入配置文件/etc/fstab 以實(shí)現(xiàn)開機(jī)時(shí),自動(dòng)掛載
[root@qls ~]# cat /etc/fstab
#設(shè)備名稱 掛載的位置 文件系統(tǒng)類型 掛載的參數(shù) 是否備份 是否檢查
/dev/sdb1 /data xfs defaults 0 0
#請(qǐng)先卸載掛載的信息,然后再mount -a
[root@qls ~]# mount -a
五. 磁盤基本分區(qū)Gdisk
分區(qū)表為GPT,主分區(qū)128伯诬,分區(qū)后需要保存后才生效
1. 準(zhǔn)備環(huán)境
VMware中添加硬盤晚唇,添加一塊2T的硬盤。
#安裝軟件包
[root@qls ~]# yum install gdisk -y
2. 創(chuàng)建分區(qū)
[root@qls ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 2G 0 part
sdc 8:32 0 2T 0 disk
sr0 11:0 1 4.3G 0 rom
?
[root@qls ~]# gdisk /dev/sdc
GPT fdisk (gdisk) version 0.8.10
?
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
?
Creating new GPT entries.
?
Command (? for help): m
b back up GPT data to a file #將GPT數(shù)據(jù)備份到文件中
c change a partition's name #更改分區(qū)的名稱
d delete a partition #刪除分區(qū)
i show detailed information on a partition #顯示分區(qū)的詳細(xì)信息
l list known partition types #列出已知的分區(qū)類型
n add a new partition #添加一個(gè)新的分區(qū)
o create a new empty GUID partition table (GPT) #創(chuàng)建一個(gè)新的空GUID分區(qū)表(GPT)
p print the partition table #打印分區(qū)表
q quit without saving changes #沒有保存更改就退出
r recovery and transformation options (experts only) #恢復(fù)和轉(zhuǎn)換選項(xiàng)(僅限專家使用)
s sort partitions #年代分類分區(qū)
t change a partition's type code #不要更改分區(qū)的類型代碼
v verify disk #驗(yàn)證磁盤
w write table to disk and exit #將表寫入磁盤并退出
x extra functionality (experts only) #額外功能(僅限專家使用)
? print this menu #打印菜單
?
Command (? for help): n #創(chuàng)建新的分區(qū)
Partition number (1-128, default 1): #分區(qū)編號(hào)
First sector (34-4294967262, default = 2048) or {+-}size{KMGTP}: #扇區(qū)開始位置
Last sector (2048-4294967262, default = 4294967262) or {+-}size{KMGTP}: #設(shè)置分區(qū)大小
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): L #查看文件系統(tǒng)盗似,默認(rèn)是Linux
0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
3000 ONIE boot 3001 ONIE config 4100 PowerPC PReP boot
4200 Windows LDM data 4201 Windows LDM metadata 7501 IBM GPFS
7f00 ChromeOS kernel 7f01 ChromeOS root 7f02 ChromeOS reserved
8200 Linux swap 8300 Linux filesystem 8301 Linux reserved
8302 Linux /home 8400 Intel Rapid Start 8e00 Linux LVM
a500 FreeBSD disklabel a501 FreeBSD boot a502 FreeBSD swap
a503 FreeBSD UFS a504 FreeBSD ZFS a505 FreeBSD Vinum/RAID
a580 Midnight BSD data a581 Midnight BSD boot a582 Midnight BSD swap
a583 Midnight BSD UFS a584 Midnight BSD ZFS a585 Midnight BSD Vinum
a800 Apple UFS a901 NetBSD swap a902 NetBSD FFS
a903 NetBSD LFS a904 NetBSD concatenated a905 NetBSD encrypted
a906 NetBSD RAID ab00 Apple boot af00 Apple HFS/HFS+
af01 Apple RAID af02 Apple RAID offline af03 Apple label
af04 AppleTV recovery af05 Apple Core Storage be00 Solaris boot
bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap
bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home
bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2
bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5
c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT
eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit
Press the <Enter> key to see more codes: #翻頁
ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p
fd00 Linux RAID
Hex code or GUID (L to show codes, Enter = 8300): #選擇默認(rèn)
Changed type of partition to 'Linux filesystem'
Command (? for help): p #打印分區(qū)表信息
Disk /dev/sdc: 4294967296 sectors, 2.0 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2DD1054A-9F8C-427A-803B-4F4E6F7F38B4
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 4294967262
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4294967262 2.0 TiB 8300 Linux filesystem
Command (? for help): w #保存退出
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y #確定
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@qls ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 2G 0 part
sdc 8:32 0 2T 0 disk
└─sdc1 8:33 0 2T 0 part
sr0 11:0 1 4.3G 0 rom
3. 格式化->創(chuàng)建文件系統(tǒng)(裝修)
[root@qls ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=134217663 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=536870651, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=262143, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4. 掛載
[root@qls ~]# mkdir /gbt
[root@qls ~]# mount /dev/sdc1 /gbt
[root@qls ~]# cd /gbt
[root@qls /gbt]# ll
total 0
[root@qls /gbt]# dd if=/dev/zero of=test.txt bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 1.62123 s, 647 MB/s
[root@qls /gbt]# ll
total 1024000
-rw-r--r-- 1 root root 1048576000 Jul 9 23:48 test.txt
[root@qls /gbt]# cd
[root@qls ~]#
[root@qls ~]# umount /gbt
[root@qls ~]# ll /gbt
total 0
5. 實(shí)現(xiàn)永久掛載,寫入配置文件/etc/fstab 以實(shí)現(xiàn)開機(jī)時(shí),自動(dòng)掛載
[root@qls ~]# cat /etc/fstab
#設(shè)備名稱 掛載的位置 文件系統(tǒng)類型 掛載的參數(shù) 是否備份 是否檢查
/dev/sdc1 /gbt xfs defaults 0 0
#請(qǐng)先卸載掛載的信息,然后再mount -a
[root@qls ~]# mount -a
六. 磁盤掛載方式Mount
前面我們已經(jīng)提到過哩陕,如果需要使用磁盤的空間,需要準(zhǔn)備一個(gè)空的目錄作為掛載點(diǎn)赫舒,與該設(shè)備進(jìn)行關(guān)聯(lián)悍及。
mount主要是為文件系統(tǒng)指定一個(gè)訪問入口。
PS:類似我的商場(chǎng)沒有門接癌,那么就無法進(jìn)入購(gòu)買商品心赶,此時(shí)通過mount命令可以創(chuàng)建一個(gè)入口。給超市安裝一個(gè)門缺猛。
1. 通過mount進(jìn)行掛載缨叫,但重啟將會(huì)失效椭符;我們稱為臨時(shí)生效。
#選項(xiàng):
-t #指定文件系統(tǒng)掛載分區(qū)
-a #掛載/etc/fstab中的配置文件
-o #指定掛載參數(shù)
#示例:掛載/dev/sdb1至db1目錄
[root@qls ~]# mkdir /db1
[root@qls ~]# mount -t xfs /dev/sdb1 /db1
2. 掛載的磁盤耻姥,如果不想使用可以用umount命令進(jìn)行卸載销钝。
#選項(xiàng):
-l #強(qiáng)制卸載
#示例:
#1.卸載目錄方式
[root@qls ~]# umount /db1
#2.卸載設(shè)備方式
[root@qls ~]# umount /dev/sdb1
#3.umount不能卸載的情況
[root@qls db1]# umount /db1
umount: /db1: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1)
#PS: 如上情況解決辦法有兩種, 1.切換至其他目錄 2.使用'-l'選項(xiàng)強(qiáng)制卸載
3. 如果需要實(shí)現(xiàn)永久掛載則需要將掛載信息寫入/etc/fstab配置文件中實(shí)現(xiàn)
#建議掛載時(shí)使用UUID
#1.怎樣獲取磁盤分區(qū)的UUID,使用blkid命令獲取
[root@qls ~]# blkid|grep sdc1
/dev/sdc1: UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b"
#2.手動(dòng)測(cè)試是否能正常的掛載
[root@qls ~]# mount UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac
#3.將信息寫入到/etc/fstab文件中,保證下次啟動(dòng)系統(tǒng)自動(dòng)掛載
UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac xfs defaults 0 0
?
#4.卸載/datac掛載信息, 然后使用mount -a檢查/etc/fstab文件是否ok
[root@qls ~]# mount -a
PS: 如果不檢查寫錯(cuò)了直接重啟, 會(huì)導(dǎo)致系統(tǒng)無法啟動(dòng).
4. /etc/fstab配置文件編寫格式
要掛載的設(shè)備 | 掛載點(diǎn)(入口) | 文件系統(tǒng)類型 | 掛載參數(shù) | 是否備份 | 是否檢查 |
---|---|---|---|---|---|
/dev/sdb1 | /data | xfs | defaults | 0 | 0 |
第一列:device:這里用來指定你要掛載的文件系統(tǒng)的設(shè)備名稱或塊信息琐簇,除了指定設(shè)備文件外蒸健,也可以使用UUID、LABEL來指定分區(qū)鸽嫂。
第二列:dir:指定掛載點(diǎn)的路徑;
第三列:type:指定文件系統(tǒng)的類型,如ext3,ext4,xfs等;
第四列:options:指定掛載的參數(shù),默認(rèn)為defaults;
參數(shù) | 含義 |
---|---|
async/sync | 是否同步方式運(yùn)行,默認(rèn)async(異步)征讲。 |
user/nouser | 是否允許普通用戶使用mount命令掛載据某,默認(rèn)nouser。 |
exec/noexec | 是否允許可執(zhí)行文件執(zhí)行诗箍,默認(rèn)exec癣籽。 |
suid/nosuid | 是否允許存在suid屬性的文件,默認(rèn)suid滤祖。 |
auto/noauto | 執(zhí)行mount -a時(shí)筷狼,此文件系統(tǒng)是否被主動(dòng)掛載,默認(rèn)auto匠童。 |
rw/ro | 是否只讀或者讀寫模式進(jìn)行掛載埂材。默認(rèn)rw。 |
defaults | 具有rw汤求,suid俏险,exec,auto扬绪,nouser竖独,async等默認(rèn)參數(shù)的設(shè)定。 |
第五列:dump:表示該掛載后的文件系統(tǒng)能否被dump備份命令作用;
選項(xiàng) | 含義 |
---|---|
0 | 代表不做備份挤牛。 |
1 | 代表要每天進(jìn)行備份操作莹痢。 |
2 | 代表不定日期的進(jìn)行備份操作。 |
第六列:pass:這里用來指定如何使用fsck來檢查硬盤墓赴。
選項(xiàng) | 含義 |
---|---|
0 | 代表不檢查 |
1 | 檢驗(yàn)竞膳,掛載點(diǎn)為 / 的(即根分區(qū))時(shí)候,必須在這里填寫1诫硕,其他的都不能填寫1顶猜。 |
2 | 檢驗(yàn) (當(dāng)1級(jí)別檢驗(yàn)完成之后進(jìn)行2級(jí)別檢驗(yàn)) |
七. 虛擬內(nèi)存Swap介紹
Swap分區(qū)在系統(tǒng)的物理內(nèi)存不足時(shí),將硬盤空間中的一部分空間釋放出來痘括,以供當(dāng)前運(yùn)行的程序使用长窄。
PS:當(dāng)物理內(nèi)存不足時(shí)會(huì)隨機(jī)kill掉占用內(nèi)存的進(jìn)程滔吠,從而產(chǎn)生oom,臨時(shí)使用swap可以解決挠日。
1. 創(chuàng)建分區(qū)疮绷,并格式化為swap分區(qū)
[root@qls ~]# fdisk /dev/sdb #分1個(gè)G大小
[root@qls ~]# mkswap /dev/sdb1 #格式化為swap
2. 查看當(dāng)前swap分區(qū)大小,然后進(jìn)行擴(kuò)展和縮小
[root@qls ~]# free -m
total used free shared buff/cache available
Mem: 1980 1475 80 10 424 242
Swap: 2047 4 2043
#1.擴(kuò)展swap分區(qū)大小
[root@qls ~]# swapon /dev/sdb1
[root@qls ~]# free -m
total used free shared buff/cache available
Mem: 1980 1475 80 10 424 242
Swap: 3047 4 2043
?
#2.縮小swap分區(qū)大小
[root@qls ~]# swapoff /dev/sdb1
[root@qls ~]# free -m
total used free shared buff/cache available
Mem: 1980 1475 80 10 424 242
Swap: 2047 4 2043
[root@qls ~]# swapoff -a #代表關(guān)閉所有的swap
3. 檢查當(dāng)前swap分區(qū)有哪些設(shè)備
[root@qls ~]# swapon -s
文件名 類型 大小 已用 權(quán)限
/dev/dm-1 partition 2097148 4616 -2
/dev/sdb1 partition 1048572 0 -2
04. 如果磁盤沒有過多的分區(qū)可用嚣潜,也可以通過文件增加SWAP空間冬骚,本質(zhì)上還是磁盤
[root@qls ~]# dd if=/dev/zero of=/opt/swap_file bs=1M count=500
[root@qls ~]# chmod 0600 /opt/swap_file
[root@qls ~]# mkswap -f /opt/swap_file
[root@qls ~]# swapon /opt/swap_file
[root@qls ~]# free -m
PS: 如果希望swap開機(jī)自動(dòng)掛載,將swap信息追加至/etc/fstab即可懂算。
八. 磁盤陣列RAID概述
1. 什么是RAID磁盤陣列
RAID簡(jiǎn)稱磁盤陣列只冻,那么什么是陣列,例如:古代打仗時(shí)為什么要對(duì)士兵進(jìn)行排兵布陣计技,其目的在于提高士兵整體的作戰(zhàn)能力喜德,而不是某個(gè)士兵的戰(zhàn)斗力。
那么回到磁盤中垮媒,我們也可以將多塊磁盤組合進(jìn)行排列舍悯,提高磁盤的整體的讀寫能力和冗余能力,通常我們將其稱為磁盤陣列睡雇。
2. 為什么要使用RAID磁盤陣列
1.在RAID中萌衬,可以讓很多磁盤同時(shí)傳輸數(shù)據(jù),因?yàn)槎鄩K磁盤在邏輯上感覺是一個(gè)磁盤它抱,所以使用RAID可以達(dá)到單個(gè)磁盤的幾倍秕豫、幾十倍甚至上百倍的速率。
2.硬盤其實(shí)非常的脆弱观蓄,它經(jīng)常會(huì)壞掉馁蒂。所以有了RAID這個(gè)東西。它的目的是將好幾個(gè)硬盤合并在一起蜘腌,就算硬盤壞了一個(gè)沫屡,剩下還有好幾個(gè)硬盤是正常的,這樣服務(wù)器還能正常提供服務(wù)撮珠。保證磁盤高可用沮脖。
3.可以獲得更高的容量。
PS:RAID可以預(yù)防數(shù)據(jù)丟失芯急,但并不能百分百保證數(shù)據(jù)不丟勺届,所以在使用RAID的同時(shí)還是要備份重要的數(shù)據(jù)。
3. 實(shí)現(xiàn)磁盤陣列RAID的幾種模式
一娶耍、RAID0條帶卷免姿,最少兩塊硬盤(單塊也可以做)。讀寫性能好榕酒,但沒有容錯(cuò)機(jī)制胚膊。壞一塊硬盤數(shù)據(jù)全丟故俐。
?
二、RAID1鏡像源紊婉,只能兩塊硬盤药版,寫入性能慢,讀取性能一般喻犁、有容錯(cuò)機(jī)制槽片,但磁盤有50%浪費(fèi)。
?
三肢础、RAID5校驗(yàn)卷还栓,至少三塊硬盤,只允許壞一塊盤传轰,有效空間1/3剩盒,讀寫速度稍快。壞掉一塊硬盤后路召,讀會(huì)慢勃刨。
四波材、RAID10股淡,先做RAID1,在做RAID0廷区,至少四塊硬盤唯灵,讀寫很快,有容錯(cuò)機(jī)制隙轻,但磁盤有50%浪費(fèi)埠帕。
?
五、RAID總結(jié):
?
冗余從好到壞:Raid1==>Raid10==>Raid5==>Raid0
性能從好到壞:Raid0==>Raid10==>Raid5==>Raid1
成本從低到高:Raid0==>Raid5==>Raid1==>Raid10
企業(yè)中的服務(wù)器如何選擇Raid級(jí)別:根據(jù)數(shù)據(jù)的存儲(chǔ)和訪問的需求玖绿,去匹配對(duì)應(yīng)的Raid級(jí)別。這句話適用于互聯(lián)網(wǎng)的所有公司。
4. 磁盤陣列RAID創(chuàng)建的兩種方式
1避诽、軟件RAID
通過系統(tǒng)功能或ID軟件實(shí)現(xiàn)RAID盏浇,沒有獨(dú)立硬件和接口,需要占用一定的系統(tǒng)資源(CPU蚀瘸、硬盤接口速度)狡蝶,并且受操作系統(tǒng)穩(wěn)定性影響;
?
2贮勃、硬件RAID(視頻)
通過獨(dú)立的ID硬件卡實(shí)現(xiàn)贪惹,有些主板集成ID硬件,有些需要購(gòu)買獨(dú)立的ID硬件卡寂嘉,硬件RAID不需要占用其他硬件資源奏瞬,穩(wěn)定性和速度都比軟件RAID要強(qiáng)
?
PS:實(shí)際生產(chǎn)環(huán)境中RAID通常是使用硬RAID方式枫绅。如果使用的是公用云,那么廠商會(huì)將該問題解決丝格。
5. RAID硬盤失效處理--熱備和熱插拔
熱備:HotSpare
?
定義:當(dāng)冗余的RAID組中某個(gè)硬盤失效時(shí)撑瞧,在不干擾當(dāng)前RAID系統(tǒng)的正常使用的情況下,用RAID系統(tǒng)中另外一個(gè)正常的備用硬盤自動(dòng)頂替失效硬盤显蝌,及時(shí)保證RAID系統(tǒng)的冗余性
?
全局式:備用硬盤為系統(tǒng)中所有的冗余RAID組共享
?
專用式:備用硬盤為系統(tǒng)中某一組冗余RAID組專用
?
熱插拔:HotSwap
?
定義:在不影響系統(tǒng)正常運(yùn)轉(zhuǎn)的情況下预伺,用正常的硬盤物理替換RAID系統(tǒng)中失效硬盤
?
關(guān)鍵在于熱插拔時(shí)電子器件的保護(hù)機(jī)制
九. 磁盤陣列RAID實(shí)戰(zhàn)
1. 由于使用Linux操作系統(tǒng)模擬的軟RAID,所以需要在虛擬機(jī)上添加多塊硬盤曼尊。
直接在虛擬機(jī)中添加即可酬诀。
2. 同時(shí)我們還需要知道創(chuàng)建軟RAID使用什么命令。mdadm骆撇,如果沒有瞒御,直接yum進(jìn)行安裝即可
[root@qls ~]# yum install mdadm -y
3. mdadm磁盤陣列命令選項(xiàng)
PS:
1、我們做硬件RAID神郊,是在裝系統(tǒng)前還是之后肴裙?
前
2、raid5需要3塊硬盤,那么使用4塊硬盤涌乳,可以做raid5嗎蜻懦?
可以 n-1/n
?
Linux內(nèi)核中有一個(gè)md模塊在底層管理RAID設(shè)備,它會(huì)在應(yīng)用層給我們提供一個(gè)管理軟RAID的應(yīng)用工具mdadm
?
mdadm命令常見選項(xiàng)解釋:
?
-A #激活磁盤陣列
-C #建立一個(gè)新陣列
-D #打印陣列設(shè)備的信息
-G #改變陣列大小或形態(tài)
-S #停止陣列
-r #移除設(shè)備
-l #設(shè)定磁盤陣列的級(jí)別
-n #指定陣列磁盤的數(shù)量
-x #指定陣列中備用盤的數(shù)量
-f #將設(shè)備狀態(tài)定為故障
-a #添加設(shè)備到陣列
-v #顯示詳細(xì)信息軟RAID:通過操作系統(tǒng)實(shí)現(xiàn)</pre>
4. 實(shí)驗(yàn)環(huán)境:
Raid種類 | 磁盤 | 熱備盤 |
---|---|---|
Raid0 | sdb夕晓、sdc | |
Raid1 | sdd宛乃、sde | sdf |
Raid5 | sdg、sdh蒸辆、sdi | sdj |
Raid10 | 分區(qū):sdk1,sdk2,sdk3.sdk4 |
[root@qls ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8:48 0 20G 0 disk
sde 8:64 0 20G 0 disk
sdf 8:80 0 20G 0 disk
sdg 8:96 0 20G 0 disk
sdh 8:112 0 20G 0 disk
sdi 8:128 0 20G 0 disk
sdj 8:144 0 20G 0 disk
sdk 8:160 0 20G 0 disk </pre>
RAID0
創(chuàng)建RAID0實(shí)驗(yàn)環(huán)境:
Raid種類 | 磁盤 | 熱備盤 |
---|---|---|
Raid0 | sdb征炼、sdc |
1、創(chuàng)建Raid0
[root@qls ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
2躬贡、查看陣列信息
[root@qls ~]# mdadm -Ds #找到丟失的信息谆奥。
[root@qls ~]# mdadm -D /dev/md0
3、生成配置文件
[root@qls ~]# mdadm -Ds > /etc/mdadm.conf
4拂玻、對(duì)創(chuàng)建的RAID0進(jìn)行文件系統(tǒng)創(chuàng)建并掛載
[root@qls ~]# mkfs.xfs /dev/md0p1
[root@qls ~]# mkdir /raid0
[root@qls ~]# mount /dev/md0p1 /raid0/
[root@qls ~]# df -Th /raid0/
5酸些、開機(jī)自動(dòng)掛載
[root@qls ~]#
RAID1
創(chuàng)建RAID0實(shí)驗(yàn)環(huán)境:
Raid種類 | 磁盤 | 熱備盤 |
---|---|---|
Raid1 | sdd、sde | sdf |
1)創(chuàng)建RAID1纺讲,并添加1個(gè)熱備盤
2)模擬磁盤故障擂仍,看備用盤是否會(huì)自動(dòng)頂替故障盤
3)從raid1中移出故障盤
1、創(chuàng)建RAID1
[root@qls ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]
[root@qls ~]# mdadm -Dsv > /etc/mdadm.conf
2熬甚、查看RAID陣列信息
[root@qls ~]# mdadm -D /dev/md1
3逢渔、在RAID設(shè)備上創(chuàng)建文件系統(tǒng)
[root@qls ~]# mkfs.xfs /dev/md1
[root@qls ~]# mkdir /raid1
[root@qls ~]# mount /dev/md1 /raid1/
[root@qls ~]# cp /etc/passwd /raid1/
4、下面模擬RAID1中數(shù)據(jù)盤/dev/sde出現(xiàn)故障乡括,觀察/dev/sdf備用盤能否自動(dòng)頂替故障盤
[root@qls ~]# mdadm /dev/md1 -f /dev/sde
5肃廓、查看一下陣列狀態(tài)信息
[root@qls ~]# mdadm -D /dev/md1
Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdg
2 8 128 1 spare rebuilding /dev/sdi #熱備盤已經(jīng)在同步數(shù)據(jù)
1 8 112 - faulty /dev/sdh
6智厌、查看數(shù)據(jù)是否丟失
[root@qls ~]# ls /raid1/ #數(shù)據(jù)正常,沒有丟失
7盲赊、移除損壞的設(shè)備:
[root@qls ~]# mdadm -r /dev/md1 /dev/sde
8铣鹏、檢查是否還存在熱備盤
[root@qls ~]# mdadm -D /dev/md1
Number Major Minor RaidDevice State
0 8 96 0 active sync /dev/sdd
2 8 128 1 active sync /dev/sdf
9、重新在添加一塊新熱備盤
[root@qls ~]# mdadm -a /dev/md1 /dev/sde
**RAID5**
創(chuàng)建RAID5實(shí)驗(yàn)環(huán)境:
Raid種類 | 磁盤 | 熱備盤 |
---|---|---|
Raid5 | sdg哀蘑、sdh诚卸、sdi | sdj |
1)使用三塊盤創(chuàng)建RAID5, 使用-x添加1個(gè)熱備盤
2)模擬損壞一塊磁盤,然后備用盤自動(dòng)頂上,只能頂一次
3)在模擬損壞,檢測(cè)數(shù)據(jù)是否丟失,如果沒有再次模擬損壞.
1、創(chuàng)建RAID5陣列,添加一塊備用盤
[root@qls ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sd{g,h,i,j}
2绘迁、格式化RAID5,并掛載使用
[root@qls ~]# mkfs.xfs /dev/md5
[root@qls ~]# mkdir /raid5
[root@qls ~]# mount /dev/md5 /raid5/
3合溺、檢查RAID詳情
[root@qls ~]# mdadm -D /dev/md5
4、模擬一塊磁盤損壞
[root@qls ~]# mdadm -f /dev/md5 /dev/sdj
5 缀台、檢查備用盤是否頂上
[root@qls ~]# mdadm -D /dev/md5
6 棠赛、在模擬一塊磁盤損壞
[root@qls ~]# mdadm -f /dev/md5 /dev/sdh
......持續(xù)此步驟進(jìn)行驗(yàn)證
RAID10
創(chuàng)建RAID10實(shí)驗(yàn)環(huán)境:
Raid種類 | 磁盤 | 熱備盤 |
---|---|---|
Raid10 | 分區(qū):sdk1,sdk2,sdk3.sdk4 |
1、分4個(gè)主分區(qū)膛腐,每個(gè)分區(qū)1G大小
[root@qls ~]# fdisk /dev/sdk
2睛约、簡(jiǎn)單測(cè)試是否能成功創(chuàng)建RAID10
[root@qls ~]# mdadm -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]
3、查看RAID詳情
[root@qls ~]# mdadm -D /dev/md10
4哲身、格式化并掛載
[root@qls ~]# mkfs.xfs /dev/md10
[root@qls ~]# mkdir /raid10
[root@qls ~]# mount /dev/md10 /raid10
[root@qls ~]# cp /etc/services /raid10
5辩涝、模擬一塊磁盤損壞
[root@qls ~]# mdadm -f /dev/md10 /dev/sdk2</pre>
總結(jié)
PS:重啟后RAID將全部失效。如果希望永久生效律罢,請(qǐng)將RAID信息寫入/etc/mdadm.conf配置文件膀值,同時(shí)還需要將掛載信息寫入/etc/fstab文件中棍丐。
如果想實(shí)現(xiàn)的同學(xué)們可自行百度误辑。當(dāng)然你肯定有疑惑為什么不講,因?yàn)镽AID生產(chǎn)根本不用歌逢,所以我們只是看看效果巾钉,如果你不想練習(xí)也anyway?但是RAID的概念面試的時(shí)候是必問秘案,你的明白我意思砰苍?
十. 邏輯卷LVM概述
1. 什么是LVM?
LVM是Logical Volume Manager (邏輯卷管理)的簡(jiǎn)寫阱高,它是Linux環(huán)境下對(duì)磁盤分區(qū)進(jìn)行管理的一種機(jī)制赚导。又譯為邏輯卷宗管理器、邏輯扇區(qū)管理器赤惊、邏輯磁盤管理器吼旧,是Linux核心所提供的邏輯卷管理(Logical volume management)功能。它在硬盤的分區(qū)之上未舟,又創(chuàng)建一個(gè)邏輯層圈暗,以方便系統(tǒng)管理硬盤分區(qū)系統(tǒng)掂为。
最先由IBM開發(fā),在AIX系統(tǒng)上實(shí)現(xiàn)员串,OS/2 操作系統(tǒng)與 HP-UX也支持這個(gè)功能勇哗。在1998年,Heinz Mauelshagen 根據(jù)在 HP-UX 上的邏輯卷管理器寸齐,寫作出第一個(gè) Linux 版本的邏輯卷管理器欲诺。
2. LVM解決了什么問題
當(dāng)我們剛開始安裝Linux操作系統(tǒng)是遇到的一個(gè)常見的難以決定的問題就是如何正確地評(píng)估各分區(qū)大小,以分配合適的硬盤空間渺鹦。
普通的磁盤分區(qū)好之后就無法改變其大小瞧栗,而遇到出現(xiàn)某個(gè)分區(qū)空間耗盡時(shí),解決的方法可以是符號(hào)鏈接海铆,或者調(diào)整分區(qū)大小的工具迹恐,但這只是暫時(shí)解決方法,沒有從根本上解決問題卧斟。
隨著Linux的邏輯卷管理功能的出現(xiàn)殴边,這些問題都迎刃而解,用戶可以在無需停機(jī)的請(qǐng)款下可以方便的調(diào)整各個(gè)分區(qū)大小珍语。
3. LVM架構(gòu)圖
04. LVM基本概念
物理卷(PV):(physical volume),把常規(guī)的磁盤設(shè)備通過pvcreate命令對(duì)其進(jìn)行初始化锤岸,形成了物理卷。其實(shí)就是硬盤或分區(qū)板乙。(面粉)
卷組(VG):(volume group),把多個(gè)物理卷組成一個(gè)邏輯的整體是偷,這樣卷組的大小就是多個(gè)硬盤之和∧汲眩或者理解就是由一個(gè)或多個(gè)PV組成的整體蛋铆。(面團(tuán))
邏輯卷(LV):(logical volume),從卷組中劃分需要的空間大小出來放接。用戶僅需對(duì)其格式化然后即可掛載使用刺啦。從VG中切割出的空間用于創(chuàng)建文件系統(tǒng)。(切成饅頭)
基本單元(PE):(physical extend),分配的邏輯大小的最小單元纠脾,默認(rèn)為4MB的基本塊玛瘸。(假設(shè)分配100MB邏輯空間,則需要?jiǎng)?chuàng)建25個(gè)PE)
十一. 邏輯卷LVM實(shí)踐
01.邏輯卷實(shí)踐
1)創(chuàng)建物理卷苟蹈,將普通磁盤轉(zhuǎn)換為物理卷糊渊。
2)創(chuàng)建卷組,將物理卷加入到卷組中慧脱。
3)在卷組中劃分邏輯卷渺绒,然后掛載使用。
1. 準(zhǔn)備物理磁盤,如果是虛擬機(jī)需要關(guān)閉添加磁盤芒篷,以便更好的實(shí)驗(yàn)
[root@qls ~]# lsblk
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
2. 將磁盤轉(zhuǎn)換為物理卷
#下載安裝軟件包
[root@qls ~]# yum install -y lvm2
[root@qls ~]# pvcreate /dev/sdb
3. 將/dev/sdb物理卷加入卷組(資源池)-->名字lvm_test
[root@qls ~]# vgcreate lvm_test /dev/sdb
#檢查卷組
[root@qls ~]# vgs
4. 創(chuàng)建邏輯卷搜变,分配名稱,以及大小针炉,指定卷組
選項(xiàng):
-L #邏輯卷大小
-n #邏輯卷名字
[root@qls ~]# lvcreate -L 100M -n lv1 lvm_test ##將lvm_test分配給lv1
5. 格式化邏輯卷
[root@qls ~]# mkfs.xfs /dev/lvm_test/lv1
6. 掛載使用
[root@qls ~]# mkdir /lv1
[root@qls ~]# mount /dev/lvm_test/lv1 /lv1/
[root@qls ~]# cp /etc/services /lv1/
2. 卷組管理挠他,如何擴(kuò)展卷組大小,如何刪除卷組
1. 如何擴(kuò)大VG卷組
1.新硬盤加入pv
[root@qls ~]# pvcreate /dev/sdc
2.先檢查當(dāng)前的vg卷組大小
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- 1020.00m 920.00m
3.使用vgextend擴(kuò)展卷組
[root@qls ~]# vgextend lvm_test /dev/sdc
Volume group "lvm_test" successfully extended
4.再次檢查篡帕,發(fā)現(xiàn)卷組已經(jīng)擴(kuò)大
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 2 1 0 wz--n- 1.99g 1.89g
2. 假設(shè)想移除/dev/sdb磁盤殖侵,建議先將sdb磁盤數(shù)據(jù)先遷移到sdc磁盤,然后在移除镰烧。(同一卷組的磁盤才可以進(jìn)行在線遷移)拢军,(注意卷組的名稱---)
1.檢查當(dāng)前邏輯卷VG中PV使用情況
[root@qls ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g?
2.pvmove在線數(shù)據(jù)遷移,將sdb的數(shù)據(jù)遷移至sdc
[root@qls ~]# pvmove /dev/sdb
/dev/sdb: Moved: 100.00%
3.檢查是否將sdb數(shù)據(jù)遷移至sdc
[root@qls ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g
4.從卷組中移除sdb磁盤
[root@qls ~]# vgreduce lvm_test /dev/sdb
Removed "/dev/sdb" from volume group "lvm_test"
3. 邏輯卷管理怔鳖,動(dòng)態(tài)的調(diào)整邏輯卷大小
1. 邏輯卷的擴(kuò)展茉唉,是取決于vg卷中是否還有剩余的容量,注意擴(kuò)展邏輯卷不能超過卷組VG的總大小
[root@qls ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 1020.00m 920.00m
?
#1.擴(kuò)展lv邏輯卷结执,增加800M分配給邏輯卷 {注意: 800M +800M 不一樣}
[root@qls ~]# lvextend -L +800M /dev/lvm_test/lv1
?
#或者可以選擇分配磁盤池中多少百分比給邏輯卷
[root@qls ~]# lvextend -l +50%FREE /dev/lvm_test/lv1
?
#2.擴(kuò)展邏輯卷后需要更新fs文件系統(tǒng)
[root@qls ~]# xfs_growfs /dev/lvm_testvg/lv1 #xfs文件格式擴(kuò)容
02. 縮小邏輯卷度陆,不要去操作,因?yàn)榫€上在使用的磁盤真的敢操作嗎献幔?
03. 刪除邏輯卷懂傀,如果不想使用邏輯卷可以選擇刪除。
[root@qls ~]# umount /dev/lvm_test/lv1
?
[root@qls ~]# lvremove /dev/lvm_test/lv1
Do you really want to remove active logical volume lvm_test/lv1? [y/n]: y
Logical volume "lv1" successfully removed</pre>
> 注意:LVM如果有一個(gè)磁盤損壞,整個(gè)lvm都?jí)牧耍?lvm只有動(dòng)態(tài)擴(kuò)展作用蜡感,底層用RAID + 上層LVM = 既有冗余又有動(dòng)態(tài)擴(kuò)展
十二. 磁盤常見故障
1. 磁盤block滿故障
#環(huán)境準(zhǔn)備蹬蚁,先創(chuàng)建一個(gè)2G大小的分區(qū)
?
[root@qls ~]# lsblk /dev/sdb1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb1 8:17 0 2G 0 part /data
?
[root@qls ~]# df -h |grep sdb1
/dev/sdb1 2.0G 33M 2.0G 2% /data
?
#準(zhǔn)備一個(gè)大文件,發(fā)現(xiàn)分區(qū)已經(jīng)報(bào)錯(cuò)“No space left on device”
?
[root@qls ~]# dd if=/dev/zero of=/data/test.txt bs=100M count=180
dd: error writing ‘/data/test.txt’: No space left on device
21+0 records in
20+0 records out
2101149696 bytes (2.1 GB) copied, 22.0136 s, 95.4 MB/s
?
#再次在該分區(qū)下面添加新文件郑兴,已經(jīng)提示報(bào)錯(cuò)犀斋。
?
[root@qls ~]# cp Desktop.zip /data/
cp: error writing ‘/data/Desktop.zip’: No space left on device
cp: failed to extend ‘/data/Desktop.zip’: No space left on device
?
#解決思路:先找到大小太大的目錄。
?
[root@qls ~]# du -sh /* |grep G
?
#再依次向下查找杈笔,直到找到大文件為止闪水。
?
[root@qls ~]# du -sh /data/* |grep G
2.0G /data/test.txt
?
#找到文件之后糕非,首先要確認(rèn)好之后再刪除蒙具,不要直接的去刪除
?
[root@qls ~]# rm -f /data/test.txt
[root@qls ~]# df -h |grep sdb1
/dev/sdb1 2.0G 35M 2.0G 2% /data</pre>
注意:如果該文件存在硬鏈接,一定要把硬鏈接文件刪除朽肥。
2. 磁盤inode滿故障
#環(huán)境準(zhǔn)備禁筏,創(chuàng)建一個(gè)30M的分區(qū)。
?
[root@qls ~]# df -h |grep sdb1
dev/sdb1 27M 1.6M 26M 6% /test
[root@qls ~]# lsblk |grep sdb1
└─sdb1 8:17 0 30M 0 part /test
?
#批量創(chuàng)建大量的小文件
?
[root@qls ~]# touch /test/data/file/{1..15360}.txt
?
#再去到該分區(qū)中創(chuàng)建新的文件就會(huì)報(bào)錯(cuò)衡招。
?
[root@qls ~]# touch /test/test.txt
touch: cannot touch ‘/test/test.txt’: No space left on device
?
#解決思路:查看磁盤分區(qū)使用情況篱昔,發(fā)現(xiàn)磁盤空間是正常的,再次查看inode,發(fā)現(xiàn)inode滿了州刽。
?
[root@qls ~]# df -h |grep sdb1
/dev/sdb1 27M 9.7M 17M 37% /test
[root@qls ~]# df -i |grep sdb1
/dev/sdb1 15424 15424 0 100% /test
?
#怎樣找出大量的小文件呢空执?首先要找出大目錄(小文件過多,會(huì)導(dǎo)致目錄變大穗椅。)
?
[root@qls ~]# find /test -type d -size +300k |xargs ls -lhd
?
#找到大量小文件之后辨绊,首先要確認(rèn)好之后再刪除,不要直接的去刪除
?
[root@qls ~]# find /test/data/file/ -type f -delete
?
#檢查結(jié)果
?
[root@qls ~]# df -i |grep sdb1
/dev/sdb1 15424 5 15419 1% /test</pre>