一、作業(練習)内容:
1、複習本次課程所講的内容;
2、總結整理磁盤管理及檔案系統管理中設計的各種指令的使用,并附注一定的示例;
Linux磁盤管理
機械式
磁盤接口類型:
識别硬碟裝置:/dev/sd
标記不同的硬碟裝置:/dev/sd[a-z]
标記同一裝置上的不同分區:/dev/sd[a-z][1-]
1-4:主或擴充分區辨別
5+:邏輯分區辨別
裝置檔案:特殊檔案
裝置号:
major,
minor
major:裝置類型
minor: 同一類型下的不同裝置
“塊”:block,随機裝置
“字元”:character,線性裝置
GPT
分區:分隔存儲空間為多個小的空間,每個空間可獨立使用檔案系統;
fdisk工具的使用:
最多支援在一塊硬碟上的15個分區;
分區管理子指令:
p:顯示
n:建立
d:删除
t:修改分區ID
l:列出所有支援ID類型
w:儲存退出
q:放棄修改并退出
m:擷取幫助
建立完成之後,檢視核心是否已經識别新的分區:
#
cat /proc/partitions
有三個指令可以讓核心重讀磁盤分區表:
CentOS
5: partprobe [DEVICE]
6,7:
partx
kpartx
partx指令:
DEVICE
-a DEVICE
-a -n M:N DEVICE
M
M:
:N
kpartx指令:
-af DEVICE
檔案系統:
VFS:Virtual File System
絕對路徑:/
根檔案系統:rootfs
檔案系統挂載:
LSB:
FHS(檔案系統層級結構标準)
FHS:
/boot:引導檔案存放目錄,例如kernel(vmlinuz)、bootloader(grub, grub2);
/bin:
binary,供使用者使用的基本的指令;OS啟動即會用到程式;
/sbin:管理類的基本指令;
/lib:基本共享庫;核心子產品;
/lib64:x86_64系統的共享庫;
/etc:配置檔案目錄;
/home/USERNAME:普通用主目錄的預設位置;
/root:管理者的主目錄;
/media:便攜式移動裝置;
/mnt:臨時檔案系統挂載點;
/opt:可選目錄,第三方應用程式的預設安裝位置;
/dev:devices,裝置檔案
b:block devices,random access
c:
character deivces,linear access
/proc:
僞檔案系統;用于輸出核心與程序的相關資訊;
/sys:
僞檔案系統;
/srv:services,系統上運作服務用到中間資料;
/tmp:臨時檔案目錄;
/usr:Universal Shared,
Read-only data;
bin:保證系統提供基本功能;
sbin
lib
lib64
include:
C程式的頭檔案;header
files
share:結構化的獨立資料
doc,
man
local:現在常用的第三方程式的安裝位置;
bin
sbin
lib
lib64
etc
share
/var:variable data files
cache:應用程式緩存資料
lib:應用程式的狀态資訊資料
local:專用于為/usr/local下的應用程式存儲可變資料;
lock:鎖檔案
log:日志檔案
opt:專用于/opt
spool:應用程式的資料池;
run:運作中的程序的相關資料;通常用守護程序 的pid檔案;
/selinux
Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap
CD光牒:iso9660
Windows:
fat32(vfat), ntfs
Unix:
ffs, ufs, jfs, jfs2
網絡檔案系統:nfs, cifs
叢集檔案系統:ocfs2, gfs2
分布式檔案系統:ceph,
moosefs,
mogilefs, hdfs, gfs, glusterfs
(1)日志型檔案系統
非日志型檔案系統:ext2
日志型檔案系統:ext3
(2)
swap:交換分區
建立檔案系統:
在分區上執行格式化(進階格式化)
要使用某種檔案系統,滿足兩個條件:
核心中:支援此種檔案系統
使用者空間:有檔案系統管理工具
建立工具:mkfs (make
filesystem)
mkfs
-t type DEVICE
mkfs.type
ext系列檔案系統的專用管理工具:
mke2fs
-t {ext2|ext3|ext4} DEVICE
-b
BLOCK: 1024, 2048, 4096
-L
'LABEL': 設定卷标
blkid指令:
blkid
LABEL,
UUID, TYPE
Linux檔案系統管理:
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
檔案系統屬性檢視及調整工具:
e2label
e2lable
DEVICE [LABEL]
tune2fs
顯示ext系列檔案系統的屬性,或調整其屬性;
-l:顯示超級塊中的資訊;顯示整個檔案的屬性及布局等相關資訊;
'LABEL':修改卷标;
#: 調整預留給管理者的管理空間百分比;
ext2 --> ext3
-O:檔案系統屬性的啟動或關閉
-o:檔案系統預設挂載選項的啟用或關閉
dumpe2fs:
-h:僅顯示超級塊資訊;
檔案系統檢測:
fsck:
Filesystem check
fsck
-t type
fsck.type
-a:自動修複錯誤
-r:互動式修複錯誤
-f:強制檢測
e2fsck:ext系列檔案系統專用的檢測修複工具;
-y:自動回答為“yes”
-f:force
檔案系統的挂載和使用:
kernel
--> rootfs(分區)
rootfs分區:
bin,
sbin, etc, lib, lib64, dev, tmp, proc, sys
/sbin/init
将額外檔案系統與根檔案系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它檔案系統通路入口的行為,稱之為挂載;
解除此關聯關系的過程:解除安裝;
挂載點:mount point, 裝置挂載至目錄;
注意:挂載點在挂載在之後,其内部原有的檔案會被暫時隐藏;建立使用空目錄做為挂載點;
挂載方法:
mount:通過讀取/etc/mtab檔案來顯示目前系統所有已經挂載的裝置;
mount
-a:挂載/etc/fstab檔案中的所有支援自動挂載的檔案系統;
[options] [-o options] DEVICE MOUNT_POINT
[options]:指令選項
[-o
options]:挂載選項
DEVICE:要挂載的裝置
(1)裝置檔案:/dev/sda5
(2)卷标:-L
(3)
UUID:-U
'UUID'
(4)僞檔案系統名稱
MOUNT_POINT:挂載點
常用選項:
-t
type:檔案系統類型
-r:以“隻讀”方式挂載此檔案系統
-w:以“讀寫”方式挂載此檔案系統
-n:每個檔案系統在挂載時都會自動更新/etc/mtab檔案,-n用于禁止此功能;
此時,如果想檢視挂載的所有檔案系統:cat
/proc/mounts
-a:自動挂載所有支援自動挂載的裝置;
-B:綁定目錄至另一個目錄上;
-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
umount:解除安裝指令
umount DEVICE
umount MOUNT_POINT
檢視正在通路指定挂載點的程序:
#
fuser -v MOUNT_POINT
終止所有正在通路指定的挂載點的程序:
fuser -km MOUNT_POINT
交換分區:
free指令:
檢視memory和swap的使用狀态
-m:以MB為機關
-g:以GB為機關
mkswap:建立交換分區
mkswap
[option] DEVICE
-L
'LABEL'
swapon:啟用交換分區
swapon
[option] [DEVICE]
-a:激活所有交換分區
-p
PRIORITY: 設定其優先級;
swapoff:禁用交換分區
swapoff
檔案系統等空間占用資訊的檢視工個:
df:
disk free
-h:
human-readable
-i:
inode數量
-P:以Posix相容的格式輸出
du:
disk usage
-s:
summary
檔案系統相關挂載配置檔案:/etc/fstab
每行定義一個檔案系統;
要挂載的裝置或僞檔案系統 挂載點 檔案系統類型 挂載選項 轉儲頻率 自檢次序
要挂載的裝置:
裝置檔案、LABEL=、UUID=、僞檔案系統名稱
挂載選項:
defaults
轉儲頻率:
0: 不轉儲
1: 每天轉儲
2: 每隔一天轉儲
自檢次序:
0:不自檢
1:首先自檢,通常隻有/才為1
2:
...
檔案系統上的連結檔案:
硬連結:
兩個路徑指向同一個inode
不能對目錄進行;
不能跨分區進行
指向同一個inode的多個不同路徑; 建立檔案的硬連結會增加inode的引用計數;删除硬連結僅是删除其一個通路路徑,隻到最後一個路徑被删除;
符号連結:
連結檔案的資料指向另一個檔案路徑;
可以對目錄進行;
可以跨分區;
指向的是另一個檔案路徑;而非inode;
對檔案建立符号連結不會增加其引用計數;删除原檔案,符号連結檔案也将無法;
ln
[-s] SRC DEST
-s:symbolic link
-v:verbose
3、建立一個10G的檔案系統,類型為ext4,要求開機可自動挂載至/mydata目錄
[root@localhost ~]# fdisk -l
Disk /dev/sda: 128.8 GB, 128849018880
bytes
255 heads, 63 sectors/track, 15665
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: 0x0005f700
Device Boot Start End Blocks
Id System
/dev/sda1 *
1 26 204800
83 Linux
Partition 1 does not end on cylinder
boundary.
/dev/sda2 26 7675
61440000 83 Linux
/dev/sda3 7675 7936
2097152 82 Linux swap / Solaris
Disk /dev/sdb: 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: 0x00000000
這裡發現有一個硬碟
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS
partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk
identifier 0x88371439.
Changes will remain in memory only,
until you decide to write them.
After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of
partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is
deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility
flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS
partition table
p print the partition table
q quit without saving changes
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)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G}
(1-2610, default 2610): +10G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition
table.
Syncing disks.
[root@localhost ~]# cat /proc/partitions
major minor #blocks
name
8 0 125829120 sda
8 1 204800 sda1
8 2 61440000 sda2
8 3 2097152 sda3
8 16 20971520 sdb
8 17 10490413 sdb1
[root@localhost ~]#
接下來格式化,并且指定類型為ext4
[root@localhost ~]# mkfs -t ext4
/dev/sdb1
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
655776 inodes, 2622603 blocks
131130 blocks (5.00%) reserved for the
super user
First data block=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments
per group
8096 inodes per group
Superblock backups stored on blocks:
32768,
98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem
accounting information: done
This filesystem will be automatically
checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
然後在根目錄下建立mydata目錄,并使用mount指令挂載分區
[root@localhost ~]# mkdir /mydata -----建立目錄
[root@localhost ~]#
[root@localhost ~]# mount -o auto /dev/sdb1
/mydata -o auto表示此分區允許自動挂載
[root@localhost ~]# df -Th
Filesystem Type
Size Used Avail Use% Mounted on
/dev/sda2 ext4
58G 3.4G 52G
7% /
tmpfs tmpfs
491M 0 491M
0% /dev/shm
/dev/sda1 ext4
190M 36M 145M
20% /boot
/dev/sdb1 ext4
9.8G 23M 9.3G
1% /mydata
[root@localhost ~]#
[root@localhost ~]# blkid /dev/sdb1 ---使用blkid指令檢視該分去的UUD,并把該值複制下來
/dev/sdb1: UUID="c48ea605-b1d7-4585-aeb8-e6918ea4e77a" TYPE="ext4"
[root@localhost ~]#
[root@localhost ~]# vi /etc/fstab
# /etc/fstab
# Created by anaconda on Wed Aug 19
18:07:26 2015
#
# Accessible filesystems, by reference,
are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8),
mount(8) and/or blkid(8) for more info
#
UUID=628caa97-3e69-481c-95ed-13acc4721bec
/ ext4 defaults 1 1
UUID=f7eb501a-f2d6-4b95-bf68-b4a616f3d992
/boot ext4 defaults 1 2
UUID=511653fb-e927-4f78-bac9-c2d349484467
swap swap defaults 0 0
UUID="c48ea605-b1d7-4585-aeb8-e6918ea4e77a"
/mydata ext4 defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
[root@localhost ~]# mount -a
[root@localhost ~]#
[root@localhost ~]# df -Th
Filesystem Type
Size Used Avail Use% Mounted on
/dev/sda2 ext4
58G 3.4G 52G
7% /
tmpfs tmpfs
491M 0 491M
0% /dev/shm
/dev/sda1 ext4
190M 36M 145M
20% /boot
/dev/sdb1 ext4
9.8G 23M 9.3G
1% /mydata
[root@localhost ~]#