Linux學(xué)習(xí)之分區(qū)與文件系統(tǒng)
一:Linux之分區(qū)管理
1.1 :Linux分區(qū)的概念,和windows分區(qū)無特別的區(qū)別菇夸,就是為了便于管理琼富,將一個大的盤劃分為多個物理獨(dú)立的片區(qū);Linux操作系統(tǒng)只能劃分為4個主分區(qū)庄新,更多的分區(qū)鞠眉,只能通過擴(kuò)展分區(qū)來實(shí)現(xiàn)薯鼠;何為擴(kuò)展分區(qū),可以通過查看下面的信如果需要使用息械蹋,大概了解下出皇;下面的extended就表示擴(kuò)展分區(qū)了
1.2 :創(chuàng)建分區(qū)
那如何創(chuàng)建分區(qū)呢,下面將介紹分區(qū)的創(chuàng)建方法
1)創(chuàng)建分區(qū)哗戈,首先得找到物理盤郊艘,通過如下命令可以查到物理磁盤信息(這個其實(shí)也不是真正的物理硬盤):
[root@dx-yw-prd01-vm dev]# fdisk –l
Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical): 512bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes /512 bytes
Disk identifier: 0x000cbe6c
2)創(chuàng)建擴(kuò)展分區(qū)
[root@dx-yw-prd01-vm dev]# fdisk /dev/sda
輸入m表示打印當(dāng)前可以使用的命令
Command (m for help): m
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibilityflag
d delete a partition
l list known partition types
m print this menu
n add a new partition ***********
2)化擴(kuò)展分區(qū)(續(xù))
Command (m for help): n #n表示新建分區(qū),通過幫助m可以查看
Command action
e extended
p primary partition (1-4)
e # e表示新建的分區(qū)為擴(kuò)展分區(qū)唯咬,p表示創(chuàng)建主分區(qū)
Partition number (1-4): 3 #分區(qū)的編號(編號從1開始纱注,0為主磁盤)
First cylinder (9116-16970, default9116):
Using default value 9116
Last cylinder, +cylinders or+size{K,M,G} (9116-16970, default 16970):
Using default value 16970
Command (m for help): w (保存退出)
The partition table has been altered!
Callingioctl() to re-read partition table.3)在擴(kuò)展分區(qū)上創(chuàng)建邏輯分區(qū)
[root@dx-yw-prd01-vm dev]# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 139.6 GB, 139586437120 bytes
255 heads, 63 sectors/track, 16970cylinders
Units = cylinders of 16065 * 512 =8225280 bytes
Sector size (logical/physical): 512bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes /512 bytes
Disk identifier: 0x000cbe6c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinderboundary.
/dev/sda2 64 9116 72704000 8e Linux LVM
/dev/sda3 9116 16970 63094501 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (9116-16970, default9116):
Using default value 9116
Last cylinder, +cylinders or+size{K,M,G} (9116-16970, default 16970):
Using default value 16970
Command (m for help): w
The partition table has been altered!
1.3 :刪除分區(qū)
[root@dx-yw-prd01-vm dev]# fdisk /dev/sda
Command (m for help): d
Partition number (1-4): 3
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition tablefailed with error 16: Device or resource busy.
The kernel still uses the old table.The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
1.4 :擴(kuò)分區(qū)
Linux的分區(qū)創(chuàng)建好了以后,是無法進(jìn)行擴(kuò)分區(qū)的胆胰,這也是后面引入文件系統(tǒng)的原因狞贱;但是Linux也可以通過其他變通的方式來實(shí)現(xiàn)擴(kuò)分區(qū)的功能,方法和windows一樣煮剧,先刪除斥滤,再重建,方法和1.1勉盅、1.2講述的方法相同佑颇,此處不再重復(fù),當(dāng)然刪除分區(qū)前要記得備份分區(qū)下面的數(shù)據(jù)草娜。
1.5:分區(qū)和掛載點(diǎn)(目錄)的關(guān)系
Linux的分區(qū)創(chuàng)建好了以后挑胸,是無法直接進(jìn)行使用的,原因有2個:
1)分區(qū)需要格式化(如果給文件系統(tǒng)使用宰闰,是不需要格式化的)
2)需要掛載點(diǎn)
那下面講下如何格式化分區(qū):
Linux能夠識別的分區(qū)格式為:ntfs茬贵,ext2,ext3移袍、ext4解藻,目前常用的分區(qū)格式為ext3
格式化命令如下:
[root@xtglgtest01-vm/]# mkfs -t ext3 /dev/sdb1
mke2fs1.41.12 (17-May-2010)
Filesystemlabel=
OStype: Linux ******等信息
[root@xtglgtest01-vm/]# mkdir bially
[root@xtglgtest01-vm/]# mount /dev/sdb1 /bially
[root@xtglgtest01-vm/]# df -h|grep bially
/dev/sdb1 7.9G 147M 7.4G 2% /bially #已經(jīng)掛載成功
二:Linux之邏輯卷管理
1.1 :邏輯卷概念
邏輯卷:將一個或多個硬盤或分區(qū)在邏輯上集中,相當(dāng)于一個大硬盤來使用葡盗,當(dāng)硬盤的空間不夠使用的時候螟左,可以繼續(xù)將其它的硬盤或者分區(qū)加入其中,這樣可以實(shí)現(xiàn)磁盤空間的動態(tài)管理觅够,這里的動態(tài)管理很重要胶背,分區(qū)是不具備動態(tài)擴(kuò)展的特性的,而邏輯卷可以喘先,如果一個文件系統(tǒng)滿了钳吟,對于分區(qū)來說是沒有辦法動態(tài)擴(kuò)展的,而邏輯卷是可以在線動態(tài)擴(kuò)展窘拯,對業(yè)務(wù)無影響红且。邏輯卷主要有如下概念:
PV:是物理的磁盤或者分區(qū)
VG:由多個PV組成的磁盤池
LV:在VG中劃出多個邏輯的可以掛載文件系統(tǒng)的虛擬磁盤坝茎,也就是邏輯分區(qū)
1.2 :創(chuàng)建PV
VG是由多個PV組成的,PV也就是通過物理的磁盤或者分區(qū)轉(zhuǎn)化而來的邏輯磁盤,磁盤或者分區(qū)第一節(jié)已經(jīng)講解了暇番,如何創(chuàng)建參見第一節(jié)景东。創(chuàng)建vg的方式如下:
創(chuàng)建PV的方法:
[root@xtglgtest01-vm ~]# pvcreate /dev/sdb1
[root@xtglgtest01-vm ~]# pvdisplay|grep sdb1 #檢查pv是否已經(jīng)創(chuàng)建完成
"/dev/sdb1" is a new physical volume of "8.00 GiB"
PV Name /dev/sdb1
1.3 :創(chuàng)建VG
[root@xtglgtest01-vm ~]# vgcreate Bially_vg /dev/sdb1 #Bially-vg為創(chuàng)建的VG名稱,/dev/sdb1 為創(chuàng)建的PV
Volume group "Bially_vg" successfully created
那如過發(fā)現(xiàn)創(chuàng)建錯誤了奔誓,需要刪除時斤吐,則進(jìn)行如下操作:
1.4 :刪除vg和pv
[root@xtglgtest01-vm ~]# vgremove Bially_vg
Volume group "Bially_vg" successfully removed
[root@xtglgtest01-vm ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped
1.5 :創(chuàng)建LV
那講了如何創(chuàng)建VG膨更,創(chuàng)建PV七咧,那如何給用戶來使用呢,畢竟用戶使用的時候是通過文件系統(tǒng)來(目錄)來進(jìn)行使用的助被,下面講如何將創(chuàng)建好的邏輯盤池(VG)來和文件系統(tǒng)進(jìn)行關(guān)聯(lián)蜕煌。
LV:邏輯盤派阱,這個就是和文件系統(tǒng)直接關(guān)聯(lián)的,創(chuàng)建好LV(系統(tǒng)會自動格式化)以后斜纪,即可以掛載文件系統(tǒng)贫母,操作如下:
[root@xtglgtest01-vm ~]# lvcreate -L 4G -n lv_bially Bially_vg
Logical volume "lv_bially" created
1.6 :打印LV的信息
檢查lv的相關(guān)信息
[root@xtglgtest01-vm ~]# lvdisplay
--- Logical volume ---
LV Path /dev/Bially_vg/lv_bially
LV Name lv_bially
VG Name Bially_vg
LV UUID 4WoOgc-tZUz-XUkI-Z2Ij-aetK-FbsG-Gah2rm
LV Write Access read/write
LV Creation host, time xtglgtest01-vm, 2015-11-25 16:50:57 +0800
LV Status available
open 0
LV Size 4.00 GiB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4
通過上面的信息,可以查看lv已經(jīng)創(chuàng)建成功盒刚,大小為4G
1.7 :掛載文件系統(tǒng)
1)新建掛載點(diǎn)目錄:
[root@xtglgtest01-vm /]# mkdir -p bially
2)將新建的lv_bially邏輯卷格式化
[root@xtglgtest01-vm /]# mkfs -t ext3 /dev/Bially_vg/lv_bially #此處為lv的目#錄腺劣,可以通過lvdisplay中獲得
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for thesuper user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragmentsper group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912,819200, 884736
3)掛載文件系統(tǒng)
[root@xtglgtest01-vm /]# mount /dev/Bially_vg/lv_bially /bially
[root@xtglgtest01-vm /]# df -h |grep bially
/dev/mapper/Bially_vg-lv_bially 4.0G 137M 3.7G 4% /bially
[root@xtglgtest01-vm /]# vgdisplay
--- Volume group ---
VG Name Bially_vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
VG Size 8.00 GiB
PE Size 4.00 MiB
Total PE 2047
Alloc PE / Size 1024 / 4.00 GiB
Free PE / Size 1023 / 4.00 GiB
VG UUID G8CSMe-SPFn-STPW-t9kS-J32g-SuHm-BgiKEv
可以看到我們剛新建的VG大小本位8G,但是只創(chuàng)建了一個4G的lv因块,當(dāng)然可以在線擴(kuò)lv的
1.8 :在線擴(kuò)文件系統(tǒng)(LV)
操作如下:
[root@xtglgtest01-vm /]# lvextend -L +2G /dev/Bially_vg/lv_bially
Extending logical volume lv_bially to 6.00 GiB
Logical volume lv_bially successfully resized
[root@xtglgtest01-vm /]# resize2fs/dev/Bially_vg/lv_bially
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/Bially_vg/lv_bially is mounted on /bially; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/Bially_vg/lv_bially to 1572864 (4k) blocks.
The filesystem on /dev/Bially_vg/lv_bially is now 1572864 blocks long.
[root@xtglgtest01-vm /]# df –h|grep bially
/dev/mapper/Bially_vg-lv_bially 6.0G 137M 5.5G 3% /bially
三:案例
3.1 目錄空間錯誤導(dǎo)致空間不釋放
一早上接到告警橘原,提示/app空間使用率達(dá)到100%,需要緊急處理涡上,在收到告警后趾断,綜合監(jiān)控的同事第一時間知會到該系統(tǒng)的負(fù)責(zé)人,該負(fù)責(zé)人使用如下方式清理掉空間:
[root@huanhuaprd01 jboss-as]# rm nohup.out
-rw------- 1 root root 8395113840 11-2516:38 nohup.out
該文件大小為8G吩愧,本想刪除以后空間立馬恢復(fù)芋酌,但是實(shí)際空間無任何變化
[root@huanhuaprd01 jboss-as]# df -h|grep /app
29G 29G 0 100% /app
后來該負(fù)責(zé)人咨詢原因,系統(tǒng)組同事告知刪除的方法有問題雁佳,需要重啟業(yè)務(wù)脐帝,才能釋放空間;但是如果當(dāng)我們不知道究竟哪個程序占用該文件的時候甘穿,該找到該進(jìn)程呢腮恩,總能重啟主機(jī)吧梢杭,Linux提供了查看文件被哪個進(jìn)程占用的命令温兼,方法如下:
[root@huanhuaprd01 ~]# lsof|grep nohup.out
run.sh 10638 root 1w REG 253,4 22190918 2091012 /app/cxbw/jboss-eap-4.3/jboss-as/nohup.out
run.sh 10638 root 2w REG 253,4 22190918 2091012 /app/cxbw/jboss-eap-4.3/jboss-as/nohup.out
java 10667 root 1w REG 253,4 22190918 2091012 /app/cxbw/jboss-eap-4.3/jboss-as/nohup.out
java 10667 root 2w REG 253,4 22190918 2091012 /app/cxbw/jboss-eap-4.3/jboss-as/nohup.out
tail 11076 root 3r REG 253,4 837978591 2843152 /app/cxbw/jboss-soa-p.4.3.0/jboss-as/nohup.out
run.sh 13744 root 1w REG 253,4 837978591 2843152 /app/cxbw/jboss-soa-p.4.3.0/jboss-as/nohup.out
run.sh 13744 root 2w REG 253,4 837978591 2843152 /app/cxbw/jboss-soa-p.4.3.0/jboss-as/nohup.out
java 13774 root 1w REG 253,4 837978591 2843152 /app/cxbw/jboss-soa-p.4.3.0/jboss-as/nohup.out
java 13774 root 2w REG 253,4 837978591 2843152 /app/cxbw/jboss-soa-p.4.3.0/jboss-as/nohup.out
進(jìn)程找到了,只需要通過kill 命令來殺掉進(jìn)程就可以了武契。
3.2原因分析
上面只講了通過rm命令刪除被占用的文件時募判,系統(tǒng)不釋放空間的處理方法荡含,那如何規(guī)避呢,其實(shí)很簡單届垫,只需要通過如下命令來清理空間就沒有問題
[root@huanhuaprd01 jboss-as]# >nohup.out
當(dāng)然方法有多種释液,比如也可以
[root@huanhuaprd01 jboss-as]#cat /dev/null > nohup.out
清理只是一種手段,那如何讓該無用的日志都不產(chǎn)生呢装处,且看啟動腳本:
[root@huanhuaprd01 jboss-as]# cat start-soa.sh
!/bin/sh
export JBOSS_HOME=/app/cxbw/jboss-soa-p.4.3.0/jboss-as
nohup $JBOSS_HOME/bin/run.sh -Dfile.encoding=GB2312 -c default -b 0.0.0.0 &
nohup $JBOSS_HOME/bin/run.sh -Dfile.encoding=GB2312 -c default -b 0.0.0.0 >/dev/null 2>&1 &
把啟動腳本替換為藍(lán)色的部分误债,就徹底不會產(chǎn)生該日志了,對比妄迁,只增加了如下的信息> /dev/null 2>&1 & 寝蹈,讓腳本日志不輸出,錯誤重定向到標(biāo)準(zhǔn)輸出中登淘,而標(biāo)準(zhǔn)輸出又重定向到/dev/null 這個黑洞了箫老;當(dāng)然啟動腳本有諸多不完善的地方,如腳本唯一性判斷等黔州,這里不多說耍鬓。