文件系統的使用:
首先要“掛載”:mount命令和umount命令
根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此管理操作即為“掛載”,此目錄為“掛載點”
掛載點:MOUNT_POINT,用于作為另一個文件系統的訪問入口
(1)事先存在
(2)應該使用未被其他進程使用的目錄,否則該目錄下的數據會被覆蓋掉
mount命令:
掛載方法:# mount DEVICE MOUNT_POINT
mount [-fnrsvw] [-t vfstype] [-o options] device dir
mount:通過查看/etc/mtab 文件顯示當前已掛載的所有設備
-t vsftype:指定要掛載的設備上的文件系統類型
-r:readonly,只讀掛載
-w:read and write,讀寫掛載
-n:默認情況下,掛載或卸載的操作會同步更新到/etc/mtab文件中,-n用于禁用此特性
-a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)
-L 'LABEL':以卷標指定掛載設備
-U 'UUID':以UUID指定要掛載的設備
-B, –bind:掛載一個目錄到另一個目錄上
-o options:掛載選項,多個選項使用逗號分隔
async/sync:異步模式/同步模式, 內存更改時,同時寫磁盤
atime/noatime:目錄或文件被訪問時是否更新時間戳
diratime/nodiratime:目錄被訪問時是否更新時間戳
auto/noauto:是否支持自動掛載, 是否支持-a選項
exec/noexec:是否允許運行此設備上的程序
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:是否支持suid和sgid權限
remount:重新掛載
ro:只讀
rw:讀寫
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
acl:啟用此文件系統上的acl功能
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
mount掛載,后面的選項會覆蓋前面的選項,比如-o指定了acl,noacl,acl會被后面的覆蓋
查看系統已掛載的設備:
# mount
# cat /etc/mtab
# cat /proc/mounts
[root@CentOS6 boot]# ls /mnt //未掛載前的mnt目錄 hgfs [root@CentOS6 boot]# mount /dev/sda7 /mnt [root@CentOS6 boot]# ls /mnt //掛載后的mnt目錄 lost+found [root@CentOS6 boot]# mount //查看當前系統的所有掛載 /dev/sda2 on / type ext4 (rw) ...... /dev/sda6 on /home type ext4 (rw,usrquota,grpquota) /dev/sda7 on /mnt type ext4 (rw) [root@CentOS6 mnt]# df //查看當前文件系統 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 50264772 11230716 36474056 24% / ...... /dev/sda7 10290483 3856 9762107 1% /mnt [root@CentOS6 boot]# mount -o remount,rw,acl /mnt //重新掛載,并讓磁盤支持acl [root@CentOS6 boot]# mount //查看磁盤是否支持acl /dev/sda2 on / type ext4 (rw) ...... /dev/sda6 on /home type ext4 (rw,usrquota,grpquota) /dev/sda7 on /mnt type ext4 (rw,acl) [root@CentOS6 boot]# cd /mnt //進入磁盤內,驗證是否支持acl [root@CentOS6 mnt]# ls lost+found [root@CentOS6 mnt]# touch a [root@CentOS6 mnt]# setfacl -m u:gao:rwx a [root@CentOS6 mnt]# getfacl a # file: a # owner: root # group: root user::rw- user:gao:rwx //添加了acl控制 group::r-- mask::rwx other::r--
掛載光盤:(光盤為只讀)
# mount -r /dev/cdrom MOUNT_POINT
光盤設備文件:/dev/cdrom ,/dev/ded
掛載U盤:事先識別的U盤的設備文件
掛載本地的回環設備(或.iso的文件):
# mount -o loop /path/to/some_loop_file(.iso文件) MOUNT_POINT
umount命令:
卸載時:可使用設備,也可以使用掛載點
umount DEVICE|DIR
注意:正在被訪問的掛載點無法被卸載:
查看被那個或那些進程所占用:
# lsof MOUNT_POINT
# fuser -v MOUNT_POINT
終止所有正在訪問某掛載點的進程:
# fuser -km MOUNT_POINT
[root@CentOS6 ~]# umount /mnt umount: /mnt: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) [root@CentOS6 ~]# fuser -v /mnt USER PID ACCESS COMMAND /mnt: root 5912 ..c.. bash [root@CentOS6 ~]# fuser -km /mnt /mnt: 5912c [root@CentOS6 ~]# umount /mnt [root@CentOS6 ~]# ls /mnt hgfs
補充:
swap文件系統:
liunx上的交換分區必須使用獨立的文件系統,且文件系統的System ID必須為82
查看為當前系統提供swap分區的磁盤
cat /proc/swaps
創建swap設備:mkswap命令
mkswap [OPTIONGS] device
-L LABEL:指明卷標
-f:強制
交互分區的的啟用和禁用:
啟用:swapon
swapon [OPTION] [DEVICE]
-a:啟用所有定義在/etc/fstab中的所有swap設備
-p PRIORITY:指定優先級
-s:查看當前生效的swap分區是那些磁盤提供
禁用:swapoff
swapoff DEVICE
swap的優先級:
用戶可以給某個swap 指定一個0 到32767 的優先級
如果用戶沒有指定,那么核心會自動給swap 指定一個優先級,這個優先級從-1 開始,每加入一個新的沒有用戶指定優先級的swap ,會給這個優先級減一
先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級( 是正數) 永遠高于核心缺省指定的優先級(是負數)
優化性能:分布存放,高性能磁盤存放
[root@CentOS6 ~]# fdisk /dev/sda //創建一個新的分區 ..... [root@CentOS6 ~]# mkswap /dev/sda8 //格式化為/swap分區 Setting up swapspace version 1, size = 2104476 KiB no label, UUID=d77d8cc5-1c35-491d-a1ce-ea07e87e3723 [root@CentOS6 ~]# swapon -s //查看當前生效的swap分區是那些磁盤提供 FilenameTypeSizeUsedPriority /dev/sda5 partition40959960-1 [root@CentOS6 ~]# free //查看當前磁盤的虛擬內存 total used free shared buffers cached Mem: 1004136 709120 295016 2596 125484 218492 -/+ buffers/cache: 365144 638992 Swap: 4095996 0 4095996 [root@CentOS6 ~]# swapon /dev/sda8 [root@CentOS6 ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda5 partition40959960-1 /dev/sda8 partition21044760-2 [root@CentOS6 ~]# swapoff /dev/sda8 [root@CentOS6 ~]# swapon -p 100 /dev/sda8 //設定優先級 [root@CentOS6 ~]# swapon -s FilenameTypeSizeUsedPriority /dev/sda5 partition40959960-1 /dev/sda8 partition21044760100 [root@CentOS6 ~]# free //查看當前磁盤的虛擬內存 total used free shared buffers cached Mem: 1004136 710212 293924 2596 125488 218460 -/+ buffers/cache: 366264 637872 Swap: 6200472 0 6200472
文件掛載配置文件;
除根文件系統之外的其他文件系統能夠開機時自動掛載:需配置/etc/fstab文件
每行定義了一個要掛載的文件系統及相關屬性
/etc/fstab文件中共6個字段:
(1)要掛載的設備或偽文件系統
設備名
LABEL
UUID
偽文件系統:如sysfs ,proc ,tmpfs等
(2)掛載點
swap類型的設備的掛載點為swap
(3)文件系統類型
(4)掛載選項
defaults:使用默認掛載選項
如果要同時指明多個掛載選項,彼此間用逗號隔開
defaults,acl,noatime,noexec
(5)轉儲頻率
0:從不備份
1:每天備份
2:每隔一天備份
(6)自檢次序
0:從不自檢
1:首先自檢,通常只能是根文件系統可用1
2:次級自檢
[root@CentOS6 ~]# cat /etc/fstab .... # /etc/fstab .... UUID=d0e29042-dd4b-4e0f-a880-e6c5ae2ef4ab / ext4 defaults 1 1 .... /dev/cdrom/media/cdromiso9660defaults0 0 //掛載光盤 UUID="1bd3fc94-ad93-426b-93de-50220e402fc0" /home ext4 defaults,usrquota,grpquota0 0 //用UUID掛載 /dev/sda8 swapswapdefaults0 0 //掛載swap分區
磁盤管理常見工具:
內存空間使用狀態:
free [OPTION]
-m: 以MB 為單位
-g: 以GB 為單位
文件系統空間占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000 為單位
-T 文件系統類型
-h: human-readable
-i :inodes instead of blocks
-P: 以Posix 兼容的格式輸出
查看某目錄總體空間占用狀態:
du [OPTION]… DIR
-h: human-readable
-s: summary
dd 命令:
dd – convert and copy a fil
dd OPTION
用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST [options]
[options]:
bs=#:block size, 復制單元大小
count=#:復制多少個bs
of=file:輸出數據路徑
if=file:輸入數據路徑
bs=size 指定塊大?。仁莍bs,也是obs)
ibs=size:一次讀size個byte
obs=size:一次寫size個byte
cbs=size:一次轉化size個byte
skip=blocks:從開頭忽略blocks個ibs大小的塊
seek=blocks:從開頭忽略blocks個obs大小的塊
count=n:拷貝n次
conv=conversion[,conversion…]:用指定的參數轉換文件
轉換參數:
ascii:轉換EBCDIC為ASCII
ebcdic:轉換ASCII為EBCDIC
block:轉換為長度為cbs的記錄,不足部分用空格填充。
unblock:替代cbs長度的每一行尾的空格為新行
lcase:把大寫字符轉換為小寫字符
ucase:把小寫字符轉換為大寫字符
swab:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出文件。
sync:把每個輸入塊填充到ibs個字節,不足部分用空(NUL)
常見用法:
備份:
備份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
將本地的/dev/sdx整盤備份到/dev/sdy
dd if=/dev/sdx of=/dev/sdy
將/dev/sdx全盤數據備份到指定路徑的image文件
dd if=/dev/sdx of=/path/to/image
備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑
dd if=/dev/sdx | gzip >/path/to/image.gz
破壞MBR中的bootloader:
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
恢復:
將備份文件恢復到指定盤
dd if=/path/to/image of=/dev/sdx
將壓縮的備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx
拷貝內存資料到硬盤:
將內存里的數據拷貝到root目錄下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024
從光盤拷貝iso鏡像:
拷貝光盤數據到root文件夾下,并保存為cd.iso文件
dd if=/dev/cdrom of=/root/cd.iso
銷毀磁盤數據:
利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/dev/sda1 將無法掛載,創建和拷貝操作無法執行。
dd if=/dev/urandom of=/dev/sda1
得到最恰當的磁盤block size:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size
測試硬盤讀寫速度:
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度
修復硬盤:
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1,2年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的
作業:
1、創建一個2G的文件系統,塊大小為2048byte,預留1%可用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/test目錄,且默認有acl掛載選項
[root@CentOS6 ~]# fdisk /dev/sda ...... Command (m for help): n First cylinder (11160-26109, default 11160): Using default value 11160 Last cylinder, +cylinders or +size{K,M,G} (11160-26109, default 26109): +2G //添加一個2G的磁盤 Command (m for help): p ...... Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux ...... /dev/sda9 11160 11421 2104483+ 83 Linux Command (m for help): w ...... [root@CentOS6 ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 ...... error adding partition 8 [root@CentOS6 ~]# mke2fs -t ext4 -b 2048 -L TEST /dev/sda9 mke2fs 1.41.12 (17-May-2010) Filesystem label=TEST OS type: Linux Block size=2048 (log=1) ...... [root@CentOS6 ~]# blkid /dev/sda9 /dev/sda9: LABEL="TEST" UUID="8e615a71-5589-4cc7-a175-0bf068e3702d" TYPE="ext4" [root@CentOS6 ~]# mkdir /test [root@CentOS6 ~]# vim /etc/fstab
2、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有磁盤設備
(2) 如磁盤數量為1,則顯示其空間使用信息
否則,則顯示最后一個磁盤上的空間使用信息
#!/bin/bash #description #version 0.1 #author gaomeng #date 20160827 # disk=`lsblk | grep "^sd" | tail -1 | cut -d" " -f1` fdisk -l /dev/$disk
[root@CentOS6 bin]# lsblk | grep "^sd" sda 8:0 0 200G 0 disk sdb 8:16 0 20G 0 disk [root@CentOS6 bin]# bash disk.sh 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
原創文章,作者:megedugao,如若轉載,請注明出處:http://www.www58058.com/40936
文章內容完整,思路清晰,理論和實踐相結合,具有很強的操作性,整體下來讀者能學到很多知識。