1、設備文件
設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
設備號碼:
主設備號major number,標識設備類型
次設備號minor number,標識同一類型下的不同設備
[root@localhost ~]# ll /dev/sd*
brw-rw—-. 1 root disk 8, 0 Aug 25 09:04 /dev/sda
brw-rw—-. 1 root disk 8, 1 Aug 25 09:04 /dev/sda1
brw-rw—-. 1 root disk 8, 2 Aug 25 09:04 /dev/sda2
其中8是主設備號,0/1/2分別是次設備號
2、硬盤存儲術語
head:磁頭
track:磁道
cylinder: 柱面
secotr: 扇區,512bytes
整個磁盤:512*63*1024*256=一個磁道63個扇區,一個盤片盤面1024個磁道,256個磁頭即是256個盤面
一個柱面:512*63*256
Centos6.8是按柱面為單位劃分分區
centos7.2是按照扇區為單位劃分分區大小,但用命令fdisk的-u=cylinders選項可查按柱面為單位分區情況
3、MBR分區
1)、MBR: Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T,按柱面進行分區
0磁道0扇區:512bytes
446bytes: boot loader主引導程序引導啟動
64bytes: 分區表,其中16bytes標識一個分區(擴展分區下的每個邏輯分區前都有一個扇區EBR)
2bytes: 55aa 結束標示位,表示這是一個主引導記錄,沒有55aa表示沒有分區表,是個裸盤
2)、MBR的數據備份
[root@localhost ~]# echo "- – -">/sys/class/scsi_host/host2/scan 添磁盤后觸發磁盤生成-例lsblk可查
[root@centos7 ~]# hexdump -C -n 512 /dev/sda 查看磁盤a的最前512個字節的信息
[root@localhost ~]# dd if=/dev/sdb of=/root/mbrb bs=1 count=512 備份b磁盤的MBR信息
[root@localhost ~]# dd if=/root/mbrb of=/dev/sdb 恢復b磁盤的MBR信息
[root@localhost ~]# dd if=/root/mbrb of=/dev/sdc
若b磁盤中擴展分區里面有邏輯分區,那么邏輯分區的信息不能恢復給c磁盤
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=446
其是b磁盤中最前面MBR的446個字節數據被零覆蓋,但是b磁盤的分區表因是由接下來的64個字節決定,所以其分區表信息并沒有被破壞
[root@localhost ~]# dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446
跳過/dev/sdb文件開頭的446個字節用零覆蓋后續的64個字節,清除了b磁盤的分區表信息
4、GPT分區
GPT:GUID patition table 支持128個分區,使用64 位扇區,支持8Z、64Z
使用128 位UUID表示磁盤和分區
GPT分區表自動備份在頭和尾兩份,并有CRC 校驗位
EFI部分又可以分為4個區域:EFI信息區(GPT頭)、分區表、GPT分區、備份區域
UEFI (統一擴展固件接口) 硬件支持GPT
5、管理分區
1)、列出塊設備:
#lsblk
#ls /dev/sd*
#car /proc/partitions
以上查看內存中識別的已經生效的分區信息,而不是磁盤上已進行的分區信息
#fdisk -l 查看磁盤上的分區情況而不是內存中的已生效的分區情況
2)、創建分區:
fdisk 創建MBR分區,也支持GPT ,對于一塊硬盤最多只能管理15 分區
gdisk 創建GPT分區
parted 高級分區操作(創建、復制、調整大小等等),非交互式分區工具,實時生效的,使用上小心
#fdisk /dev/sdb
#gfisk /dev/sdb
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
w 保存并退出
q 不保存退出
parted命令
用法:parted [ 選項]… [設備 [命令 [ 參數]…]…]
parted /dev/sdb mklabel gpt|msdos
指定磁盤標簽也即分區表是GPT格式還是msdos格式
parted /dev/sdb print
查看b磁盤的分區情況
parted /dev/sdb mkpart primary 1 200
其中的1 200是指分區大小從1M-200M
parted /dev/sdb rm 1
刪除b磁盤上1號分區
parted –l 相當于fdisk -l
3)、通知內核重新讀取硬盤分區表
新增分區同步(但是新磁盤的新增分區信息會自動更新進入內存,不用再使用以下命令更新)
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE -f
刪除分區同步,要指定刪除要同步的分區號
centos6:
partx -d –nr N-M /dev/DEVICE
CentOS 5,7:增刪同步都使用#partprobe [/dev/DEVICE]
6、文件系統
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構,即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取、安全控制、日志、壓縮、加密等。
1)、文件系統類型:
Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs(oracle), reiserfs, jfs(AIX ), swap
swap:交換分區文件系統
光盤的文件系統:iso9660
Centos5中使用的是ext3,centos6中使用的是ext4,而centos7使用的是xfs
Windows:fat32, ntfs
Unix: FFS(fast), UFS(unix), JFS2
網絡文件系統:NFS, CIFS
集群文件系統:GFS2, OCFS2(oracle)
分布式文件系統:ceph, moosefs, mogilefs, glusterfs,Lustre
RAW:未經處理或者未經格式化產生的文件系統
2)、文件系統分類:
根據其是否支持"journal" 功能:
日志型文件系統: ext3, ext4, xfs, …
非日志型文件系統: ext2, vfat
根據文件系統的組成部分:
內核中的模塊:ext4, xfs, vfat
用戶空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat
Linux的虛擬文件系統:VFS,介于用戶與各種真實文件系統之間,便于開發人員開發各種軟件程序
查看當前系統支持的文件系統:cat /proc/filesystems
文件系統選擇:要考慮文件系統的支持分區種類,例如是否支持root分區、boot分區等等,還有就是支持的分區大小限制等等,其中ext4文件系統兼容ext3和ext2
7、創建文件系統
mkfs 命令:
# mkfs.FS_TYPE /dev/DEVICE
# mkfs -t FS_TYPE /dev/DEVICE
#mkfs -L 'LABEL' /dev/DEVICE 設定卷標
ext4
xfs
btrfs
vfat 此文件系統相對比較簡單
[root@localhost ~]# mkfs -t vfat /dev/sdc3
mkfs.vfat 3.0.9 (31 Jan 2010)
[root@localhost ~]# blkid
/dev/sdc3: UUID="3004-B6E2" TYPE="vfat"
[root@localhost ~]# mkdir /mnt/sdc3
[root@localhost ~]# mount /dev/sdc3 /mnt/sdc3
[root@localhost ~]# df
[root@localhost ~]# cd /mnt/sdc3
[root@localhost sdc3]# touch fi
[root@localhost sdc3]# echo xxx>fi
[root@localhost sdc3]# ll
total 4
-rwxr-xr-x. 1 root root 4 Aug 28 17:58 fi 普通文件自動加上執行權限
[root@localhost sdc3]# cat fi
xxx
[root@localhost sdc3]# cat FI 不區分大小寫
xxx
[root@localhost sdc3]# tune2fs -l /dev/sdc3
tune2fs 1.41.12 (17-May-2010)
tune2fs: Bad magic number in super-block while trying to open /dev/sdc3
Couldn't find valid filesystem superblock.
8、創建ext文件系統,只支持ext系列文件系統,但是其選項與mkfs通用
mke2fs:ext系列文件系統專用管理工具
#mke2fs /dev/sdb1 默認格式化/dev/sdb1為ext2文件系統
-t {ext2|ext3|ext4} 創建ext3,在blkid命令顯示中有點不同于其他文件系統類型
-L 'LABEL' 卷標建議設定為掛載點
[root@localhost ~]# mke2fs -t ext3 -L "/mnt/sdc2" /dev/sdc2
[root@localhost ~]# blkid
/dev/sdc2: LABEL="/mnt/sdc2" UUID="510ba083-c8a2-4e21-8d8c-b5b192029377" SEC_TYPE="ext2"TYPE="ext3"
-j: 相當于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-b {1024|2048|4096} 只能選擇左三種值之一設定塊大小,塊是存儲文件的最小單位,塊是分組管理的(就像公司比較大,要分部門、職能管理是一個道理,主要是為了便于管理數據),每個分區的第一個塊是為超級塊,超級塊存儲文件系統的元數據比如文件系統的塊大小、各個塊組的起始位置等等,超級塊信息在創建文件系統時自動備份多份
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
#mk2fs -t ext4 -b 1024 /dev/sdb1
-i #:為數據空間中每多少字節創建一個inode(每個文件唯一性的數字編號,inode數量應該適當,每個inode指定其標記文件的元數據信息);此大小不應該小于block的大小,大小范圍為128-4096且為128的整數倍
#mkfs.ext4 -i 1024 /dev/sdb1 指定每1024個字節創建一個inode
-N #:為數據空間創建個多少個inode
#mkfs.ext4 -N 40363 /dev/sdb1 為分區/dev/sdb1指定了40363個inode
-m #:默認5%, 為管理人員預留空間占總空間的百分比
-O FEATURE[,…]:啟用指定特性
-O ^FEATURE:關閉指定特性,例如has_journal日志功能
8、文件系統標簽-指向設備的與設備無關另一種方法
blkid:塊設備屬性信息查看,即是塊設備的標簽、uuid、文件系統類型等等信息
blkid [OPTION]… [DEVICE]
-U UUID: 根據指定的UUID來查找對應的設備
-L LABEL:根據指定的LABEL來查找對應的設備
e2label:管理ext系列文件系統的LABEL,即是給ext系列文件系統添加或者查看其標簽
# e2label DEVICE [LABEL] 加卷標或者查看卷標
# e2label /dev/sdb1 查看卷標
# e2label /dev/sdb1 /mnt/sdb1 加卷標
findfs:查找指定的LABEL或者UUID對應的分區
#findfs [options] LABEL=<label>
#findfs [options] UUID=<uuid>
[root@localhost ~]# findfs UUID=510ba083-c8a2-4e21-8d8c-b5b192029377
/dev/sdc2
9、tune2fs命令-重新設定ext系列文件系統可調整參數的值
-l:查看指定文件系統超級塊信息super block
#tune2fs -l /dev/sdc2
[root@localhost ~]# tune2fs -l /dev/sdc2
tune2fs 1.41.12 (17-May-2010)
Filesystem volume name: /mnt/sdc2
Last mounted on: <not available>
Filesystem UUID: 510ba083-c8a2-4e21-8d8c-b5b192029377
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 197600
Block count: 789193
Reserved block count: 39459為管理人員預留空間占總空間百分之五,以防數據空間用完,管理員無法管理
Free blocks: 759222
Free inodes: 197589
First block: 0
Block size: 4096
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 7904
Inode blocks per group: 494
Filesystem created: Sun Aug 28 16:53:19 2016
Last mount time: n/a
Last write time: Sun Aug 28 16:53:20 2016
Mount count: 0 命令可以掛載,開機也會自動掛載一次,其中-C選項可以更改當前掛載次數
Maximum mount count: 29 掛載次數達到最大掛載次數后,文件系統自檢,其中-c可以更改最大掛載次數
Last checked: Sun Aug 28 16:53:19 2016
Check interval: 15552000 (6 months)
Next check after: Fri Feb 24 16:53:19 2017
First inode: 11
Inode size: 256
Journal inode: 8
-L 'LABEL':修改卷標
-U UUID: 修改UUID號
-m #:修預留給管理員的空間百分比
-j: 將ext2升級為ext3
-O: 文件系統屬性啟用或禁用,–O ^has_journal
-o: 調整文件系統的默認掛載選項,–o ^acl
(Centos7.2在創建文件系統時自動有acl功能;但是Centos6需要手動加acl功能,但是若掛載后則要重新掛載才能生效)
#tune2fs -o user_xattr /dev/sdb1
#tune2fs -o acl /dev/sdb1
dumpe2fs:
#dumpe2fs /dev/sdb1 查看sdb1分區的超級塊、超級塊備份及塊組信息
-h:查看超級塊信息
10、文件系統檢測和修復,但是物理磁盤的損壞不能修復-文件系統損壞常發生于死機或者非正常關機之后
文件系統破壞時,查看超級塊信息,其中文件系統狀態標記為“dirty”或者“no clean”
fsck: File System Check
fsck.FS_TYPE DEVICE
#fsck /dev/sdb1
#fsck.ext4 /dev/sdb1
fsck -t FS_TYPE DEVICE
-a: 自動修復錯誤
-r: 交互式修復錯誤
注意: FS_TYPE 一定要與分區上已經文件類型相同
e2fsck: ext系列文件專用的檢測修復工具
-y:自動回答為yes
-f:強制修復
11、掛載mount–只有管理員有權限執行,臨時掛載
掛載:將額外文件系統與根文件系統某現存目錄建立起關聯關系,進而使得此目錄作為其訪問入口的行為
卸載:解除此關聯關系的過程
掛載點目錄下原有文件在掛載完成后會被臨時隱藏,所以掛載點目錄一般要為空
掛載方法:mount DEVICE MOUNT_POINT
此掛載后,/etc/mtab默認更新,如下:
#mount通過查看/etc/mtab 文件顯示當前已掛載的所有設備,包括掛載的選項也能看到
也即是#mount與#cat /etc/mtab等價
此外應用#cat /proc/mounts也可以查看到已掛載設備及掛載選項,因為其查看的是內核追蹤到的掛載
mount [-fnrsvw] [-t vfstype] [-o options] device dir
其中device指明要掛載的設備,如下:
(1)設備文件:例如/dev/sda5
(2)卷標:-L 'LABEL', 如 例如 -L 'MYDATA'
(3)UUID, -U 'UUID'如 :例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
(4)偽文件系統名稱:proc, sysfs, devtmpfs, configfs
例如#mount tmpfs /dev/shm
dir:掛載點
事先存在,建議使用空目錄,否則掛載點目錄下原有文件在掛載完成后會被臨時隱藏
進程正在使用中的設備無法被卸載
mount 常用命令選項:
-t vsftype :指定要掛載的設備上的文件系統類型
-r: readonly,只讀方式掛載,若果認為一些磁盤很重要只能讀不能改寫,就可以這樣設置
-w: read and write, 讀寫方式掛載,其實默認掛載就是可讀可寫掛載
-n: 不更新/etc/mtab,相當于不更新#mount
且#df也不顯示掛載信息,但是#cat /proc/mounts可以查看本次掛載設備
-L 'LABEL':以卷標指定掛載設備
-U 'UUID':以UUID 指定要掛載的設備
-B, –bind:綁定目錄到另一個目錄上
[root@localhost ~]# mount -B /testdir/b1 /mnt/b1
-a:自動掛載所有支持自動掛載的設備( 定義在了/etc/fstab文件中,且掛載選項中有auto 功能)
-o options:( 掛載文件系統的選項),多個選項使用逗號分隔,但是都是臨時有效的,除非寫入/ect/fstab中
async:異步模式
sync:同步模式, 內存更改時,同時寫磁盤,可避免數據丟失,但是服務器性能下降
atime/noatime:包含目錄和文件
atime時間更新的兩種情況:查看已經一天以上或者mtime時間較atime時間離當前更近
diratime/nodiratime:只對目錄的訪問時間戳
auto/noauto:是否支持自動掛載, 配合-a 選項使用
exec/noexec:是否支持在此文件系統上運行應用程序,例如此文件系統上的fi.sh是否可以運行;當U盤等外來設備掛載時可以使用該選項,防止非法程序的運行,減免風險
dev/nodev:是否支持在此文件系統上使用設備文件
suid/nosuid:不否支持suid 和sgid 權限,默認nosuid
remount:重新掛載使掛載選項生效
#mount -o remount /dev/sdb1
#mount -o ro,acl remount /dev/sdb1
ro:只讀
rw:讀寫
#mount –o ro,remount /dev/sdc3 /mnt/sdc3
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
acl/noacl:啟用或者禁用此文件系統上的acl功能
Defaults:相當于rw, suid, dev, exec, auto, nouser, async
13、卸載命令
1)、查看掛載情況
#findmnt MOUNT_POINT
2)、查看正在訪問指定文件系統的進程
#lsof MOUNT_POINT
#fuser -v MOUNT_POINT
3)、終止所有在正訪問指定的文件系統的進程,一般要提前發通知提醒
# fuser -km MOUNT_POINT
4)、卸載-umount命令只有管理員有權限運行
# umount DEVICE 若果設備掛載于多個目錄,將全部取消掛載
# umount MOUNT_POINT 僅取消對應掛載點上的掛載,若掛載點上有幾個掛載設備,則取消最近的掛載
14、掛載點和/etc/fstab,其中/etc/fstab是掛載的配置文件,寫入此文件中的掛載是永久掛載
寫入配置文件時,可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統,也就是沒有掛過會進行掛載,但是掛載過后不再掛載,所以要修改配置文件中已掛載文件系統的掛載選項,就要使用例如#mount -o remount /dev/sdb1重新掛載生效
/etc/fstab 每行定義一個要掛載的文件系統,每行內容依次為:要掛載的設備或偽文件系統、掛載點、文件系統類型、掛載選項、轉儲頻率、自檢次序
其中要掛載的設備或偽文件系統可以寫為:設備文件、LABEL="" 、UUID=""、偽文件系統名稱(如proc,sysfs)
掛載選項:defaults或者選擇其他文件系統選項
轉儲頻率:
0 :不做備份
1 :每天轉儲備份
2 :每隔一天轉儲備份
自檢次序(開機時是否檢測文件系統的完整性,即是否自動執行fsck,如配置信息某設備的UUID有錯誤,在設置啟動自檢情況下,系統不能正常啟動):
0 :不自檢,一般設置為不自檢,以免在配置信息發生錯誤的情況下系統不能正常啟動
1 :首先自檢,一般只有rootfs才用1
掛載文件作為分區使用:
[root@localhost ~]# dd if=/dev/zero of=/testdir/partfile bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 7.63616 s, 68.7 MB/s
[root@localhost ~]# mkdir /mnt/partfile
[root@localhost ~]# mkfs.ext4 /testdir/partfile
mke2fs 1.41.12 (17-May-2010)
/testdir/partfile is not a block special device.
Proceed anyway? (y,n) y 但是創建文件系統后,在#blkid中并不顯示此文件設備文件系統的屬性信息
[root@localhost ~]# mount /testdir/partfile /mnt/partfile
mount: /testdir/partfile is not a block device (maybe try `-o loop'?)
[root@localhost ~]# mount /testdir/partfile /mnt/partfile -o loop
或者把/testdir/partfile /mnt/partfile ext4 loop 0 0寫入/etc/fstab配置文件中永久掛載
此時掛載選項為loop
使用#mount可以查看此文件設備在掛載時自動默認映射到loop=/dev/loop0
#losetup /dev/loop2 /testdir/partfile 強行指定/dev/loop2代表/testdir/partfile
#mount /dev/loop2 /mnt/partfile 那么此命令相當于掛載/testdir/partfile,此文件設備掛載映射到loop2
#losetup –a可以查看loop的對于代表設備
#lsblk可知/testdir/partfile是以loop0掛載的
#ll /dev/l*可以查看當前系統默認有多個loop設備供使用
目錄掛目錄:
#mkdir /mnt/boot
# mount -B /testdir/boot /mnt/boot
或者把/boot /mnt/boot none bind 0 0寫入/etc/fstab配置文件中永久掛載
#df不可查看到此目錄掛載,目錄掛載可以#mount查看掛載
掛載也可以掛載遠程網絡資源,比如nfs共享:
即是把10.1.0.1:/share /mnt/nfs nfs defaults 0 0寫入/etc/fstab配置文件中永久掛載
15、交換分區
交換分區是系統RAM 的補充,其是作為內存交換使用的,所以交換分區應該建在高速磁盤中或者新磁盤的最外側
Swap的掛載用df看不到,可以使用free查看,但是free只能查看總大小,不能查看各個交換分區
可以使用#cat /proc/swaps可以查看那個分區提供了各個swap
基本設置包括:
? 創建交換分區或者文件
? 使用mkswap 寫入特殊簽名也即是創建swap文件系統
[root@localhost ~]# mkswap -L SWAP_SDE1 /dev/sde1
Setting up swapspace version 1, size = 4200960 KiB
LABEL=SWAP_SDE1, UUID=60df9636-c2b8-4f2c-a065-07b86b1c93e7
[root@localhost ~]# blkid /dev/sde1
/dev/sde1: LABEL="SWAP_SDE1" UUID="60df9636-c2b8-4f2c-a065-07b86b1c93e7" TYPE="swap"
? 在/etc/fstab 文件中添加適當的條目進行掛載而不是使用mount掛載,如下:
UUID="60df9636-c2b8-4f2c-a065-07b86b1c93e7" swap swap defaults,pri=1 0 0
? 使用#swapon -a激活所有交換空間,然后可以使用#swapon -s查看激活生效的各個swap分區
1)、用戶可以給某個swap 指定一個0到32767 的優先級;如果用戶沒有指定,那么內核會自動給swap 指定一個優先級,這個優先級從-1 開始,每加入一個新的沒有用戶指定優先級的swap ,會給這個優先級減一;先添加的swap 的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級( 是正數) 永遠高于內核缺省指定的優先級( 是負數)。
優化性能:分布存放,高性能磁盤存放
啟用:swapon
swapon [OPTION]… [DEVICE]
-a:激活所有的交換分區
#swapon -a
-p PRIORITY:指定優先級或者修改配置文件/etc/fstab掛載選項,例如pri=1
#swapon -p 1 /dev/sdb1 這里/dev/sdb1是一個swap分區
禁用:swapoff [OPTION]… [DEVICE]
若要刪除某swap分區,先禁用然后進入配置文件刪除相關配置信息 ,再刪除相應的swap分區或文件
#swapoff /dev/sdb1
16、移動設備使用-U盤和光盤
1)、訪問前,介質必須被掛載,掛載意味著使外來的文件系統看起來如同是主目錄樹的一部分
例如插上U盤后會自動識別掛載,一般為/dev/sdf1等等,而且系統會自動加載USB模塊,加載的模塊可以使用#lsmod命令查看
[root@centos7 ~]# lsmod|grep usb
usb_storage 66523 1
然后就可以進行文件的拷貝,但是為了防止數據拷貝缺失,拷貝后可以執行#sync命令使之立即同步數據
摘除時,介質必須被卸載
掛載點通常在/media 或/mnt下
按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB 等等)
光盤在圖形環境下自動啟動掛載/run/media/<user>/<label>
否則就必須被手工掛載
#mount /dev/cdrom /mnt/ 光盤的真實設備名稱是/dev/sr0,/dev/cdrom是光盤的軟鏈接
eject 命令卸載或彈出光盤
創建ISO 文件即創建鏡像文件
#cp /dev/sr0 /testdir/centos7.iso
#cp /dev/cdrom /root/centos7.iso
若想掛載使用可以如下:
#mkdir /mnt/iso
#mount /testdir/centos7.iso /mnt/iso –o loop
#mkisofs -r -o /root/etc.iso /etc 把目錄打包成ISO文件
刻錄光盤(要有刻錄機):
#wodim –v -eject centos.iso
17、常見工具
1)、內存空間使用狀態:
free [OPTION]
-m: 以MB為單位
-g: 以GB
-h: MB和GB為單位
2)、文件系統空間占用等信息的查看工具:
df [OPTION]… [FILE]…
-H: 1000為單位,同下-h
-h: human-readable,以易讀方式顯示
-T: 文件系統類型
-i:inodes instead of blocks,文件系統節點信息查詢
3)、查看某目錄總體空間占用狀態:
du [OPTION]… DIR
-h: human-readable
-s: summary
[root@centos7 ~]# du -s /etc
29112 /etc
[root@centos7 ~]# du -sh /etc
29M /etc
[root@centos7 ~]# du -h /etc 易讀方式查看/etc下一級目錄總體空間占用情況
4)、dd 命令:convert and copy a file
#dd if =/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size,復制單元大小
count=#:復制多少個bs
skip=blocks 從開頭忽略blocks個ibs 大小的塊讀取
seek=blocks 從開頭忽略blocks個obs大小的塊寫入
conv=conversion[,conversion…]用指定的參數轉換文件
轉換參數:
lcase 把大寫字符轉換為小寫字符
ucase 把小寫字符轉換為大寫字符
#dd if=a.txt of=aa.txt conv=ucase 把a.txt的文件數據轉換為大寫寫入aa.txt中,如果aa.txt不存在自動默認創建,但是加上nocreate參數,就不再默認創建,文件aa.txt不存在會報錯
notrunc 不截短輸出文件
[root@centos7 ~]# echo {a..z}|tr -d ' '>f1
[root@centos7 ~]# echo {a..z}|tr -d ' '>f2
[root@centos7 ~]# dd if=f1 of=f2 bs=1 count=3 skip=5 seek=3
3+0 records in
3+0 records out
3 bytes (3 B) copied, 0.000133773 s, 22.4 kB/s
[root@centos7 ~]# cat f2
abcfgh
意思是:從f1開頭跳過5個字節取3個字節,就是fgh,然后把這三個字節寫入f2(寫入的方法是跳過f2文件中的前三個字節,然后覆蓋寫入fgh,后面的其它數據不保留)
但若:
[root@centos7 ~]# dd if=f1 of=f2 bs=1 count=3 skip=5 seek=3 conv=notrunc
[root@centos7 ~]# cat f2
abcfghghijklmnopqrstuvwxyz
磁盤拷貝:
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 ,現在想從第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 工具進行壓縮,保存到指定路徑的image.gz文件
恢復:
dd if=/path/to/image of=/dev/sdx
將備份文件恢復到指定盤
gzip -dc /path/to/image.gz | dd of=/dev/sdx
將壓縮的備份文件恢復到指定盤
從光盤拷貝iso 鏡像:
dd if=/dev/cdrom of=/root/cd.iso
拷貝光盤數據到root文件夾下,并保存為cd.iso
銷毀磁盤數據:
dd if=/dev/urandom of=/dev/sda1
利用隨機的數據填充硬盤,在某些必要的場合可以用來銷毀數據。執行此操作以后,/dev/sda1 將無法掛載,創建和拷貝操作無法執行。
得到最恰當的block size塊大?。?/span>
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=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通過上述命令輸出的執行時間,可以計算出測試硬盤的讀寫速度
修復硬盤:
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1 ,2 年)放置不使用后,磁盤上會產生消磁點。當磁頭讀到這些區域時會遇到困難,并可能導致I/O 錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生,且這個過程是安全,高效的。
原創文章,作者:18612763863,如若轉載,請注明出處:http://www.www58058.com/42384