Linux磁盤管理及文件系統node
一、Linux磁盤管理bash
識別硬盤設備:/dev/sd網絡
標記不一樣的硬盤設備:/dev/sd[a-z]異步
標記同一設備上的不一樣分區:/dev/sd[a-z][1-]async
1-4: 主或擴展分區標識分佈式
5+:邏輯分區標識ide
二、設備文件:特殊文件工具
設備號:佈局
major, minorflex
major: 設備類型
minor: 同一類型下的不一樣設備
「塊」:block,隨機設備
「字符」:character,線性設備
三、分區工具:
(1)fdisk, parted, sfdisk
注:最多支持在一塊硬盤上的15個分區;
fdisk工具的使用:
分區管理交互式命令:
p: 顯示
n: 建立
d: 刪除
t: 修改分區ID
l: 列出全部支持ID類型
w: 保存退出
q: 放棄修改並退出
m: 獲取幫助
(2)建立完成以後,查看內核是否已經識別新的分區:
# cat /proc/partitions
例子:
[root@localhost ~]# cat /proc/partitions major minor #blocks name 8 0 125829120 sda 8 1 512000 sda1 8 2 62423040 sda2 8 3 2097152 sda3 253 0 41447424 dm-0 253 1 10485760 dm-1 253 2 10485760 dm-2
(3)有三個命令可讓內核重讀磁盤分區表:
CentOS 5: partprobe [DEVICE]
CentOS 6,7:
partx
kpartx
partx命令:
partx DEVICE
partx -a DEVICE
partx -a -n M:N DEVICE
kpartx命令:
kpartx -af DEVICE
例子:
[root@localhost ~]# partx -a /dev/sda [root@localhost ~]# cat /proc/partitions major minor #blocks name 8 0 125829120 sda 8 1 512000 sda1 8 2 62423040 sda2 8 3 2097152 sda3 8 4 31 sda4 8 5 10488317 sda5 8 6 20980858 sda6 253 0 41447424 dm-0 253 1 10485760 dm-1 253 2 10485760 dm-2 [root@localhost ~]# ls /dev/sda sda sda1 sda2 sda3 sda4 sda5 sda6
四、Linux文件系統管理
(1)文件系統:
VFS:Virtual File System
Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap
光盤:iso9660
Windows: fat32(vfat), ntfs
Unix: ffs, ufs, jfs, jfs2
網絡文件系統:nfs, cifs
集羣文件系統:ocfs2, gfs2
分佈式文件系統:ceph,
moosefs, mogilefs, hdfs, gfs, glusterfs
(2)日誌型文件系統
非日誌型文件系統:ext2
日誌型文件系統:ext3
(3)swap:交換分區
五、建立文件系統:
在分區上執行格式化(高級格式化)
要使用某種文件系統,知足兩個條件:
內核中:支持此種文件系統
用戶空間:有文件系統管理工具
(1)建立工具:mkfs (make filesystem)
mkfs -t type DEVICE
mkfs.type DEVICE
(2)ext系列文件系統的專用管理工具:
mke2fs -t {ext2|ext3|ext4} DEVICE
-b BLOCK: 1024, 2048, 4096
-L 'LABEL': 設定卷標
(3)blkid命令:
UUID---Universally Unique Identifiers
全局惟一標識符:
blkid DEVICE
LABEL, UUID, TYPE
例子:
[root@localhost ~]# blkid /dev/sda1 /dev/sda1: UUID="dbde3019-886c-4eb3-8a79-b15825f7f929" TYPE="ext4"
六、Linux文件系統管理:
(1)建立文件系統:
mkfs, mkfs -t type = mkfs.type
ext:mke2fs
mke2fs [OPTION]... DEVICE
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L 'LABEL'
-j: mke2fs -t ext3
-i #:
-N #:
-m #: 預留磁盤空間佔據多大百分比的空間爲後期管理使用;
O FEATURE[,...]
-O ^FEATURE:關閉此特性
has_journal
(2)文件系統屬性查看及調整工具:
e2label #不影響分區中的數據
e2lable DEVICE [LABEL]
(3)顯示ext系列文件系統的屬性,或調整其屬性;
tune2fs #不影響分區中的數據
-l:顯示超級塊中的信息;顯示整個文件的屬性及佈局等相關信息;
-L 'LABEL':修改卷標;
-m #: 調整預留給管理員的管理空間百分比;
-j: ext2 --> ext3
-O:文件系統屬性的啓動或關閉
-o:文件系統默認掛載選項的啓用或關閉
(4)dumpe2fs:
-h: 僅顯示超級塊信息;
例子:
[root@localhost ~]# mke2fs -L lisir -t ext4 /dev/sda5 mke2fs 1.41.12 (17-May-2010) 文件系統標籤= 操做系統:Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655776 inodes, 2622079 blocks 131103 blocks (5.00%) reserved for the super user ........ [root@localhost ~]# tune2fs -o acl /dev/sda5 #開啓acl tune2fs 1.41.12 (17-May-2010) [root@localhost ~]# tune2fs -L lisir01 /dev/sda5 #修改卷標 tune2fs 1.41.12 (17-May-2010) [root@localhost ~]# tune2fs -l /dev/sda5 #查看分區信息 tune2fs 1.41.12 (17-May-2010) Filesystem volume name: lisir01 Last mounted on: <not available> Filesystem UUID: 1d305c60-761e-447e-b585-6c2416d13228 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: acl
七、文件系統檢測:
注:因爲硬盤常年讀寫,系統會形成系統文件損壞,致使重啓後沒法登錄到系統,fsck不只能夠對文件系統進行掃描,還能修正文件系統的一些問題。值得注意的是fsck掃描文件系統時必定要在單用戶模式、修復模式或把設備umount後進行。
(1)fsck: Filesystem check
fsck -t type
fsck.type
-a: 自動修復錯誤
-r: 交互式修復錯誤
-f: 強制檢測
(2)e2fsck:ext系列文件系統專用的檢測修復工具;
-y: 自動回答爲「yes」
f:force
(3)文件系統的掛載和使用:
kernel --> rootfs(分區)
rootfs分區:
bin, sbin, etc, lib, lib64, dev, tmp, proc, sys
/sbin/init
將額外文件系統與根文件系統某現存的目錄創建起關聯關係,進而使得此目錄作爲其它文件系統訪問 入口的行爲,稱之爲掛載;
解除此關聯關係的過程:卸載;
掛載點:mount point, 設備掛載至目錄;
注意:掛載點在掛載在以後,其內部原有的文件會被暫時隱藏;創建使用空目錄作爲掛載點;
例子:
[root@localhost ~]# fsck.ext4 -a /dev/sda5 #自動修復sda5磁盤錯誤 lisir01: clean, 11/655776 files, 79700/2622079 blocks [root@localhost ~]# fsck.ext4 -f /dev/sda5 #強制檢測磁盤sda5 e2fsck 1.41.12 (17-May-2010) 第一步: 檢查inode,塊,和大小 第二步: 檢查目錄結構 第3步: 檢查目錄鏈接性 Pass 4: Checking reference counts 第5步: 檢查簇概要信息 lisir01: 11/655776 files (0.0% non-contiguous), 79700/2622079 blocks
八、掛載方法:
mount:經過讀取/etc/mtab文件來顯示當前系統全部已經掛載的設備;
mount -a:掛載/etc/fstab文件中的全部支持自動掛載的文件系統;
mount [options] [-o options] DEVICE MOUNT_POINT
[options]:命令選項
[-o options]:掛載選項
-o 掛載選項:
async:異步模式
sync: 同步模式
atime/noatime:是否更新訪問時間戳;
diratime/nodiratime:是否更新目錄的訪問時間戳;
auto/noauto: 是否容許此設備被自動掛載;
exec/noexec:是否容許執行此文件系統上應用程序;
dev/nodev:是否支持在此設備上使用設備文件;
suid/nosuid:
remount:從新掛載
ro
rw
user/nouser: 是否容許普通掛載此設備;
acl:是否支持此設備上使用facl;
defaults:rw, suid, dev, exec, auto, nouser, and async
DEVICE: 要掛載的設備
(1) 設備文件:/dev/sda5
(2) 卷標:-L 'LABEL'
(3) UUID:-U 'UUID'
(4) 僞文件系統名稱
MOUNT_POINT: 掛載點
經常使用選項:
-t type:文件系統類型
-r: 以「只讀」方式掛載此文件系統
-w: 以「讀寫」方式掛載此文件系統
-n:每一個文件系統在掛載時都會自動更新/etc/mtab文件,-n用於禁止此功能;
此時,若是想查看掛載的全部文件系統:cat /proc/mounts
-a: 自動掛載全部支持自動掛載的設備;
-B:綁定目錄至另外一個目錄上;
umount:卸載命令
# umount DEVICE
# umount MOUNT_POINT
查看正在訪問指定掛載點的進程:
# fuser -v MOUNT_POINT
終止全部正在訪問指定的掛載點的進程:
# fuser -km MOUNT_POINT
例子:
[root@localhost ~]# umount /mydata/ umount: /mydata: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@localhost ~]# fuser -v /mydata/ 用戶 進程號 權限 命令 /mydata/: root 3764 ..c.. bash [root@localhost ~]# fuser -km /mydata/ /mydata/: 3764c [root@localhost ~]# umount /mydata/
九、交換分區:
(1)free命令:
查看memory和swap的使用狀態
-m: 以MB爲單位
-g: 以GB爲單位
(2)mkswap:建立交換分區
mkswap [option] DEVICE
-L 'LABEL'
(3)swapon:啓用交換分區
swapon [option] [DEVICE]
-a: 激活全部交換分區
-p PRIORITY: 設定其優先級;
(4)swapoff:禁用交換分區
swapoff [option] [DEVICE]
例子:
[root@localhost ~]# mkswap -L swap01 /dev/sda6 Setting up swapspace version 1, size = 20980852 KiB LABEL=swap01, UUID=3835c7ba-8b9b-4047-931c-a19eed79d7c4 [root@localhost ~]# swapon -s Filename Type Size Used Priority /dev/sda3 partition 2097148 0 -1 [root@localhost ~]# swapon -a /dev/sda6 [root@localhost ~]# swapon -s Filename Type Size Used Priority /dev/sda3 partition 2097148 0 -1 /dev/sda6 partition 20980852 0 -2 [root@localhost ~]# free -m total used free shared buffers cached Mem: 988 728 260 3 18 327 -/+ buffers/cache: 382 606 Swap: 22537 0 22537
十、文件系統等空間佔用信息的查看工個:
(1)df: disk free
-h: human-readable
-i: inode數量
-P: 以Posix兼容的格式輸出
(2)du: disk usage
-h: human-readable
-s: summary
十一、文件系統相關掛載配置文件:/etc/fstab
每行定義一個文件系統;
要掛載的設備:
設備文件、LABEL=、UUID=、僞文件系統名稱
掛載選項:
defaults、acl
轉儲頻率:
0: 不轉儲
1: 天天轉儲
2: 每隔一天轉儲
自檢次序:
0:不自檢
1:首先自檢,一般只有/才爲1
2:
...
十二、文件系統上的連接文件:
硬連接:
兩個路徑指向同一個inode
不能對目錄進行;
不能跨分區進行
指向同一個inode的多個不一樣路徑; 建立文件的硬連接會增長inode的引用計數;刪除硬連接僅是刪除 其一個訪問路徑,只到最後一個路徑被刪除;
符號連接:
連接文件的數據指向另外一個文件路徑;
能夠對目錄進行;
能夠跨分區;
指向的是另外一個文件路徑;而非inode;
對文件建立符號連接不會增長其引用計數;刪除原文件,符號連接文件也將沒法;
ln [-s] SRC DEST
-s:symbolic link
-v:verbose
例子:
[root@localhost ~]# ln -s /etc/fstab ./123 [root@localhost ~]# ll 總用量 100 lrwxrwxrwx. 1 root root 10 9月 7 15:28 123 -> /etc/fstab