Linux磁盤及文件系統管理
創建文件系統 mkfs.ext# .xfs mke2fs 功能比mkfs強大的多 檢測及修復 fsck fsck。ext2 。。。 查看文件系統 dumpe2fs tune2fs 調整文件系統特性 tune2fs part -a 掃描已經創建的分區 刪除的分區也行 blkid 查看文件系統 lsmod 查看內核已裝載模塊 findfs :查找分區
設備文件:FHS(LSB) /dev/: 設備
設備文件,關聯至設備的驅動程序;設備的訪問入口
每一個設備文件叫做一個節點
設備類別:一般在/dev下
-
塊(block):隨機訪問,數據交換單位為“塊”(隨機訪問)
-
字符(character):線性性訪問,數據交換單位為字符(順序訪問)
mknod命令:用來創建塊設備或者字符設備,并指明設備號,特殊文件
mknod [OPTION]... NAME TYPE [MAJOR MINOR] -m, --mode=MODE :創建設備文件時直接指明權限 設備文件的文件名:ICANN [root@localhost testdir]# mknod -m 755 ltt1 b 10 15 [root@localhost testdir]# mknod -m 755 ltt2 c 8 1 [root@localhost testdir]# ll 總用量 0 brwxr-xr-x+ 1 root root 10, 15 8月 25 20:32 ltt1 crwxr-xr-x+ 1 root root 8, 1 8月 25 20:32 ltt2 創建塊設備文件時,必需指定主、次設備號注意:設備文件沒有大小,只有設備號!
所以創建個和某設備一樣的設備號,那就是同一個文件,
這就相當于復制設備文件了
[root@localhost mnt]# ll /media/qiu/ 總用量 18 drwx------. 2 root root 16384 8月 26 19:18 lost+found -rw-r--r--. 1 root root 0 8月 26 20:45 qqq drwxr-xr-x. 2 root root 2048 8月 26 19:50 tmps [root@localhost mnt]# ll 總用量 18 drwx------. 2 root root 16384 8月 26 19:18 lost+found -rw-r--r--. 1 root root 0 8月 26 20:45 qqq drwxr-xr-x. 2 root root 2048 8月 26 19:50 tmps [root@localhost mnt]# ll ~/CPsdb1 brw-r--r--. 1 root root 8, 17 8月 26 20:37 /root/CPsdb1 [root@localhost mnt]# ll /dev/sdb1 brw-rw----. 1 root disk 8, 17 8月 26 19:33 /dev/sdb1
設備號:
major:主設備號,區別設備類別,用于標明所需驅動程序
minor:次設備號,區分同種類型下的不同的設備;特定設備的訪問入口
磁盤設備文件:
IDE接口(ATA):并行, 133MB/s
兩個IDE控制器:每個控制器可通過線纜接入兩塊磁盤,一主一從;
/dev/hd[a-z][#]
/dev/hda, /dev/hdb,
/dev/hdc, /dev/hdd
SCSI接口: 并行,Small Computer System Interface
UltraSCSI 320, 320MB/s SATA接口:串行,Serial ATA, **6Gpbs** USB接口:串行,480MB/s SAS接口:串行設備文件:/dev/sd[a-z][#]
[a-z]:標記設備 [#]:磁盤分區
磁盤的結構
-
track: 磁道
-
sector: 扇區,512bytes
-
cylinder: 柱面(分區劃分基于柱面)
-
尋道時間:平均尋道時間
-
現在的普通機械硬盤:5400rpm,7200rpm,1000rpm,1500rpm rpm(轉速)
磁盤分區:
為什么要分區?
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
采用不同文件系統
兩種分區方式:MBR,GPT
MBR:
Master Boot Record,1982年,使用32位表示扇區數,分區不超過2T
如何分區:按柱面
MBR:0磁道0扇區,主引導扇區(master boot record):512bytes**
446bytes: boot loader(MBR)
64bytes:磁盤分區表 (DPT)
4個主分區;3主分區+1擴展(N個邏輯分區從5+分)最多每個分區2T
16bytes: 標識一個分區
2bytes: (BRID)引導記錄標示,當前MBR信息是否有效的標記; 55 aa 為有效
GPT:全局唯一標識分區表
GPT:是一個物理硬盤的分區結構。它是可擴展固件接口標準的一部分,用來替代BIOS中的主引導記錄分區表。但因為MBR分區表不支持容量大于
2TB的分區,所以也有一些BIOS系統為了支持大容量硬盤而用GPT分區表取代MBR分區表。GPT分區表支持最多128PB的硬盤和分區
劃分
使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動
管理分區
blkid:顯示當前已掛載的文件系統
Linux下可以使用blkid命令對查詢設備上所采用文件系統類型進行查詢。blkid主要用來對系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息進行查詢。要使用這個命令必須安裝e2fsprogs軟件包。
1、列出當前系統中所有已掛載文件系統的類型:
sudo blkid
2、顯示指定設備 UUID:
sudo blkid -s UUID /dev/sda5
3、用指定的 UUID 查設備
blkid -U ef7a7136-8f3b-403a-93aa-1d3406b0dbca (UUID)
4、以列表形式顯示
[root@localhost testdir]# blkid -o list device fs_type label mount point UUID ----------------------------------------------------------------------------------- /dev/sda1 xfs /boot a7adb729-cfa8-4292-aae5-59fbd6ad64f1 /dev/sda2 swap <swap> ef7a7136-8f3b-403a-93aa-1d3406b0dbca /dev/sda3 xfs / d82b626b-bbfb-412f-a994-fbe75ed89e82 /dev/sr0 iso9660 CentOS 7 x86_64 (not mounted) 2015-12-09-22-36-30-00
自動生成UUID命令:uuidgen
lsblk命令 (查看內存中的分區)
相當于
ls /dev/sd* == cat /proc/partitions
默認情況下將以樹狀列出所有塊設備
lsblk NAME MAJ:MIN rm SIZE RO type mountpoint sda 8:0 0 232.9G 0 disk ├─sda1 8:1 0 46.6G 0 part / ├─sda2 8:2 0 1K 0 part ├─sda5 8:5 0 190M 0 part /boot ├─sda6 8:6 0 3.7G 0 part [SWAP] ├─sda7 8:7 0 93.1G 0 part /data └─sda8 8:8 0 89.2G 0 part /personal sr0 11:0 1 1024M 0 rom
7個欄目名稱如下:
NAME:這是塊設備名。
MAJ:MIN:本欄顯示主要和次要設備號。
RM:本欄顯示設備是否可移動設備。注意,在本例中設備sdb和sr0的RM值等于1,這說明他們是可移動設備。
SIZE:本欄列出設備的容量大小信息。例如298.1G表明該設備大小為298.1GB,而1K表明該設備大小為1KB。
RO:該項表明設備是否為只讀。在本案例中,所有設備的RO值為0,表明他們不是只讀的。
TYPE:本欄顯示塊設備是否是磁盤或磁盤上的一個分區。在本例中,sda和sdb是磁盤,而sr0是只讀存儲(rom)。
MOUNTPOINT:本欄指出設備掛載的掛載點。
默認選項不會列出所有空設備。要查看這些空設備用 -a 選項
開機狀態下掃描新加的硬盤(虛擬機適用):
echo " – – – " /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo " - - - " /sys/class/scsi_host/host0/scan [root@localhost ~]# lsblk若掃不出來
后綴變成
host0、1、2、3/scan
都試一下就能出現了
分區工具fdisk命令和gfdisk:
1、查看已經識別的磁盤設備(真實磁盤分區表):
fdisk -l /dev/[hs]d[a-z]可以省略
2、管理分區
fdisk DEVICE —–列出指定設備上的磁盤信息
dos表示 mbr格式的磁盤
boot 引導分區
centos6 start 從哪個柱面
7 從哪個扇區開始block 剩下一共用多少的塊
Id表示,磁盤所在的場景類型
83表示linux正常分區(16進制數字)
5擴展分區
82 swap分區
fdisk提供了一個交互式接口來管理分區,它有許多子命令,分別用于不同的管理功能;所有的操作均在內存中完成,沒有直接同步到磁盤; 常用命令: p: 顯示現有分區表; n: 創建新分區 d: 刪除現有分區 t: 修改分區ID l: 查看支持哪些分區ID w: 保存退出 q: 不保存退出 m: 顯示幫助信息 示例:/dev/sdb 3主+1擴展(3個邏輯) 2主+1擴展(4個邏輯) ... 注意:如果本來有sda1-7 這時你刪除了6,那么7還在不過7的盤符就變成了6 出現警告: 查看內核是否已經識別新建分區: # cat /proc/partitions 通知內核強制重讀分區表: CentOS 5, 7: partprobe /dev/DEVICE CentOS 6: partx, kpartx 新增分區用(可不加指明的 -n 選項) **partx -a -n M:N /dev/DEVICE**(常用 直接 -a ) kpartx -a /dev/DEVICE -f: force 刪除分區用 (可不加指明 -n 選項) partx -d -n M:N /dev/DEVICE centos6: –nr N-M 注意:成功讀取分區,可能需要命令重復執行2次或以上; 此外的工具:sfdisk, parted
parted 此工具直接寫入內存非常危險
parted的操作都是實時生效的,小心使用
用法:parted [選項]… [設備 [命令 [參數]…]…]
轉化 gpt或者msdos的分區格式
parted /dev/sdb mklabel gpt|msdos
顯示分區狀態
parted /dev/sdb print分區從第一塊開始 分1200M
parted /dev/sdb mkpart primary 1 1200 (從1開始到1200M默認M)刪除第一個分區
parted /dev/sdb rm 1
parted -l
其他:
查看mbr
hexdump -C -n 512 /dev/sda
備份mbr
dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512
hexdump -C -v /testdir/mbrbak
恢復mbr
dd if=/testdir/mbrbak of=/dev/sdd
fdisk /dev/sdd -l
lsblk
hexdump -C -n 512 /dev/sdd
破壞boot loader
dd if=/dev/zero of=/dev/sdd bs=1 count=446
hexdump -C -v -n 512 /dev/sdd
清除分區標識
dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510
hexdump -C -v -n 512 /dev/sdd
fdisk -l /dev/sdd
恢復分區標識
dd if=/testdir/mbrbak of=/dev/sdd bs=1 count=2 skip=510 seek=510
文件系統:
概念
文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。
文件系統類型 VFS: Virtual File System
-
Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap
-
光盤:iso9660
-
Windows:fat32, ntfs
-
Unix: FFS(fast), UFS(unix), JFS2
-
網絡文件系統:NFS, CIFS
-
windows網絡共享就是用的CIFS
-
linux需要借助samba
-
集群文件系統:GFS2, OCFS2(oracle)
-
分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre
-
RAW:未經處理或者未經格式化產生的文件系統
偽文件系統: tmpfs, hugepagefs, proc, sysfs 交換文件系統:swap
文件系統分類
根據其是否支持"journal(日志)"功能:
文件系統的組成部分:
Linux的虛擬文件系統:VFS
查前支持的文件系統:cat /proc/filesystems
-
在真實的文件系統之上搭建的虛擬文件系統,便于用戶訪問,提供一個統一的接口
-
內核中的模塊:ext4, xfs, vfat
-
用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
-
日志型文件系統: ext3, ext4, xfs, …
-
非日志型文件系統: ext2, vfat
元數據:每個索引項稱一個inode, (index node) inode table /var/logs/messages 根的inode --> 根目錄對應的磁盤塊 --> var對應的inode編號 --> 查inode table, 找到編號對應的inode --> var目錄的磁盤塊 --> logs 的inode編號 --> 查inode table, 找到logs目錄的inode --> logs目錄的磁盤塊 --> 找到messages文件名對應的inode編號 -->查inode表,找到messages的inode編號對應的inode --> messages的磁盤塊 dentry 鏈接文件:訪問同一個文件數據不同路徑 硬鏈接:兩個文件路徑指向了同一個inode; 創建方法: # cp -l SRC DEST # ln SRC DEST 特性: (1) 目錄不支持硬鏈接; (2) 硬鏈接不能跨文件系統; (3) 硬鏈接文件與原文件是指向同一個inode,創建硬鏈接文件會增加inode的引用計數; 符號鏈接:鏈接文件是一個完全獨立的新文件,但其指向了原文件的文件路徑; 特性: (1) 符號鏈接文件與原文件是兩個各自獨立文件; (2) 目錄可以創建符號鏈接; (3) 可以跨文件系統; (4) 刪除鏈接不影響原文件;但刪除原文件,符號鏈接指向的文件路徑將不復存在,因此,此時鏈接文件將變成失效的鏈接; 其大小并非真正原文件大小,而是指向的原文件的文件路徑字符串所包含的字節數; 創建方法: ln -s SRC DEST bitmap索引 block group: bitmap: inode, block
創建文件系統
mkfs命令:
(1) # mkfs.FS_TYPE /dev/DEVICE
ext4 xfs btrfs vfat yum install xfsprogs
(2) # mkfs -t FS_TYPE /dev/DEVICE
-
-L 'LABEL': 設定卷標
但凡加上 e2fs的命令一般就是給 ext # 系列文件系統用的的工具
ext系列文件系統:mke2fs
mke2fs [OPTION]... /dev/DEVICE
-
-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
-
–I 一個inode記錄大小128—4096
-
-m #: 默認5%,為管理人員預留空間占總空間的百分比
-
-O FEATURE[,…]:啟用指定特性
-
-O ^FEATURE:關閉指定特性
blkid塊設備屬性信息查看
語法:blkid [OPTION]… [DEVICE]
-
-U UUID: 根據指定的UUID來查找對應的設備
-
-L LABEL:根據指定的LABEL來查找對應的設備
[root@localhost ~]# blkid /dev/sda1: UUID="a7adb729-cfa8-4292-aae5-59fbd6ad64f1" TYPE="xfs" /dev/sda2: UUID="ef7a7136-8f3b-403a-93aa-1d3406b0dbca" TYPE="swap" /dev/sda3: UUID="d82b626b-bbfb-412f-a994-fbe75ed89e82" TYPE="xfs" /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7
e2label:管理ext系列文件系統的LABEL(卷標名)
語法: e2label device [ new-label ](改卷標名):
查看:e2label /dev/DEVICE 設定卷標:e2label /dev/DEVICE LABEL
findfs :查找分區
語法:
以全標明查找分區
findfs [options] LABEL=
以UUID查找分區
findfs [options] UUID=
[root@localhost ~]# findfs LABEL=123 /dev/sdc1 [root@localhost ~]# findfs UUID=d82b626b-bbfb-412f-a994-fbe75ed89e82 /dev/sda3 [root@localhost ~]# blkid -U d82b626b-bbfb-412f-a994-fbe75ed89e82 /dev/sda3
UUID: 全局惟一標識符
tune2fs:調整文件系統的參數
tune2fs:重新設定ext系列文件系統可調整參數的值
-
-l:查看指定文件系統超級塊信息;super block
-
-L 'LABEL':修改卷標
-
-m #:修預留給管理員的空間百分比
-
-j: 將ext2升級為ext3
-
-O: 文件系統屬性啟用或禁用, –O ^has_journal
-
-o: 調整文件系統的默認掛載選項,–o ^acl
-
-U UUID: 修改UUID號
dumpe2fs:
-
-h:查看超級塊信息(分組信息),分區用分組管理
文件系統檢測和修復:
因進程意外中止或系統崩潰等原因導致寫入操作非正常終止時,可能會導致文件損壞;此時,應該修改修復文件系統;
常發生于死機或者非正常關機之后
注意:應該離線進行;
fsck: File System Check
-
fsck.FS_TYPE
-
fsck -t FS_TYPE
注意: FS_TYPE一定要與分區上已經文件類型相同;
-
-a: 自動修復錯誤
-
-r: 交互式修復錯誤
e2fsck:ext系列文件專用的檢測修復工具
-
-y:自動回答為yes
-
-f:強制修復;
注意:這只是文件系統被破壞,里面的文件還是存在的,修復需謹慎,要做備份,
重要的話不要修復?。?! 一定要在非掛載的情況下修復?。?!
Windows無法識別Linux上專用的文件系統,因此,有存儲設備需要兩種系統之間交叉使用時,應該使用windows支持的文件系統:
# mkfs -t vfat /dev/DEVICE swap文件系統: Linux上交換空間必須使用獨立的磁盤分區; fdisk /dev/DEVICE t命令調整其ID為82; 創建交換分區文件系統:mkswap命令 mkswap [-L LABEL] /dev/DEVICE 注意:在Linux系統上,所有的文件系統必須通過根文件系統的某個分支來訪問;根文件系統:根關聯到的分區 有一定的要求:FHS
掛載mount
-
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯
關系,進而使得此目錄做為其它文件訪問入口的行為 -
卸載:為解除此關聯關系的過程
-
把設備關聯掛載點:mount Point
-
mount
-
卸載時:可使用設備,也可以使用掛載點
-
umount
mount命令:
語法格式:mount DEVICE MOUNT_POINT
掛載點
1、事先存在;
2、應該使用別的進程未使用的目錄;
3、掛載點下原有的文件將被隱藏;
4、進程正在使用的設備無法被卸載
mount:將顯示當前系統已經掛載的所有文件系統的相關信息;
通過查看/etc/mtab文件顯示當前已掛載的所有設備或者更全面的 /proc/mounts
命令選項:
-
-r: 只讀掛載
-
-w: read and write,讀寫掛載
-
-L LABEL: 以卷標的方式指定要掛載的設備,因此,此時DEVICE可省;
-
-U UUID:以UUID的方式指定要掛載的設備,因此,此時DEVICE可??;
-
-a: 自動掛載所有的支持自動掛載的設備(/etc/fstab文件中定義的支持自動掛載的設備);
-
-B, –bind: 綁定目錄到另一個目錄上(掛載目錄)
-
-n: 默認情況下,設備掛載與否的改變結果會被保存于/etc/mtab中一份;-n選項用于變動時不更新此文件,df就看不到了!
-
-t FSTYPE: 被掛載的設備上的文件系統類型;可省略,此時mount會自動使用blkid命令來判斷之;
示例:
# mount -U dea669ee-e769-46d9-86a8-88925a10278b /data/mydata
-
-o options:(掛載文件系統的選項),多個選項使用逗號分隔
-
async:異步模式
-
sync:同步模式,內存更改時,同時寫磁盤(立刻同步,性能不佳)
-
atime/noatime:包含目錄和文件
-
diratime/nodiratime:目錄的訪問時間戳
-
auto/noauto:是否支持自動掛載,是否支持-a選項
-
exec/noexec:是否支持將文件系統上運行應用程序(可執行的程序都不能運行)
-
dev/nodev:是否支持在此文件系統上使用設備文件
-
suid/nosuid:不否支持suid和sgid權限
-
remount:重新掛載
-
acl: 支持使用facl;
# mount -o acl # tune2fs -o acl /dev/DEVICE: 打開acl為默認掛載選項;ro:只讀
-
rw:讀寫
-
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
-
acl:啟用此文件系統上的acl功能
Defaults:相當于rw, nosuid, dev, exec, auto, nouser, async
如果要同時指明多個掛載選項,彼此之間以逗號分隔;
defaults,acl,noatime,noexec查看所有已經掛載設備的方法:
# mount # cat /etc/mtab # cat /proc/mounts
掛載光盤要用 mount -o loop 光盤鏡像!
umount命令:
umount DEVICE umount MOUNT_POINT
注意:正在被某進程訪問的設備是不可以被卸載的;查看被什么進程所占用:
# lsof 設備
# fuser -v 掛載點查看掛載點被什么進程占用!
# fuser -km 設備或掛載點: 終止正訪問掛載點的進程;
此命令非常危險 如果不小心fuser -km / 會踢出所有的用戶??!
[root@localhost ~]# umount /dev/sdb1 umount: /mnt:目標忙。 (有些情況下通過 lsof(8) 或 fuser(1) 可以 找到有關使用該設備的進程的有用信息) [root@localhost ~]# lsof /dev/sdb1 -----后面接設備 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 3029 root cwd DIR 8,17 2048 131073 /mnt/tmps [root@localhost ~]# fuser -v /mnt 用戶 進程號 權限 命令 /mnt: root kernel mount /mnt [root@localhost ~]# fuser -km /dev/sdb1 /dev/sdb1: 3029c
交換分區:
創建交換分區文件系統:mkswap
free命令:查看內存使用狀況
-m
-g
啟動交換分區:
swapon [OPTION] [DEVICE]
-a: 啟用/etc/fstab文件中定義的所有交換分區
禁用交換分區:
swapoff DEVICE
文件掛載配置文件 /etc/fstab
掛載點和/etc/fstab
配置文件系統體系
被mount、fsck和其它程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統
定義開機可自動掛載的文件系統,每行一個:
6個字段: (1) 掛載的設備: 設備文件 LABEL UUID 偽文件系統:如sysfs, proc, tmpfs等 (2) 掛載點 swap的掛載點仍為swap (3) 文件系統類 (4) 掛載選項 defaults表示使用默認掛載選項; 多個掛載選項間使用逗號分隔;如defaults,acl,noatime pri=100 越大為主,首先啟用最大的! ro,表示只讀!rw讀寫 (5) 轉儲頻率 0:從不備份 1: 每天備份 2: 每隔一天備份 (6) 自檢次序 0:不自檢 1:首先自檢,通常只有根文件系統可首先自檢 2:次級自檢, ... 1:首先自檢;一般只有rootfs才用1 mount -a:可自動掛載自定義在此文件中的所支持制動掛載的設備(注意,已經掛載過的再加入fstab里面此命令是不會生效的,必須卸載再掛載或者-o remount才行?。? 掛載時如掛載的是目錄,那么第三字段 寫none,第四字段寫bind
注意最后列如果不寫0的話,如果寫錯會出問題,開機啟動不了!設備名出錯,自檢非零,開機無法啟動,修復方法
啟動不了 mount -o remount,rw /
這樣重掛一下根就好了!
1、是以卷標名掛載
2、掛載光盤
3、掛載網絡文件系統
創建ISO文件
cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc
彈出光盤命令
彈出光驅:eject (彈出光驅) eject -t 彈入光驅 可以在機房調試用
U盤的掛載也一樣,不過要注意,往U盤里寫入數據后多執行
sync 同步一下再用
實現loop 設備和文件關聯(用設備關聯文件名!)
losetup /dev/loop# 所要掛載的文件名
然后再用mount /dev/loop# 掛載點
掛載上就行了
swap分區的創建與掛載
交換分區是系統RAM的補充
基本設置包括:
? 創建交換分區或者文件
? 使用mkswap寫入特殊簽名
? 在/etc/fstab文件中添加適當的條目
? 使用swapon -a 激活交換空間
查看誰提供當前swap功能!
cat /proc/swaps blkid -U UUID 號 swapon -s
mount是看不到的
1、創建swap
mkswap /設備名
或者 -L 指明標簽 設備號
2、啟用:swapon
swapon [OPTION]… [DEVICE]
-a:激活所有的交換分區(這里指的是fstab中的文件內容);
-p PRIORITY:指定優先級
注意由于創建后的優先級比較低,要想優先級高就在/etc/fstab 的文件里 defaults后面追加,pri=value 值越大優先級越高
3、禁用:swapoff [OPTION]… [DEVIC]
df命令和du:
df 顯示磁盤分區上的可使用的磁盤空間及文件系統掛載的相關信息,
-l: 僅顯示本地文件系統的相關系統;
-h: 單位換算;
-i: 顯示inode的使用情況而非磁盤塊的;
du命令:用于評估文件大小
-s: 統計整個目錄及內部所有文件總體大小(簡要信息);
-h: human-readable
dd命令:convert and copy a file
用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 復制單元大小 count=#:復制多少個bs
-
of=file 寫到所命名的文件而不是到標準輸出
-
if=file 從所命名文件讀取而不是從標準輸入
-
skip=blocks 從開頭忽略blocks個ibs(來源)大小的塊
-
seek=blocks 從開頭忽略blocks個obs大小的塊
-
bs=size 指定塊大小(既是是ibs也是obs)
-
count=n 只拷貝n個記錄
-
ibs=size 一次讀size個byte
-
obs=size 一次寫size個byte
-
cbs=size 一次轉化size個byte
[root@localhost ~ ]# echo "12345678">f1 [root@localhost ~ ]# echo "abcdefghi">f2 [root@localhost ~ ]# dd if=f1 of=f2 bs=1 count=4 skip=3 seek=4 記錄了4+0 的讀入 記錄了4+0 的寫出 4字節(4 B)已復制,0.000276785 秒,14.5 kB/秒 [root@localhost ~ ]# cat f2 abcd4567 -------注意這里被截斷了 abcd4567[root@localhost ~ ]# dd if=f1 of=f2 bs=1 count=4 skip=3 seek=4 conv=notrunc
工具dd
conv=conversion[,conversion…] 用指定的參數轉換文件。
轉換參數:
ascii 轉換 EBCDIC 為 ASCII
ebcdic 轉換 ASCII 為 EBCDIC
block 轉換為長度為 cbs 的記錄,不足部分用空格填充。
unblock 替代cbs長度的每一行尾的空格為新行
lcase 把大寫字符轉換為小寫字符
ucase 把小寫字符轉換為大寫字符
swab 交換輸入的每對字節
noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊
dd命令常用的幾項
磁盤拷貝(磁盤對拷b要大于a的容量):
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
有一個大與2K的二進制文件fileA?,F在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?
#dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc
備份:
方式1、 dd if=/dev/sdx of=/dev/sdy
將本地的/dev/sdx整盤備份到/dev/sdy
方式2、 dd if=/dev/sdx of=/path/to/image
將/dev/sdx全盤數據備份到指定路徑的image文件
方式3、 dd if=/dev/sdx | gzip >/path/to/image.gz
備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑
恢復:
方式1、dd if=/path/to/image of=/dev/sdx
將備份文件恢復到指定盤
方式2、 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錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。
原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/42042
文章對磁盤和文件系統管理知識總結的很全面,建議總結完后,可以從增加一塊硬盤到分區、格式化、掛載使用,連貫的操作一遍,多加熟悉各個命令的用法。