2021-05-12 14:32:11
Linux基礎教學 - Linux 磁碟管理
Linux磁碟管理好壞直接關係到整個系統的效能問題。
Linux磁碟管理常用三個命令為df、du和fdisk。
- df:列出檔案系統的整體磁碟使用量
- du:檢查磁碟空間使用量
- fdisk:用於磁碟分割區
df
df命令引數功能:檢查檔案系統的磁碟空間佔用情況。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。
語法:
df [-ahikHTm][目錄或檔名]
選項與引數:
- -a :列出所有的檔案系統,包括系統特有的 /proc 等檔案系統;
- -k :以 KBytes 的容量顯示各檔案系統;
- -m :以 MBytes 的容量顯示各檔案系統;
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
- -H :以 M=1000K 取代 M=1024K 的進位方式;
- -T :顯示檔案系統型別, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
- -i :不用硬碟容量,而以 inode 的數量來顯示
範例 1
將系統內所有的檔案系統列出來!
[root@www ~]# df Filesystem1K-blocks UsedAvailableUse%Mounted on /dev/hdc2 99206243823112558544441%//dev/hdc3 495631614137645591084%/home /dev/hdc1 101086111268474112%/boot tmpfs 37133203713320%/dev/shm
在 Linux 底下如果 df 沒有加任何選項,那麼預設會將系統內所有的 (不含特殊記憶體內的檔案系統與 swap) 都以 1 Kbytes 的容量來列出來!
範例 2
將容量結果以易讀的容量格式顯示出來
[root@www ~]# df -h FilesystemSizeUsedAvailUse%Mounted on /dev/hdc2 9.5G3.7G5.4G41%//dev/hdc3 4.8G139M4.4G4%/home /dev/hdc1 99M11M83M12%/boot tmpfs 363M0363M0%/dev/shm
範例 3
將系統內的所有特殊檔案格式及名稱都列出來
[root@www ~]# df -aT FilesystemType1K-blocks UsedAvailableUse%Mounted on /dev/hdc2 ext3 99206243823112558544441%/ proc proc 000-/proc sysfs sysfs 000-/sys devpts devpts 000-/dev/pts /dev/hdc3 ext3 495631614137645591084%/home /dev/hdc1 ext3 101086111268474112%/boot tmpfs tmpfs 37133203713320%/dev/shm none binfmt_misc 000-/proc/sys/fs/binfmt_misc sunrpc rpc_pipefs 000-/var/lib/nfs/rpc_pipefs
範例 4
將 /etc 底下的可用的磁碟容量以易讀的容量格式顯示
[root@www ~]# df -h /etc FilesystemSizeUsedAvailUse%Mounted on /dev/hdc2 9.5G3.7G5.4G41%/
du
Linux du命令也是檢視使用空間的,但是與df命令不同的是Linux du命令是對檔案和目錄磁碟使用的空間的檢視,還是和df命令有一些區別的,這裡介紹Linux du命令。
語法:
du [-ahskm]檔案或目錄名稱
選項與引數:
- -a :列出所有的檔案與目錄容量,因為預設僅統計目錄底下的檔案量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個各別的目錄占用容量;
- -S :不包括子目錄下的總計,與 -s 有點差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
範例 1
列出目前目錄下的所有檔案容量
[root@www ~]# du 8./test4 <==每個目錄都會列出來8./test2 ....中間省略....12./.gconfd <==包括隱藏檔案的目錄220.<==這個目錄(.)所佔用的總量
直接輸入 du 沒有加任何選項時,則 du 會分析當前所在目錄的檔案與目錄所佔用的硬碟空間。
範例 2
將檔案的容量也列出來
[root@www ~]# du -a 12./install.log.syslog <==有檔案的列表了8./.bash_logout 8./test4 8./test2 ....中間省略....12./.gconfd 220.
範例 3
檢查根目錄底下每個目錄所佔用的容量
[root@www ~]# du -sm /* 7 /bin 6 /boot .....中間省略.... 0 /proc .....中間省略.... 1 /tmp 3859 /usr <==系統初期最大就是他了啦! 77 /var
萬用字元 * 來代表每個目錄。
與 df 不一樣的是,du 這個命令其實會直接到檔案系統內去搜尋所有的檔案資料。
fdisk
fdisk 是 Linux 的磁碟分割區表操作工具。
語法:
fdisk [-l]裝置名稱
選項與引數:
- -l :輸出後面接的裝置所有的分割區內容。若僅有 fdisk -l 時, 則系統將會把整個系統內能夠搜尋到的裝置的分割區均列出來。
範例 1
列出所有分割區資訊
[root@AY120919111755c246621 tmp]# fdisk -l Disk/dev/xvda:21.5 GB,21474836480 bytes 255 heads,63 sectors/track,2610 cylinders Units= cylinders of 16065*512=8225280 bytes Sector size (logical/physical):512 bytes /512 bytes I/O size (minimum/optimal):512 bytes /512 bytes Disk identifier:0x00000000DeviceBootStartEndBlocksIdSystem/dev/xvda1 *125502048000083Linux/dev/xvda2 2550261149049682Linux swap /SolarisDisk/dev/xvdb:21.5 GB,21474836480 bytes 255 heads,63 sectors/track,2610 cylinders Units= cylinders of 16065*512=8225280 bytes Sector size (logical/physical):512 bytes /512 bytes I/O size (minimum/optimal):512 bytes /512 bytes Disk identifier:0x56f40944DeviceBootStartEndBlocksIdSystem/dev/xvdb2 1261020964793+83Linux
範例 2
找出你系統中的根目錄所在磁碟,並查閱該硬碟內的相關資訊
[root@www ~]# df /<==注意:重點在找出磁碟檔名而已Filesystem1K-blocks UsedAvailableUse%Mounted on /dev/hdc2 99206243823168558538841%/[root@www ~]# fdisk /dev/hdc <==仔細看,不要加上數位喔!The number of cylinders forthis disk isset to 5005.Thereis nothing wrong with that, but thisis larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Command(m for help):<==等待你的輸入!
輸入 m 後,就會看到底下這些命令介紹
Command(m for help): m <==輸入 m 後,就會看到底下這些命令介紹Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition <==刪除一個partition l list known partition types m printthis menu n add a new partition <==新增一個partition o create a new empty DOS partition table p print the partition table <==在螢幕上顯示分割表 q quit without saving changes <==不儲存離開fdisk程式 s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit <==將剛剛的動作寫入分割表 x extra functionality (experts only)
離開 fdisk 時按下 q
,那麼所有的動作都不會生效!相反的, 按下w
就是動作生效的意思。
Command(m for help): p <==這裡可以輸出目前磁碟的狀態Disk/dev/hdc:41.1 GB,41174138880 bytes <==這個磁碟的檔名與容量255 heads,63 sectors/track,5005 cylinders <==磁頭、磁區與磁柱大小Units= cylinders of 16065*512=8225280 bytes <==每個磁柱的大小DeviceBootStartEndBlocksIdSystem/dev/hdc1 *11310439183Linux/dev/hdc2 14128810241437+83Linux/dev/hdc3 128919255116702+83Linux/dev/hdc4 19265005247401005Extended/dev/hdc5 19262052102009682Linux swap /Solaris# 裝置檔名 啟動區否 開始磁柱 結束磁柱 1K大小容量 磁碟分割區槽內的系統Command(m for help): q
想要不儲存離開嗎?按下 q 就對了!不要隨便按 w 啊!
使用 p
可以列出目前這顆磁碟的分割表資訊,這個資訊的上半部在顯示整體磁碟的狀態。
磁碟格式化
磁碟分割完畢後自然就是要進行檔案系統的格式化,格式化的命令非常的簡單,使用 mkfs
(make filesystem) 命令。
語法:
mkfs [-t 檔案系統格式]裝置檔名
選項與引數:
- -t :可以接檔案系統格式,例如 ext3, ext2, vfat 等(系統有支援才會生效)
範例 1
檢視 mkfs 支援的檔案格式
[root@www ~]# mkfs[tab][tab] mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat
按下兩個[tab],會發現 mkfs 支援的檔案格式如上所示。
範例 2
將分割區 /dev/hdc6(可指定你自己的分割區) 格式化為 ext3 檔案系統:
[root@www ~]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39(29-May-2006)Filesystem label=<==這裡指的是分割槽的名稱(label) OS type:LinuxBlock size=4096(log=2)<==block 的大小設定為4KFragment size=4096(log=2)251392 inodes,502023 blocks <==由此設定決定的inode/block數量25101 blocks (5.00%) reserved for the super user First data block=0Maximum filesystem blocks=51589939216 block groups 32768 blocks per group,32768 fragments per group15712 inodes per groupSuperblock backups stored on blocks:32768,98304,163840,229376,294912Writing inode tables:doneCreating journal (8192 blocks):done<==有紀錄檔記錄Writing superblocks and filesystem accounting information:doneThis filesystem will be automatically checked every 34 mounts or180 days, whichever comes first.Use tune2fs -c or-i to override.# 這樣就建立起來我們所需要的 Ext3 檔案系統了!簡單明瞭!
磁碟檢驗
fsck(file system check)用來檢查和維護不一致的檔案系統。
若系統掉電或磁碟發生問題,可利用fsck命令對檔案系統進行檢查。
語法:
fsck [-t 檔案系統][-ACay]裝置名稱
選項與引數:
- -t : 給定檔案系統的型式,若在 /etc/fstab 中已有定義或 kernel 本身已支援的則不需加上此引數
- -s : 依序一個一個地執行 fsck 的指令來檢查
- -A : 對/etc/fstab 中所有列出來的 分割區(partition)做檢查
- -C : 顯示完整的檢查進度
- -d : 列印出 e2fsck 的 debug 結果
- -p : 同時有 -A 條件時,同時有多個 fsck 的檢查一起執行
- -R : 同時有 -A 條件時,省略 / 不檢查
- -V : 詳細顯示模式
- -a : 如果檢查有錯則自動修復
- -r : 如果檢查有錯則由使用者回答是否修復
- -y : 選項指定檢測每個檔案是自動輸入yes,在不確定那些是不正常的時候,可以執行 # fsck -y 全部檢查修復。
範例 1
檢視系統有多少檔案系統支援的 fsck 命令:
[root@www ~]# fsck[tab][tab] fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat
範例 2
強制檢測 /dev/hdc6 分割區:
[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39(29-May-2006) e2fsck 1.39(29-May-2006)Pass1:Checking inodes, blocks,and sizes Pass2:Checking directory structure Pass3:Checking directory connectivity Pass4:Checking reference counts Pass5:Checkinggroup summary information vbird_logical:11/251968 files (9.1% non-contiguous),36926/1004046 blocks
如果沒有加上 -f 的選項,則由於這個檔案系統不曾出現問題,檢查的經過非常快速!若加上 -f 強制檢查,才會一項一項的顯示過程。
磁碟掛載與卸除
Linux 的磁碟掛載使用 mount
命令,解除安裝使用 umount
命令。
磁碟掛載語法:
mount [-t 檔案系統][-L Label名][-o 額外選項][-n]裝置檔名掛載點
範例 1
用預設的方式,將剛剛建立的 /dev/hdc6 掛載到 /mnt/hdc6 上面!
[root@www ~]# mkdir /mnt/hdc6 [root@www ~]# mount /dev/hdc6 /mnt/hdc6 [root@www ~]# df Filesystem1K-blocks UsedAvailableUse%Mounted on .....中間省略...../dev/hdc6 19763124207218338363%/mnt/hdc6
磁碟解除安裝命令 umount
語法:
umount [-fn]裝置檔名或掛載點
選項與引數:
- -f :強制卸除!可用在類似網路檔案系統 (NFS) 無法讀取到的情況下;
- -n :不升級 /etc/mtab 情況下卸除。
解除安裝/dev/hdc6
[root@www ~]# umount /dev/hdc6
Linux 作業系統的檔案資料除了檔案實際內容外,通常含有非常多的屬性,例如 Linux 作業系統的檔案許可權(rwx)與檔案屬性(擁有者、群組、時間引數等)。檔案系統通常會將這兩部分的資料分別存放在不同的區塊,許可權與屬性存放在 inode 中,至於實際資料則放置到 data block 區塊中。另外,還有一個超級區塊(superblock)會記錄整個檔案系統的整體資訊,包括 inode 與 block 的總量、使用量、剩餘量等。
inode:記錄檔案的屬性,一個檔案佔用一個 inode,同時記錄此檔案的資料所在的 block。
在 Linux 中,可以使用 stat 命令檢視某個檔案的 inode 資訊:
stat /etc/passwd
linux-peanut:~/Desktop # stat /etc/passwd File:`/etc/passwd' Size: 2269 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 1149740 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-04-09 17:16:42.000000000 +0800 Modify: 2018-04-09 17:16:36.000000000 +0800 Change: 2018-04-09 17:16:36.000000000 +0800 Birth: -
可見,檔案的絕大部分資訊都儲存在 inode 中。
相關文章