回顧
{a..f}
a b c d e f
]# arr=({a..z})
]# echo ${#arr[*]}
26
]# N1=N2
]# N2=zhuchaoming
]# echo ${!N1}
eval N1=\$$N2
echo $N1
創建臨時文件
mktemp NAME.XXX
交互式登錄
/etc/profile –> /etc/profile.d/*.sh –> ~/.bash_profile –> ~/.
bashrc –> /etc/bashrc
非交互式登錄
~/.bashrc –> /etc/bashrc –> /etc/profile.d/*.sh
bashrc類的文件
本地變量、別名
profile類
環境變量、腳本
yum
creatrepo 創建倉庫
./config –perfix=/PATH/TO/SONEFILE
make
make install
CentOS 5上以柱面劃分分區,最小為8M
MBR:
fdisk
GPT: 創建完以后一定要記得同步,
gdisk
磁盤管理
設備文件
設備類型
塊設備
字符設備
設備號碼
主設備號:major number
次設備號:minor number
硬盤接口類型
并行:ide 133MB\s
scsi:640MB\s
串口:
SATA
SAS
USB
““`/dev/sd
a-z
主分區:1-3
擴展分區:4
邏輯分區:必須從5…..
硬盤結構
硬盤是后一個一個的扇區和磁道組成
扇區:一個扇區“512”字節
柱面:對應的磁道為一個柱面
簇: 兩個扇區為一個“簇”
63x512x1024x256=7.85G
使用分區空間
磁盤分區:
優點:
1、隔離系統和程序
2、安裝多個0S
3、提高修復速度
4、實現磁盤空間配額限制
5、優化I/O性能
分區
MBR
1982,,32位扇區數,分區不超過2T
GPT
支持128個分區,64位,支持8Z 64Z
MBR分區結構
GPT分區
分區管理:
blkid:、
塊設備屬性信息查看
blkid [OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
文件系統類型
分區工具fdisk和gdisk
fdisk:
創建MBR分區,也支持GPT,一塊硬盤,最多只能管理15個分區
fdisk -l[-u][device]
]# fdisk /dev/sdb \\對這塊設備進行操作
]# fdisk -l \\顯示所有的塊設備
gdisk: \\子命令跟fdisk基本相似,所以我們也可以用gdisk來管理MBR分區,但是不推薦這么管理,畢竟不同的分區用不同的管理工具更好
創建GPT分區
p \\分區列表
t \\更改分區類型
n \\創建新分區
d \\刪除分區
w \\保持并推出
q \\不保存退出
partprobe:
重新設置內存中的內核分區表
同步分區表
查看內核識別新的分區
]# cat /proc/partations
新創建的分區一般都沒有被內存識別,所有在參加完新的分區以后通知內核重新讀取硬盤分區表
新增分區用
partx -a -n M:N /dev/DEVICE
kpartx -a /dev/DEVICE -f: force
刪除分區用
partx -d -n M:N /dev/DEVICE
centos6: –nr N-M
#因為在centos6上partprobe一直存在bug所有不推薦在6上使用partprobe命令,但是在7上已經解決了這個問題
parted命令
文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,
簡稱文件系統。
? 從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,
加密等。
文件系統類型
ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
swap:交互分區
光盤:iso9660
Windows: fat32, ntfs
Unix: FFS( fast) , UFS( unix) , JFS2
網絡文件系統: NFS, CIFS
集群文件系統: GFS2, OCFS2( oracle)
分布式文件系統: ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未經處理或者未經格式化產生的文件系統
日志型文件系統:
ext3,ext4,xfs,…
非日志型文件系統:
ext2,vfat
文件系統的組成部分:
內核中的模塊: ext4, xfs, vfat
用戶空間的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虛擬文件系統: VFS
查前支持的文件系統: cat /proc/filesystems
創建文件系統
mkfs:
# mkfs.FS_TYPE /dev/DEVICE
# mkfs FS_TYPE /dev/DEVICE
FS_TYPE:
ext4
xfs
btrfs
vfat
-L 'LATEL':設定卷標
創建ext文件系統
這個命令是專門用來創建ext文件系統的命令,不要和mkfs混淆
mke2fs:
-t {ext2|ext3|ext4}
-b {1024|2048|4096}
-L ‘LABEL’
-j 相當于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # :為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小
-N #:為數據空間創建個多少個inode
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性
文件系統標簽
e2label:
管理ext系列文件系統的LABEL
# e2abel DEVICE [LABEL]
findfs:查找分區
findfs [options] LABEL=<label>
dinfs [options] UUID=<uuid>
tune2fs
tune2fs:重新設定ext系列文件系統可調整參數的值
-l: 查看指定文件系統超級塊信息; super block
-L 'LABEL': 修改卷標
-m #: 修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用, –O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
-U UUID: 修改UUID號;
dumpe2fs:
用于打印“ext2/ext3/ext4”文件系統的超級塊和快組信息
-b:打印文件系統中預留的塊信息;
-ob<超級塊>:指定檢查文件系統時使用的超級塊;
-OB<塊大小>:檢查文件系統時使用的指定的塊大小;
-h:僅顯示超級塊信息;
-i:從指定的文件系統映像文件中讀取文件系統信息;
-x:以16進制格式打印信息塊成員。
文件系統檢測和修復
常發生于死機或者非正常關機之后
掛載為文件系統標記為“ dirty”
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-a: 自動修復錯誤
-r: 交互式修復錯誤
注意: FS_TYPE一定要與分區上已經文件類型相同;
e2fsck: ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
mount
設備想要能夠被訪問就必須得掛載一個目錄下面,通過訪問這個目錄才能夠對這個行情進行操作
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點: mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
掛載點目錄一般為空
mount命令掛載文件系統
mount DEVICE DIR
通過查看/etc/mtab文件顯示當前意掛載的所有設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir
DEVICE:
1、設備文件
2、卷標
3、UUID
4、偽文件系統名稱:proc,sysfs,devtmpfs,configfs
掛載點:
事先存在,使用空目錄
進程中正在使用的設備無法被卸載
選項:
-t vsftype:指定要掛載的設備上的文件系統類型
-r:只讀掛載
-w:讀寫掛載(默認)
-n:不更新/etc/mtab,相當于#mount
-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
選項
卸載
查看掛載情況:
#findmnt MOUNT_POINT
查看正在訪問指定文件系統的進程:
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程:
# fuser -km MOUNT_POINT
卸載:
# umount DEVICE
# umount MOUNT_POINT
掛載點和/etc/fstab
在系統后保留文件系統體系
可在設置蘭使用卷標
使用mount -a 掛載/etc/fstab下的所有文件系統
/etc/fstab 每行定義一個要掛載的文件系統;
格式:
要掛載的設備或偽文件系統(設備名、卷標、UUID)、掛載點、文件系統類型、掛載選項、轉儲頻率? 自檢次數
DEVICE/dir /path/dir fstab
? 掛載選項: defaults
? 轉儲頻率: 0 :不做備份
1 :每天轉儲
2 :每隔一天轉儲
? 自檢次序: 0 :不自檢
1 :首先自檢;一般只有rootfs 才用1
SWAP分區
當系統內存空間被占滿時,系統將自動把磁盤交換分區的一部分空間用作系統內存,一般是系統內存空間的2倍
配置:
基本設置包括:
? 創建交換分區或者文件
? 使用mkswap 寫入特殊簽名
? 在 在/etc/fstab 文件中添加適當的條目
? 使用swapon -a
級別:
磁盤上啟用了很多swap分區,讓這些swap分區有先后的使用順序
1、系統自動指定一個優先級
-1~~~~~~
2、新加入的自動減一(沒有指定優先級的swap)
3、先添加的swap 的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級( 是正數) 永遠高于核心缺省指定的優先級( 是負數)。
4、分布存放,高性能磁盤存放
光盤的使用
在圖形環境下自動啟動掛載/run/media/<user>/<label>
? 否則就必須被手工掛載
mount /dev/cdrom /mnt/
? eject 命令卸載或彈出磁盤
? 創建ISO 文件
cp /dev/cdrom /root/centos7.iso
kisofs -r -o /root/etc.iso /etc
? 刻錄光盤
odim –v –eject centos.iso
掛載USB 介質
? 被內核探測為SCSI 設備
? /dev/sdaX 、/dev/sdbX 、或類似的設備文件
在圖形環境中自動掛載
? 圖標在[ 計算機] 窗口中創建
掛載在/run/media/<user>/<label>
? 手動掛載
? mount /dev/sdb1 /mnt
常見工具
? 內存空間使用狀態:
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 命令:convert and copy a file
? 用法:
dd if =/PATH/FROM/SRC of=/PATH/TO/DEST
bs=# :block size, 復制單元大小
ount=# :復制多少個bs
of=file 寫到所命名的文件而不是到標準輸出
if=file 從所命名文件讀取而不是從標準輸入
bs=size 指定塊大小(既是是ibs 也是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)
磁盤拷貝:
dd if=/dev/sda of=/dev/sdb
備份MBR: :
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破壞MBR 中的bootloader: :
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
有二進制文件 fileA, , size>2K ?,F在想從第64 個字節位置開始讀取,需要讀取的大小是128Byts 。又有fileB, 想把上面讀取到的128Bytes 寫到第32個字節開始的位置,替換128Bytes ,請問如何實現?
#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
dd if=/dev/sdx of=/dev/sdy
將本地的/dev/sdx 整盤備份到/dev/sdy
dd if=/dev/sdx of=/path/to/image
將 將/dev/sdx 全盤數據備份到指定路徑的image 文件
dd if=/dev/sdx | gzip >/path/to/image.gz
備份/dev/sdx 全盤數據,并利用gzip 工具進行壓縮,保存到指定路徑
恢復:
dd if=/path/to/image of=/dev/sdx
將備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx
將壓縮的備份文件恢復到指定盤
拷貝內存資料到硬盤
dd if=/dev/mem of=/root/mem.bin bs=1024
將內存里的數據拷貝到root 目錄下的mem.bin 文件
? 從光盤拷貝iso 鏡像
dd if=/dev/cdrom of=/root/cd.iso
拷貝光盤數據到root 文件夾下,并保存為cd.iso 文件
? 銷毀磁盤數據
dd if=/dev/urandom of=/dev/sda1
利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/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,要求此分區開機后自動掛載至/testdir目錄,且默認有acl掛載選項
2、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有磁盤設備;
(2) 如磁盤數量為1,則顯示其空間使用信息;
否則,則顯示最后一個磁盤上的空間使用信息;
演示步驟
分區啟動swap
1、fdisk /dev/sdb #創建一個分區
2、mkswap -L SWAP_SDB1 /dev/sdb1 #格式化swap
3、vim /etc/fstab #寫入/etc/fstab
LABEL=SWAP_SDB1 swap swap defaults 0 0 #格式
4、swapon -s #查看以啟用的swap
5、swapon -a #啟用現有的分區
文件啟動swap
1、dd if=/dev/zero of=/testidr/swapfile bs=1M count=1024
2.mkswap /testdir/swapfile
3.vim /etc/fstab
/testdir/swapfile swap swap defaults 0 0
4.swapon -s
5.swapon -a
刪除swap
swapoff /dev/sdb1 或swapoff /testdir/swapfile ##禁用swap分區
刪除/etc/fstab相應記錄
刪除分區和文件
創建iOS文件
cp /dev/sr0 /testdir/centos.iso
掛載iso文件
mount -o loop /testdir/centos7.iso /mnt/iso
將目錄打包成iso文件
mkisofs -r -o etc.iso /etc/
原創文章,作者:皺 多利亞,如若轉載,請注明出處:http://www.www58058.com/41447