1、使用find命令查找/etc目錄下名字是inittb的文件,執(zhí)行find? /etc/? -name? ?inittab,-name為參數(shù),表示名字,執(zhí)行后如圖所示。
成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、臨淄網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為臨淄等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
2、在當(dāng)前目錄下,找到文件名是inittab的文件,首先進(jìn)入目錄,執(zhí)行find .? -name inittab,其中"." 表示當(dāng)前目錄。
3、查找名字是tmp的文件夾,執(zhí)行命令find? ?/etc -typd d? -name tmp ,其中/etc表示在etc目錄下搜索,-type d表示執(zhí)行指定為文件夾。
4、找到/tmp目錄下的.log文件,并將其刪除掉,執(zhí)行命令find /tmp? -type f? -name *.log? -exec rm -rf {} \,其中-type f表示執(zhí)行文件類型,-exec表示執(zhí)行命令。
5、查找/var/log目錄下30天以前修改的文件,執(zhí)行命令find /var/log -type f -mtime? +30, 如果是-30則表示30天以內(nèi),執(zhí)行結(jié)果如圖。
給你一個(gè)鏈接地址吧,你找的應(yīng)該是在這個(gè)頁面里的這句話:
# cp -avx /home/* /mnt/newhome
即:
解決方案的開始
在開始轉(zhuǎn)換之前,首先在硬盤驅(qū)動(dòng)器的結(jié)尾處對未使用的空間進(jìn)行分區(qū)。我使用 cfdisk 創(chuàng)建了一個(gè) 35 GB 的分區(qū) (/dev/hda5),然后將分區(qū)的分區(qū)類型設(shè)置成 "8E"(正規(guī) LVM 分區(qū)類型)。在這一更改后,我進(jìn)行了重新引導(dǎo)以強(qiáng)制重新讀取分區(qū)表。在重新引導(dǎo)后,我的分區(qū)表如下:
# sfdisk -l
Disk /dev/hda: 89355 cylinders, 16 heads, 63 sectors/track
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/hda1 * 0+ 247 248- 124960+ 83 Linux
/dev/hda2 248 743 496 249984 82 Linux swap
/dev/hda3 744 20119 19376 9765504 83 Linux
/dev/hda4 20120 89354 69235 34894440 5 Extended
/dev/hda5 20120+ 89354 69235- 34894408+ 8e Linux LVM
既然有了空的 35 GB 的分區(qū),我就準(zhǔn)備為 LVM 初始化它。以下是過程 -- 首先,我將 35 GB 初始化成 物理卷;然后,使用這個(gè)物理卷創(chuàng)建一個(gè) 卷組 ,最后,在卷組上分配一些范圍,創(chuàng)建將包含新文件系統(tǒng)并存放當(dāng)前 /home 中所有文件的 邏輯卷。
為開始這個(gè)過程,我使用 pvcreate 命令將 /dev/hda5 初始化成物理卷:
# pvcreate /dev/hda5
pvcreate -- physical volume "/dev/hda5" successfully created
pvcreate 在 /dev/hda5 上設(shè)置一個(gè)特殊的“記帳”區(qū)域,稱作 VGDA(“卷組描述符區(qū)域”)。LVM 使用該區(qū)域來記錄物理范圍是如何分配的,以及其它一些操作。
下一步是創(chuàng)建卷組并向該卷組添加 /dev/hda5。卷組將充當(dāng)范圍池(許多存儲(chǔ)塊)。創(chuàng)建卷組之后,創(chuàng)建所需數(shù)量的邏輯卷。我決定將卷組稱為 "main":
# vgcreate main /dev/hda5
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "main"
vgcreate -- volume group "main" successfully created and activated
vgcreate 命令執(zhí)行幾個(gè)操作。除了創(chuàng)建 "main" 卷組以外,它還設(shè)置 /dev/hda5,使它使用 4 MB 的范圍,4 GB 是缺省范圍大小。這意味著在卷組上創(chuàng)建的所有邏輯卷都可以以 4 MB 為增量單位來進(jìn)行擴(kuò)充或縮減。
由于內(nèi)核限制的原因,范圍大小決定了邏輯卷的最大大小。您可以從上面的輸出中看出,4 MB 的范圍大小決定了邏輯卷大小限制為 256 GB,如果您向卷組添加幾個(gè)高容量驅(qū)動(dòng)器,這是很容易達(dá)到的邏輯卷組大小。如果每一個(gè)卷最后都大于 256 GB,我建議您在運(yùn)行 vgcreate 時(shí)指定更大一些的范圍大小。范圍的大小可以是從 8 KB 到 512 MB 之間的任何值,并且必須總是 2 的倍數(shù)。通過將范圍大小增加到 4 MB 以上,最大的物理卷大小將相應(yīng)地增加到最大為 1 Petabyte(盡管當(dāng)今現(xiàn)實(shí)世界中,x86 系統(tǒng)上的大小限制是 2 Terabytes)。例如,如果希望使用 32 MB 的范圍創(chuàng)建卷組,我會(huì)輸入:
# vgcreate -s 32M main /dev/hda5
32 MB 是個(gè)合適的范圍大小,因?yàn)?32 MB 的顆粒度仍然便于管理,并將引導(dǎo)的最大邏輯卷大小增加到 2 TB。創(chuàng)建卷組之后,可以通過輸入 "vgdisplay" 來查看其信息:
# vgdisplay
--- Volume group ---
VG Name main
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 1
Act PV 1
VG Size 33.28 GB
PE Size 4 MB
Total PE 8519
Alloc PE / Size 0 / 0
Free PE / Size 8519 / 33.28 GB
VG UUID 2qC2H2-iA8s-qW6F-cwXx-JVIh-I6VC-VVCGmn
既然有了自己的卷組,我準(zhǔn)備創(chuàng)建邏輯卷。我決定在最初時(shí)將它的大小設(shè)置為 8 GB,并稱它作 "lv_home":
# lvcreate -L8G -nlv_home main
lvcreate -- doing automatic backup of "main"
lvcreate -- logical volume "/dev/main/lv_home" successfully created
然后,在邏輯卷上創(chuàng)建文件系統(tǒng):
# mkreiserfs /dev/main/lv_home
----------- MKREISERFSv2 -----------
Block size 4096 bytes
Block count 2097152
Used blocks 8275
Journal - 8192 blocks (18-8209), journal header is in block 8210
Bitmaps: 17, 32768, 65536, 98304, 131072, 163840,
196608, 229376, 262144, 294912, 327680, 360448,
393216, 425984, 458752, 491520, 524288, 557056,
589824, 622592, 655360, 688128, 720896, 753664,
786432, 819200, 851968, 884736, 917504, 950272,
983040, 1015808, 1048576, 1081344, 1114112,
1146880, 1179648, 1212416, 1245184, 1277952,
1310720, 1343488, 1376256, 1409024, 1441792,
1474560, 1507328, 1540096, 1572864, 1605632,
1638400, 1671168, 1703936, 1736704, 1769472,
1802240, 1835008, 1867776, 1900544, 1933312,
1966080, 1998848, 2031616, 2064384
Root block 8211
Hash function "r5"
ATTENTION: ALL DATA WILL BE LOST ON '/dev/main/lv_home'! (y/n)y
journal size 8192 (from 18)
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..done.
既然創(chuàng)建了文件系統(tǒng),我就可以在 /mnt/newhome 上安裝它:
# mkdir /mnt/newhome
# mount /dev/main/lv_home /mnt/newhome
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda3 9765200 6989840 2775360 72% /
tmpfs 291388 0 291388 0% /dev/shm
/dev/main/lv_home 8388348 32840 8355508 1% /mnt/newhome
您可以從上面看出,我?guī)缀鯗?zhǔn)備復(fù)制 /home 中的所有數(shù)據(jù)。在開始之前,我把系統(tǒng)降低到運(yùn)行級別 1 以確保在復(fù)制 /home 中的文件時(shí),沒有用戶或進(jìn)程能夠訪問或修改它們:
# init 1
然后,開始復(fù)制文件:
# cp -avx /home/* /mnt/newhome
復(fù)制操作需要大約 10 分鐘的時(shí)間完成。然后,我將原始 /home 備份成 /home.old,這只是為在復(fù)制過程中有任何錯(cuò)誤而準(zhǔn)備的。創(chuàng)建一個(gè)新的安裝點(diǎn),然后在 /home 上重新安裝新 home:
# cd /
# mv home home.old
# mkdir home
# umount /mnt/newhome
# mount /dev/main/lv_home /home
然后,應(yīng)該設(shè)置服務(wù)器以使我的新 /home 分區(qū)可以在每次啟動(dòng)機(jī)器時(shí)使用。首先修改 /etc/fstab 以使它包括新的 /home 項(xiàng):
# /etc/fstab: static file system information.
#
# fs mountpoint type opts dump/pass
/dev/hda3 / reiserfs defaults 1 1
/dev/main/lv_home /home reiserfs defaults 2 2
/dev/hda2 none swap sw 0 0
/dev/hda1 /boot reiserfs noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
proc /proc proc defaults 0 0
none /dev/pts devpts mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
然后,我對初始化腳本進(jìn)行了一些小小改動(dòng)。我修改了 "checkroot" 啟動(dòng)腳本,使以下命令可以在根分區(qū)重新安裝讀/寫后立即運(yùn)行:
/sbin/vgscan
/sbin/vgchange -a y
接下來,我修改了在關(guān)機(jī)時(shí)運(yùn)行的文件系統(tǒng)卸裝腳本,使以下命令在卸裝了所有文件系統(tǒng) 后立即運(yùn)行:
/sbin/vgchange -a n
完成了這些步驟后,我重新引導(dǎo)了機(jī)器,讓我高興的是一切都工作正常。在接下去的一天左右的時(shí)間里完全沒有問題,隨后我刪除了 /home.old 以釋放根文件系統(tǒng)上的一些空間。太棒了!到 LVM 的轉(zhuǎn)換成功了。
LVM是Logical Volume Manager(邏輯卷管理器)的簡寫,它為主機(jī)提供了更高層次的磁盤存儲(chǔ)管理能力。LVM可以幫助系統(tǒng)管理員為應(yīng)用與用戶方便地分配存儲(chǔ)空間。在LVM管理下的邏輯卷可以按需改變大小或添加移除。另外,LVM可以為所管理的邏輯卷提供定制的命名標(biāo)識(shí)。因此,使用LVM主要是方便了對存儲(chǔ)系統(tǒng)的管理,增加了系統(tǒng)的擴(kuò)展性。
一、準(zhǔn)備lvm環(huán)境
1.硬盤的準(zhǔn)備
添加了一塊硬盤/dev/hdb。
準(zhǔn)備了三個(gè)分區(qū),方案如下:容量為100M,僅為了實(shí)驗(yàn)準(zhǔn)備。
/dev/hdb1
/dev/hdb2
/dev/hdb3
2.轉(zhuǎn)換分區(qū)類型為lvm卷
fdisk /dev/hdb
t轉(zhuǎn)換為lvm卷類型
Device Boot Start End Blocks Id System
/dev/hdb1 1 208 98248+ 8e Linux LVM
/dev/hdb2 209 416 98280 8e Linux LVM
/dev/hdb3 417 624 98280 8e Linux LVM
然后w保存并且
#partprobe /*使用磁盤分區(qū)生效*/
二、lvm創(chuàng)建過程
1.從硬盤驅(qū)動(dòng)器分區(qū)中創(chuàng)建物理卷(physical volumes-PV)。
2.從物理卷中創(chuàng)建卷組(volume groups-VG)
3.從卷組中創(chuàng)建邏輯卷(logical volumes-LV),并分派邏輯卷掛載點(diǎn),其中只有邏輯卷才可以寫數(shù)據(jù)。
lvm的最大的特點(diǎn)就是可以動(dòng)態(tài)的調(diào)整分區(qū)的大小,并且可以隨著分區(qū)容量的增長而增加磁盤空間的容量。
LVM配置與創(chuàng)建
三、LVM的物理卷PV
1.相關(guān)命令
pvcreate 創(chuàng)建PV
pvscan 掃描PV
pvdisplay 顯示PV
pvremove 刪除PV
partprobe
2.創(chuàng)建物理卷
如果以上容量不夠,可以再添加其它分區(qū)到物理卷中。
[root@redhat ~]# pvcreate /dev/hdb1 /dev/hdb2
Physical volume “/dev/hdb1″ successfully created
Physical volume “/dev/hdb2″ successfully created
[root@redhat ~]# pvscan
PV /dev/hdb1 lvm2 [95.95 MB]
PV /dev/hdb2 lvm2 [95.98 MB]
Total: 2 [191.92 MB] / in use: 0 [0 ] / in no VG: 2 [191.92 MB]
[root@redhat ~]# pvdisplay
— NEW Physical volume —
PV Name /dev/hdb1
VG Name
PV Size 95.95 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2Ni0Tx-oeSy-zGUP-t7KG-Fh22-0BUi-iyPhhQ
— NEW Physical volume —
PV Name /dev/hdb2
VG Name
PV Size 95.98 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2XLXfY-V3L2-Mtsl-79U4-ovuJ-YaQf-YV9qHs
四、創(chuàng)建LVM的卷組VG
1.相關(guān)命令
vgcreate 創(chuàng)建VG
vgscan 掃描VG
vgdispaly
vgextend
vgreduce
vgchange
vgremove
2.創(chuàng)建邏輯卷VG
[root@redhat ~]# vgcreate vg0 /dev/hdb1 /dev/hdb2
Volume group “vg0″ successfully created
[root@redhat ~]# vgscan
Reading all physical volumes. This may take a while…
Found volume group “vg0″ using metadata type lvm2
[root@redhat ~]# vgdisplay
一、 su 、sudo 、限制root遠(yuǎn)程登陸
su- username
帶用戶環(huán)境切換用戶
su- -c"touch /tmp/123.txt"user1
以user1用戶創(chuàng)建/tmp/123.txt 文件
沒有家目錄的用戶可以用模板新建家目錄
mkdir-p /home/user4chownuser4:user4? /home/user4cp /etc/skel/.bash*/home/user4chown-R user4:user4 /home/user4/
普通用戶臨時(shí)授權(quán)root用戶權(quán)限去執(zhí)行一條命令
visudo
可以查看sudo配置文件
在命令前加入NOPASSWD: 執(zhí)行sudo時(shí)就不需要再輸入用戶的密碼
例子:
User_Alias USER=chen1,chen2
Cmnd_Alias SU=/usr/bin/su
USER ALL=(ALL) NOPASSWD:SU
禁止root用戶遠(yuǎn)程登陸
vi/etc/ssh/sshd_configPermitRootLoginno//修改此處systemctl restart sshd.service
二、df命令、du命令、磁盤分區(qū)
df-h
自動(dòng)適應(yīng)文件大小的單位,查看磁盤使用情況
free
可以查看swap的使用情況
df-i
查看各個(gè)分區(qū)inode的使用情況
有的時(shí)候明明磁盤的內(nèi)存還有剩余,但是卻無法寫入新文件,這時(shí)候就可能是inode用完了。
du-sh
自動(dòng)適應(yīng)單位顯示文件或文件夾大小
du不加后綴的時(shí)候和du -l 一樣,顯示文件夾下文件的大小
du-lh
自動(dòng)適應(yīng)單位顯示文件夾下文件的大小
fdisk-l
列出linux 的磁盤信息
fdisk/dev/sdb
m幫助,直接按p是查看分區(qū)情況 n新建分區(qū) p建立主分區(qū) e擴(kuò)展分區(qū) d刪除分區(qū),起始扇區(qū)默認(rèn)2048就可以啦,last 扇區(qū) +2G 就是將分區(qū)一的大小設(shè)置為2G;輸錯(cuò)命令用ctrl +u清除
BLOCKS是分區(qū)的大小,system是分區(qū)的類型,主分區(qū)和邏輯分區(qū)都是linux,擴(kuò)展分區(qū)是extended
主分區(qū)的分區(qū)號可以為空,而邏輯分區(qū)的分區(qū)號必須連續(xù);邏輯分區(qū)以sdb5開始,分區(qū)之后輸入w可以保存分區(qū),q則不保存操作直接退出
三、磁盤格式化、磁盤掛載、手動(dòng)增加swap空間
1.磁盤格式化
cat/etc/filesystems? //查看系統(tǒng)支持的文件格式,centos7默認(rèn)xfs,centos6默認(rèn)ext4
mount//查看系統(tǒng)的文件格式
mke2fs
-t指定文件格式 ext4 、ext3
-b指定塊大小,文件都比較大時(shí),塊可以大一點(diǎn),比如視頻、高清圖片
比較小時(shí)可以將塊設(shè)置小一點(diǎn),加快讀取速度
-m指定給root用戶預(yù)留的空間大小,1就是1%,0.1就是0.1%
-i指定多少字節(jié)占一個(gè)inode號
如果不指定-t文件格式,則默認(rèn)為ext2格式
mkfs.ext4/dev/sdb1? //將分區(qū)格式化為ext4格式mkfs.xfs? -f/dev/sdb1? //將分區(qū)格式化為xfs格式\
分區(qū)只有掛載了才可以使用mount查詢到,沒有掛載的分區(qū)可以用
blkid/dev/sdb1
mkfs.ext4 == mke2fs -t ext4
mkfs.ext4與mke2fs支持的選項(xiàng)相同
xfs格式只能用mkfs.xfs 創(chuàng)建
2.磁盤掛載
mount/dev/sdb? /mnt///將 /dev/sdb掛載到mnt下 mount UUID="2d8e7749-f2f7-4de5-b1b9-b6bf758d2f37"/mnt///這里的uuid是用blkid /dev/sdb 查到的
卸載磁盤
umount/dev/sdb
如果當(dāng)前目錄在/dev/sdb下則需要退出當(dāng)前分區(qū)
也可以直接用
umount-l/dev/sdb? umount-l/mnt/
mount
man mount 可以查看mount的具體用法
/defaults 可以查找默認(rèn)用法
找到下面這一行
Use default options: rw, suid, dev, exec, auto, nouser, and async.
rw讀寫權(quán)限
suid可以設(shè)置suid權(quán)限
dev,系統(tǒng)默認(rèn)不用管
exec可執(zhí)行
auto自動(dòng)掛載
nouser是否允許普通用戶掛載,默認(rèn)不允許
async 不實(shí)時(shí)同步內(nèi)存的東西到磁盤(減輕磁盤壓力)
mount -o remount,rw/dev/sdb? //重新掛載
vi/etc/fstab? //系統(tǒng)開機(jī)都掛載哪些文件
四、手動(dòng)增加虛擬內(nèi)存
ddif=/dev/zeroof=/tmp/newdisk? bs=1M count=100//創(chuàng)建虛擬磁盤
if指定源,一般寫/dev/zero,它是unix系統(tǒng)特有的一個(gè)文件,可以源源不斷的提供'0',of指定目標(biāo)文件,bs指定塊大小,count指定塊的數(shù)量
mkswap -f /tmp/newdisk//格式化為swapswapon? /tmp/newdisk//將新建的swap加載free-m//顯示內(nèi)存使用大小,-m指定單位為mswapoff? /tmp/newdisk//將虛擬內(nèi)存卸載
五、lvm
lvm創(chuàng)建過程
創(chuàng)建物理卷創(chuàng)建卷組創(chuàng)建邏輯分區(qū)格式化為需要的格式掛載分區(qū)
具體介紹日志
fdisk /dev/sdb
t 選擇分區(qū),8e //將分區(qū)轉(zhuǎn)換為lvm格式 ,w退出
創(chuàng)建物理卷
1.
yumprovides"/*/pvcreate"
通配查詢pvcreate命令的軟件包名
yum install -y lvm2//安裝lvm
partprobe //生成分區(qū)文件
2.
pvcreate/dev/sdb1pvcreate? /dev/sdb2pvcreate? /dev/sdb3
pvdisplay查看已經(jīng)創(chuàng)建的物理卷
創(chuàng)建卷組
1.pvs
可以直觀的查看物理卷有哪些
2.創(chuàng)建卷組,將sdb1和sdb2設(shè)置為一個(gè)卷組
vgcreatevg1 /dev/sdb1 /dev/sdb2
vgdisplay可以查看卷組信息
創(chuàng)建邏輯分區(qū)
lvcreate-L100M-n lv1 vg1
從vg1卷組中創(chuàng)建名字為lv1大小100M的邏輯分區(qū)
-L指定分區(qū)大小
-n指定分區(qū)名字
將分區(qū)格式化為ext4格式
mkfs.ext4 /dev/vg1/lv1
然后將文件掛載
mount/dev/vg1/lv1 /mnt
ext4擴(kuò)容邏輯分區(qū)
umount/mnt///卸載分區(qū)lvresize -L200M/dev/vg1/lv1? //擴(kuò)展分區(qū)e2fsck -f/dev/vg1/lv1? //檢查磁盤是否有錯(cuò)誤resize2fs/dev/vg1/lv1? //更新邏輯分區(qū)大小,不然重新掛載會(huì)無法識(shí)別擴(kuò)容的大小
ext4縮容
umount/mnt///卸載分區(qū)e2fsck -f/dev/vg1/lv1? ? //檢查磁盤是否有錯(cuò)誤resize2fs/dev/vg1/lv1 100M? //將分區(qū)縮小為100Mlvresize -L100M/dev/vg1/lv1? ? //重新設(shè)置卷大小
xfs擴(kuò)容
1.擴(kuò)容與縮容不會(huì)更改分區(qū)中的文件,xfs只可以擴(kuò)容不可以縮容;
2.如果磁盤已經(jīng)掛載要先umount 卸載
然后格式化為xfs.
mkfs.xfs-f/dev/vg1/lv1
XFS的擴(kuò)容不需要先卸載,直接擴(kuò)容即可
lvresize -L200M /dev/vg1/lv1? xfs_growfs/dev/vg1/lv1? //更新分區(qū)大小
關(guān)于擴(kuò)容縮容的總結(jié)
ext4可以擴(kuò)容和縮容而且需要卸載后操作,xfs只可以擴(kuò)容,不需要卸載
ext4擴(kuò)容
lvresize -L 100M /dev/vg1/lv1e2fsck-f/dev/vg1/lv1resize2fs /dev/vg1/lv1
縮容
e2fsck-f/dev/vg1/lv1resize2fs /dev/vg1/lv1 100Mlvresize -L 100M /dev/vg1/lv1
xfs擴(kuò)容
lvresize-L100M/dev/vg1/lv1xfs_growfs /dev/vg1/lv1
在分區(qū)空間用完之后就需要擴(kuò)容卷組,然后再擴(kuò)容
卷組擴(kuò)容
vgextendvg1 /dev/sdb3
將 /dev/sdb3加入到vg1卷組
對于Linux用戶而言,在安裝一臺(tái)Linux機(jī)器的時(shí)候,遇到的問題之一就是給各分區(qū)估計(jì)和分派足夠的硬盤空間。無論對一個(gè)正在為服務(wù)器尋找空間的系統(tǒng)管理員,還是一個(gè)磁盤即將用盡的普通用戶來說,這都是一個(gè)非常常見的問題。解決的方法通常是使用符號鏈接,或者一些調(diào)整分區(qū)大小的工具(比如parted)。但是,這只是一個(gè)暫時(shí)性的解決辦法,不久,我們又會(huì)面臨同樣的問題。
如果你是一個(gè)站點(diǎn)的系統(tǒng)管理員,管理著數(shù)量眾多的、連接在Internet之上的服務(wù)器,那么你每關(guān)機(jī)一分鐘,都會(huì)給公司帶來很大損失。此外,使用這種方法,在修改了分區(qū)表之后,每一次都得重新啟動(dòng)系統(tǒng)。LVM(邏輯卷管理程序)可以幫助我們解決這些問題。
LVM簡介
Linux LVM可以使管理工作更加輕松。相對于硬盤和分區(qū),LVM是從更高的層次來看待存儲(chǔ)空間的。在使用LVM之前,先來看一些將要使用到的相關(guān)概念。
物理卷
物理卷是指硬盤分區(qū)或者從邏輯上看起來和硬盤分區(qū)類似的設(shè)備(比如RAID設(shè)備)。
邏輯卷
一個(gè)或者多個(gè)物理卷組成一個(gè)邏輯卷。對于LVM而言,邏輯卷類似于非LVM系統(tǒng)中的硬盤分區(qū)。邏輯卷可以包含一個(gè)文件系統(tǒng)(比如/home或者/usr)。
卷組
一個(gè)或者多個(gè)邏輯卷組成一個(gè)卷組。對于LVM而言,卷組類似于非LVM系統(tǒng)中的物理硬盤。卷組把多個(gè)邏輯卷組合在一起,形成一個(gè)可管理的單元。
document.body.clientWidth-450) {this.height=(document.body.clientWidth-450)*this.height/this.width;this.width=document.body.clientWidth-450}" border="0"
LVM工作方式
下面來看一看LVM到底是怎樣工作的。每一個(gè)物理卷都被分成幾個(gè)基本單元,即所謂的PE(Physical Extents)。PE的大小是可變的,但是必須和其所屬卷組的物理卷相同。在每一個(gè)物理卷里,每一個(gè)PE都有一個(gè)惟一的編號。PE是一個(gè)物理存儲(chǔ)里可以被LVM尋址的最小單元。
每一個(gè)邏輯卷也被分成一些可被尋址的基本單位,即所謂的LE(Logical Extents)。在同一個(gè)卷組中,LE的大小和PE是相同的,很顯然,LE的大小對于一個(gè)卷組中的所有邏輯卷來說都是相同的。
在一個(gè)物理卷中,每一個(gè)PE都有一個(gè)惟一的編號,但是對于邏輯卷這并不一定是必需的。這是因?yàn)楫?dāng)這些PE ID號不能使用時(shí),邏輯卷可以由一些物理卷組成。因此,LE ID號是用于識(shí)別LE以及與之相關(guān)的特定PE的。正如前面所提到的,LE和PE之間是一一對應(yīng)的。每一次存儲(chǔ)區(qū)域被尋址訪問或者LE的ID被使用,都會(huì)把數(shù)據(jù)寫在物理存儲(chǔ)設(shè)備之上。
你可能會(huì)覺得奇怪,有關(guān)邏輯卷和邏輯卷組的所有元數(shù)據(jù)都存到哪兒去了。類似的在非LVM系統(tǒng)中,有關(guān)分區(qū)的數(shù)據(jù)是存儲(chǔ)在分區(qū)表中,而分區(qū)表被存儲(chǔ)在了每一個(gè)物理卷的起始位置。VGDA(卷組描述符區(qū)域)功能就好象是LVM的分區(qū)表,它存儲(chǔ)在每一個(gè)物理卷的起始處。
VGDA由以下信息組成:
·一個(gè)PV描述符
·一個(gè)VG描述符
·LV描述符
·一些PE描述符
當(dāng)系統(tǒng)啟動(dòng)LV時(shí),VG被激活,并且VGDA被加載至內(nèi)存。VGDA幫助識(shí)別LV的實(shí)際存儲(chǔ)位置。當(dāng)系統(tǒng)想要訪問存儲(chǔ)設(shè)備時(shí),由VGDA建立起來的映射機(jī)制就用于訪問實(shí)際的物理位置來執(zhí)行I/O操作。
開始工作
下面具體看一看如何使用LVM。
第一步:配置內(nèi)核。在安裝LVM之前,內(nèi)核之中應(yīng)該有LVM模塊,可以使用以下的步驟來完成:
#cd /usr/src/linux
#make menuconfig
選擇Multi-device Support (RAID and LVM)子菜單,選中以下兩個(gè)選項(xiàng):
[*] Multiple devices driver support (RAID and LVM)
* Logical volume manager (LVM) Support.
復(fù)制代碼
注:如果在安裝Linux系統(tǒng)時(shí)已經(jīng)安裝了LVM相關(guān)軟件包,上面幾步操作可以省略掉,直接到第二步.
第二步:檢查驅(qū)動(dòng)器上空閑硬盤空間的總量。這可以通過以下命令來未完成:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.1G 2.7G 398M 87% /
/dev/hda2 4.0G 3.2G 806M 80% /home
/dev/hda5 2.1G 1.0G 1.1G 48% /var
第三步:在硬盤上創(chuàng)建一個(gè)LVM分區(qū)。使用fdisk或者其它的分區(qū)工具來創(chuàng)建一個(gè)LVM分區(qū)。Linux LVM的分區(qū)類型為8e。
# fdisk /dev/hda
press p (to print the partition table) and n (to create a new partition)
第四步:創(chuàng)建一個(gè)物理卷。下述命令將在分區(qū)的起始處創(chuàng)建一個(gè)卷組描述符:
# pvcreate /dev/hda6
pvcreate -- -physical volume "/dev/hda6" successfully created
# pvcreate /dev/hda7
pvcreate- -- physical volume "/dev/hda7" successfully created
第五步:創(chuàng)建一個(gè)卷組。通過下面的方法創(chuàng)建一個(gè)新的卷組,并且添加兩個(gè)物理卷:
# vgcreate test_lvm /dev/hda6 /dev/hda7
vgcreate- -- INFO: using default physical extent size 4 MB
vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate- -- doing automatic backup of volume group "test_lvm"
vgcreate- -- volume group "test_lvm" successfully created and activated
上述命令將創(chuàng)建一個(gè)名為test_lvm,包含有/dev/hda6和/dev/hda7兩個(gè)物理卷的卷組。使用下面命令來激活卷組:
# vgchange -ay test_lvm
使用“vgdisplay”命令來查看所建立卷組的細(xì)節(jié)信息。
# vgdisplay
--- Volume group ---
VG Name test_lvm
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 3.91 GB
PE Size 4 MB
Total PE 1000
Alloc PE / Size 256 / 1 GB
Free PE / Size 744 / 2.91 GB
VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E
第六步:創(chuàng)建一個(gè)邏輯卷。使用lvcreate命令在卷組中創(chuàng)建一個(gè)邏輯卷:
# lvcreate -L2G -nlogvol1 test_lvm
第七步:創(chuàng)建文件系統(tǒng)。在該邏輯卷上選擇使用reiserfs日志文件系統(tǒng):
# mkreiserfs /dev/test_lvm/logvol1
使用mount命令來加載新創(chuàng)建的文件系統(tǒng)。
# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1
第八步:在/etc/fstab和/etc/lilo.conf中添加一個(gè)入口。在/etc/fstab中加入以下入口,在啟動(dòng)時(shí)加載文件系統(tǒng):
/dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1
如果沒有覆蓋原來的內(nèi)核,那么拷貝一份重新編譯后的內(nèi)核,并且在啟動(dòng)時(shí)選擇是否使用LVM。下面是LILO文件的內(nèi)容:
image = /boot/lvm_kernel_image
label = linux-lvm
root = /dev/hda1
initrd = /boot/init_image
ramdisk = 8192
添加以上內(nèi)容后,使用以下命令重新加載LILO:
#/sbin/lilo
第九步:修改邏輯卷的大小。可以使用lvextend命令方便地修改邏輯卷的大小,增加邏輯卷大小的方法如下:
# lvextend -L 1G /dev/test_lvm/logvol1
lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB
lvextend -- doing automatic backup of volume group "test_lvm"
lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended
類似的,減小邏輯卷大小的方法如下:
# lvreduce -L-1G /dev/test_lvm/lv1
lvreduce -- -Warning: reducing active logical volume to 2GB
lvreduce- -- This may destroy your data (filesystem etc.)
lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y
lvreduce- -- doing automatic backup of volume group "test_lvm"
lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced
復(fù)制代碼
總結(jié)
從上面的討論可以看到,LVM具有很好的可擴(kuò)展性,并且使用起來很直觀。一旦卷組建立起來以后,根據(jù)需求調(diào)整每一個(gè)邏輯卷的大小也非常容易。
LVM操作的相關(guān)命令:
fdisk -l :查看系統(tǒng)中都認(rèn)到了那些物理硬盤
pvdisplay:查看系統(tǒng)中已經(jīng)創(chuàng)建好的物理卷
pvcreate:創(chuàng)建一個(gè)新的物理卷
pvremove:刪除一個(gè)物理卷(也就是從物理卷中刪除一個(gè)LVM標(biāo)簽)
vgdisplay:查看系統(tǒng)中的卷組
vgcreate:創(chuàng)建一個(gè)新的卷組
vgreduce:從卷組中刪除一個(gè)物理卷(也就是縮小卷組)
vgremove:刪除一個(gè)卷組
lvdisplay:查看系統(tǒng)中已經(jīng)創(chuàng)建好的邏輯卷
lvcreate:創(chuàng)建一個(gè)新的邏輯卷
lvreduce:縮小邏輯卷(也就是從一個(gè)邏輯卷中減少一些LE)
lvremove:從系統(tǒng)中刪除一個(gè)邏輯卷
mkfs:基于邏輯卷創(chuàng)建一個(gè)相應(yīng)類型的文件系統(tǒng)
mkdir -p $mount_piont:創(chuàng)建一個(gè)掛載目錄
創(chuàng)建好的文件系統(tǒng)位于:
/dev/$create_vg_name/$lv_name
mount /dev/$create_vg_name/$lv_name $mount_piont:掛載文件系統(tǒng)
vgscan:讀取系統(tǒng)中創(chuàng)建的所有卷組
vgchange -a y :激活所有卷組 (開機(jī)執(zhí)行,redhat可在/etc/rc.d/rc.sysinit系統(tǒng)啟動(dòng)初始化腳本里可以找到)
vgchange -a n :關(guān)閉所有卷組(提示:必須在umount所有的文件系統(tǒng)后,才能成功執(zhí)行
裸設(shè)備使用:
1.先lvreate
2. raw /dev/raw/raw0 /dev/mapper/vgname-lvname
3.修改 /etc/sysconfig/rawdevices,添加:
/dev/raw/raw0 /dev/mapper/vgname-lvname
4.執(zhí)行命令; service rawdevices restart,使得/etc/sysconfig/rawdevices文件中的裸設(shè)備配置生效
5.執(zhí)行/sbin/schkconfig rawdevices on 使得系統(tǒng)重啟后,裸設(shè)備能自動(dòng)加載
6.修改裸設(shè)備的屬主,使得相應(yīng)權(quán)限的用戶對裸設(shè)備有讀寫權(quán)限
chown -R owner:group /dev/raw/raw0
7.將修改裸設(shè)備屬主修改命令加入到系統(tǒng)啟動(dòng)執(zhí)行腳本/etc/rc.local中,使得系統(tǒng)啟動(dòng)后裸設(shè)備的屬主保持不變.