Linux初級運維(十二)——磁碟及檔案系統管理
一、磁碟管理
1、 機械式硬碟:
U盤、光碟、軟盤、硬碟、磁帶
2、 格式化:(Partition) 建立檔案系統
MBR:主引導記錄 (512byte)
Master Boot Record
Main Boot Record
446bye:BootLoader, 是一個程式。引導載入器
64bytes:
16bytes:標識一個分割槽
2bytes:Magic Number
標記MBR是否有效。
3、硬連線和符號連線
硬連線:是指兩個儲存塊指向一個引導號
符號連線:(又叫軟連線)是指一個檔案指向另外一個檔案
建立連線 :ln [-s -v] SRC (原始檔) DEST(目標檔案)
ln SRC DEST 硬連線
ln -s SRC DEST 軟連線
硬連結特點:
1、只能對檔案建立,不能應用於目錄;
2、不能跨檔案系統;
3、建立硬連結會增加檔案被連結的次數;
符號連結:
1、可應用於目錄;
2、可以跨檔案系統;
3、不會增加被連結檔案的連結次數;
4、其大小為指定的路徑所包含的字元個數;
du:
-s 檢視檔案的大小
-sh 檢視目錄的總容量
df : 顯示整個磁碟的分割槽情況
df -p -i
二、裝置檔案
b:塊裝置 按塊為單位,隨機訪問的裝置 (硬碟)
c:字元裝置 按字元為單位,線性裝置 (鍵盤)
/dev
主裝置號:(major number) 標識裝置型別
次裝置號:(minor number) 標識同一種類型中不同裝置
mknod
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE
硬碟裝置的裝置檔名:
IDE,ATA: hd
SATA:sd
SCSI:sd
USB:sd
a,b,c,... 來區別同一型別下的不同裝置
IDE:
第一個IDE口:主、從
/dev/hda , /dev/hdb
第二個IDE口:主、從
/dev/hdc , /dev/hdd
hda:
hda1:第一個分割槽
hda2:第二個分割槽
hda3:第三個分割槽
hda4:
hda5:第一個邏輯分割槽
檢視當前系統識別了幾塊硬碟: fdisk -l [/dev/to/some_device_file]
三、Linux支援的檔案系統
1、管理磁碟分割槽:
fdisk /dev/sda
p:顯示當前硬體的分割槽,包括沒有儲存的改動
n:建立新分割槽
e:擴充套件分割槽
p:主分割槽
d:刪除一個分割槽
w:儲存退出
q:不儲存退出
t:修改分割槽型別
L:
l:顯示所有支援的所有型別
2、檔案系統管理
格式化分割槽:重新建立檔案系統會損壞原有檔案
mkfs:make file systemc
-t FSTYPE
檔案系統型別:
ext2
ext3
cat /proc/filesystems:檢視當前核心所支援檔案系統型別:
3、專門管理ext系列檔案:
mke2fs:
-j:建立ext3 型別檔案系統
-b BLOCK_SIZE : 指定塊大小,預設為 4096 可以取值為 1024 或2048或4096
-L LABEL:指定分割槽卷標
-m # :指定預留給超級使用者的塊數百分比
- i #:用於指定為多少位元組的空間建立一個 inode 預設為 8192 ,這裡給出的數值應該為塊大小的2^n 倍。
-N :指定inode個數;
-F :強制建立檔案系統
-E:使用者指定額外檔案系統屬性;
4、blkid:查詢或檢視磁碟裝置的相關屬性
UUID
TYPE
LABEL :檢視卷標
e2label :用於檢視或定義卷標
e2label 裝置檔案 卷標 :設定卷標
5、tune2fs:調整檔案系統的相關屬性
-j:不損害原有資料,將ext2 升級為ext3;
-L LABEL:設定或修改卷標
-m # :調整預留百分比
-r # :指定預留多少塊
-o :設定預設掛載選項;
-c # :指定掛載次數達到#次之後進行自檢, 0或-1 表示關閉此功能
-i # :每掛載使用多少天后進行自檢,0或-1 表示關閉此功能
-l: 顯示超級塊中的資訊;
dumpe2fs:顯示檔案屬性資訊
-h :只顯示超級塊的資訊
fsck :檢查並修復Linux檔案系統
-t FSTYPE :指定檔案系統型別
-a :自動修復
e2fsck :專用於修復ext2/ext3 檔案系統
-f :強制檢查;
-p:自動修復
四、掛載與解除安裝
掛載:將新的檔案系統關聯至當前根檔案系統
解除安裝:將新的檔案系統從當前根檔案系統中移除。
mount:掛載
mount 裝置 掛載點
裝置:
裝置檔案: /dev/sda5
卷標:LABEL=“”
UUID: UUID=“”
掛載點:目錄
1、此目錄沒有被其他程序使用
2、目錄得事先存在
3、目錄中的原有的檔案將會被暫時隱藏。
mount:顯示當前系統已經掛載的裝置及掛載點
mount [options] [-o options] DEVICE MOUNT_POINT
-a:表示掛載/etc/fstab檔案中定義的所有檔案系統
-n:預設情況下,mount命令每掛載一個裝置,都會把掛載的裝置資訊儲存至/etc/mtab檔案;使用-n選項意味著掛載裝置時,不把資訊寫入此檔案。
-t FSTYPE:指定正在掛載裝置上的檔案系統的型別;不適用此選項事, mount會呼叫blkid命令獲取對應檔案系統的型別;
-r:只讀掛載,掛載光碟時,常用此選項。
-w:讀寫掛載,一般預設是讀寫掛載
-o:指定額外的掛載選項,也既指定檔案系統啟用的屬性;
remount:重新掛載當前檔案系統
ro:掛載為只讀
rw:讀寫掛載
掛載完成後,要通過掛載點訪問對應檔案系統上的檔案。
umount:解除安裝某檔案系統
umount 裝置
umount 掛載點
解除安裝注意事項:
掛載的裝置沒有程序使用;
練習題:
1、調整其預留百分比為3%
tune2fs -m 3 -L DATA /dev/sda7
2、以重新掛載的方式掛載此檔案系統為不更新訪問時間戳,並驗證其效果
stat /backup/inittab
cat /backup/inittab
stat
mount -o remount,noatime /backup
cat
stat
3、對此檔案系統強行做一次檢測
e2fsck -f /dev/sda7
4、刪除複製而來的所有檔案,並將此檔案系統重新掛載為同步(sync);而後在此複製/etc目錄中的所有檔案至此掛載點,體驗其效能變化:
rm -rf /dev/sda7
mount -o remount,sync /backup
cp -r /etc/* /backup
五、swap分割槽
free -m
fdisk命令中,調整分割槽型別為82:
建立交換分割槽:
mkswap /dev/sda8
-L LABEL
swapon /dev/sda8 :啟用這個分割槽的swap
swapoff /dev/sda8 :停用這個分割槽的swap
迴環裝置:
loopback:使用軟體來模擬實現硬體
dd命令:轉化並複製一個檔案
if=輸入資料的來源
of=資料儲存目標
bs-1
count=2
seek=# :建立資料檔案時,跳過的空間大小;
dd if=/dev/sad of=/mnt/usb/mbr.backup bs=512 count=1
dd if =/mnt/usb/mbr.backup of=/dev/sda bs=512 count=1
cat /dev/cdrom > /root/rhe15.iso 製作映象
mount命令:可以掛載iso映象:
mount DEVICE MOUNT_POINT
-o loop: 掛載本地迴環裝置,因此可以掛載映象
mount /dev/sda5 /mnt/test
檔案系統的配置檔案: /etc/fstab
os在初始時,會自動掛載此檔案中定義的每個檔案系統
要掛載的裝置 掛載點 檔案系統型別 掛載選項 轉儲頻率(每多少天做一次完全備份) 檔案系統檢測次序(只有根可以為1,0表示不檢查)
/dev/sda5 /mnt/test ext3 defaults 0 0
mount -a :掛載/etc/fstab 檔案中定義的所有檔案系統
fuser:驗證程序正在使用的檔案或套接字檔案
-v:檢視某檔案上正在執行的程序
-k:
-m
fuser -km MOUNT_POINT :終止正在訪問此掛載點的所有程序。
練習:
1、建立一個5G的分割槽,檔案系統為ext3,卷標為MYDATA,塊大小為 1024,預留管理空間為磁碟分割槽的3%,要求開機後可以自動掛載至/data目錄,並且自動掛載的裝置要使用卷標進行引用:
2、建立一個本地迴環檔案/var/swaptemp/swapfile來用於swap,要求大小為 512MB,卷標為SWAP—FILE ,且開機自動啟用此交換裝置:
mkdir /var/swaptemp
dd if=/dev/zero of=/var/swaptemp/swapfile bs=1M count=512
mkswap LABLE=SWAP-FILE /var/swaptemp/swapfile
/etc/fstab
/var/swaptemp/swapfile swap swap defaults 0 0
3、上述第一問,如何讓其自動掛載的同時啟用ACL功能:
/etc/fstab
LABEL=‘MYDATA’ /data ext3 defaults,acl 0 0
六、壓縮、解壓縮命令
壓縮格式:gz ,bz2 ,xz ,zip ,Z
壓縮演算法:演算法不同,壓縮比也會不同
gzip: .gz
gzip /PATH/TO/SOMEFILE : 壓縮完成後會刪除原檔案
-d:表示解壓縮,相當於 gunnzip
-# :1-9 ,指定壓縮比,預設是6
gunzip:
gunzip /PATH/TO/SOMEFILE.gz :解壓完成後會刪除原檔案
zcat /PATH/TO/SOMEFILE.gz : 不解壓的情況下,檢視檔案的內容
bzip2 : .bz2
比gzip有著更大壓縮比的壓縮工具,使用格式近似
bzip2 /PATH/TO/SOMEFILE
-d:解壓縮
-#:1-9,預設是6
-k:壓縮時保留原檔案
bunzip2 /PATH/TO/SOMEFILE.bz2
bzcat /PATH/TO/SOMEFILE.bz2 :不解壓的情況下,檢視檔案的內容
xz: .xz
xz /PATH/TO/SOMEFILE
-d:表示解壓縮
-# :1-9,預設是6
-k :壓縮時保留原檔案
unxz:表示解壓縮
xzcat:表示不解壓檢視檔案內容
zip:既歸檔又壓縮的工具
zip FILENAME.zip FILE1 FILE2 ... : 壓縮後不刪除原始檔
unzip FILENAME.zip
archive: 歸檔,歸檔本身並不意味著壓縮
tar:歸檔工具, .tar
-c:建立歸檔檔案
-f FILE.tar :操作的歸檔檔案
-x :展開歸檔,還原歸檔
--xattrs :歸檔時,保留檔案的擴充套件性資訊
-t :不展開歸檔,直接檢視歸檔了哪些檔案
-zcf:歸檔並呼叫gzip壓縮
-zxf:呼叫gzip解壓縮並展開歸檔
練習:寫一個指令碼
從鍵盤讓使用者輸入幾個檔案,指令碼能夠將此幾個檔案歸檔壓縮成一個檔案:
read:
-p “PROMPT”:給出提示
七、while語句
指令碼程式設計:
順序結構
選擇結構
if
case
迴圈結構
for
while
until
while迴圈: 適用於迴圈次數未知的場景
語法:
while CONDITION;do
statement
...
done