1 dd命令詳解
dd:convert and copy a file
dd if=/PATH/SOURCE of=/PATH/DEST bs=1[k|M] count=100
if=file,從文件讀入內容。
of=offile,寫入文件。
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
bs=size 指定讀寫塊大小
cbs=size 一次性轉化size個大小
skip=blocks 從頭忽略blocks個ibs大小的塊
seek=blocks 從頭忽略bolcks個obs大小的塊
////讀入硬盤的MBR分區表存檔備份,備份要放置在另外一塊硬盤。磁盤0磁道0扇區共512bytes,446存放bootloader,64bytes分區信息,最後2bytes存放55aa,已分區標記。
[root@localhost ~]#dd if=/dev/sda of=./fstab_sda.back bs=1 count=64 skip=446
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000452712 s, 141 kB/s
[root@localhost ~]#hexdump -C fstab_sda.back
00000000 80 20 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 |. !...(....... .|
00000010 00 aa 29 82 83 fe ff ff 00 08 20 00 00 00 40 01 |..)....... ...@.|
00000020 00 fe ff ff 83 fe ff ff 00 08 60 01 00 00 40 01 |..........`...@.|
00000030 00 fe ff ff 05 fe ff ff 00 08 a0 02 00 f8 9f 03 |................|
00000040
還原時覈對硬盤
dd if=/備份的分區表信息 of=/dev/硬盤 bs=1 seek=446
count=n 複製n個bs
conv=conversion[參數] lcase
notrunc 不截斷輸出,替換的意思
abcdefgh
12345678
[root@localhost xuan]#dd if=f1 of=f2 bs=1 skip=5 seek=2 conv=notrunc //不截斷
4+0 records in
4+0 records out
4 bytes (4 B) copied, 0.000169599 s, 23.6 kB/s
[root@localhost xuan]#cat -A f2
12fgh$
78$
此處換行來源於f1本身
2 分區及文件格式化
查前支持的文件系統:cat /proc/filesystems
2.1 gdisk/fdisk
加入新的硬盤或者原硬盤有剩餘空間。若新加入硬盤不識別,則用
echo - - - > /sys/class/scsi_host/host0/scan;
echo - - - > /sys/class/scsi_host/host1/scan;
新加硬盤分區並格式化實例:
[root@cenots7 ~]#lsblk //查看硬盤是否被識別
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]
├─sda4 8:4 0 512B 0 part //擴展分區,所以無掛載點
└─sda5 8:5 0 50G 0 part /data //邏輯分區,編號從**5開始
sdb 8:16 0 20G 0 disk //新增的硬盤,無掛掛載點,接下來的主角
-------------------------------------------------------------------------------
[root@cenots7 ~]#gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n //n新建分區
Partition number (1-128, default 1): 1 //默認分區號1
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: //其實扇區位置,一般默認。回車即可
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +5G //+5G表示劃分5G空間
Command (? for help): p //p打印,覈對分區信息
Number Start (sector) End (sector) Size Code Name
1 2048 10487807 5.0 GiB 8300 Linux filesystem
Command (? for help): w //w寫盤,真正把分區表信息寫入硬盤
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
--------------------------------------------------------------------------------------
[root@cenots7 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]
├─sda4 8:4 0 512B 0 part
└─sda5 8:5 0 50G 0 part /data
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 5G 0 part ////lsblk查看,確實分區已經有了
sdc 8:32 0 2G 0 disk
----------------------------------------------------------------------------------------
[root@cenots7 ~]#mkfs.ext4 -L gpt_001 /dev/sdb1 //格式化文件系統 -L給個標記,
----------------------------------------------------------------------------------------
[root@cenots7 ~]#blkid
/dev/sda1: UUID="f3dea6d9-de61-40d2-af58-25fc9e3d9e57" TYPE="xfs"
/dev/sda2: UUID="0a85448e-2b97-4f3a-afc2-f9288c0bd490" TYPE="xfs"
/dev/sda3: UUID="f6c52d33-a0ee-4f65-8fe0-360cd1e20317" TYPE="swap"
/dev/sda5: UUID="2ffec095-ca75-4d76-9303-56bbb23aff73" TYPE="xfs"
/dev/sr0: UUID="2018-11-26-14-22-58-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sdb1: LABEL="gpt_001" UUID="1cbd73f6-0438-4c92-b244-164d3cd6e3f4" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="b7fc8331-eb4c-4d16-b7d4-bc116a26cc9d"
--------------------------------------------------------------------------------------
[root@cenots7 ~]#tune2fs -l /dev/sdb1 //查看分區塊的詳細信息
[root@cenots7 ~]#dumpe2fs /dev/sdb1 -h //顯示超級塊信息
[root@cenots7 ~]#tune2fs -m1 /dev/sdb1 //m1修改默認預留的管理員空間爲1%
tune2fs 1.42.9 (28-Dec-2013)
Setting reserved blocks percentage to 1% (13107 blocks)
-------------------------------------------------------
vim /etc/fstab
UUID=1cbd73f6-0438-4c92-b244-164d3cd6e3f4 /gpt001 ext4 acl 0 0 //賦予acl權限
mount -a //重讀配置文件,掛載
[root@cenots7 ~]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 ext4 4.8G 20M 4.8G 1% /gpt001
//產看文件系統是否被掛載,若被掛載,再往該目錄掛載設備B時候,會擠掉原來的設備A,B卸載後,原來的A還會自動掛載回來。(臨時有效)
[root@localhost xuan]#findmnt /home/
TARGET SOURCE FSTYPE OPTIONS
/home /dev/sda3 xfs rw,relatime,attr2,inode64,noquota
格式化完畢,通知內核重讀分區表
centos6
新增分區 partx -a /dev/sda5 kpartx -a /dev/sda5 -f
刪除分區 partx -d --nr M-N /dev/DEVICE
centos7 使用 partprobe [/dev/DEVICE]
2.2 swap分區使用
創建新的獨立swap分區時候要用 t 參數,指定82類型。系統裝好後還以用大的空文件,用swap工具格式化成swap格式,用來做swap交換區,這種做法很靈活,不用了,修改fstab掛載信息,nmount,刪除大文件即可。
2.2.1 新加硬盤獨立分區用作swap使用
#####2.2.1.1 分區---------------------------
[root@cenots7 ~]#lsblk //查看塊設備是否已經識別新加硬盤
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 2G 0 disk
[root@cenots7 ~]#fdisk /dev/sdc //採用fdisk分區
Command (m for help): n //n 新建分區
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //p主分區
Partition number (1-4, default 1): 1 //分區號
First sector (2048-4194303, default 2048): //默認起始扇區
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): //默認終止扇區
Using default value 4194303
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): t //指定分區類型。
Selected partition 1
Hex code (type L to list all codes): 82 //82爲swap分區
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): p //查看分區信息
Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5ea8522e
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4194303 2096128 82 Linux swap / Solaris
Command (m for help): w //分區表寫入磁盤
The partition table has been altered!
[root@cenots7 ~]#partprobe //同步分區信息至內核
#####2.2.1.2-格式化爲swap-------------------------------
[root@cenots7 ~]#mkswap -L extend_swap /dev/sdc1 //mkswap -L(標籤) 格式化成swap
Setting up swapspace version 1, size = 2096124 KiB
LABEL=extend_swap, UUID=8fa013a8-f906-4094-a933-467872df6763
[root@cenots7 ~]#swapon /dev/sdc1 //掛載swap分區
[root@cenots7 ~]#lsblk
sdc 8:32 0 2G 0 disk
└─sdc1 8:33 0 2G 0 part [SWAP]
[root@cenots7 ~]#free -h //查看內存,已經啓用
total used free shared buff/cache available
Mem: 1.9G 752M 200M 42M 1.0G 963M
Swap: 6.0G 0B 6.0G
2.2.2 建立大文件,用來當swap分區使用
###### 2.2.2.1 建立大文件
[root@cenots7 data]#dd if=/dev/zero of=./bigfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.72137 s, 188 MB/s
[root@cenots7 data]#ll -h
total 1.1G
-rw-r--r-- 1 root root 1.0G Aug 13 12:57 bigfiel
###### 2.2.2.3 格式化文件系統
[root@cenots7 data]#chmod 0600 bigfile
[root@cenots7 data]#mkswap -L bigfile_swap bigfile
Setting up swapspace version 1, size = 1048572 KiB
LABEL=bigfile_swap, UUID=c493c55b-6e9d-46bb-9543-38b72f410478
###### 2.2.2.3 掛載swap
[root@cenots7 data]#swapon /data/bigfile
[root@cenots7 data]#free -h
total used free shared buff/cache available
Mem: 1.9G 753M 76M 42M 1.1G 965M
Swap: 7.0G 0B 7.0G
[root@cenots7 data]#echo "/data/bigfile swap swap defaults 0 0 ">> /etc/fstab
//寫入分區表,可以開機自動掛載。mount -a 對swap或者文件無效。
/data/bigfile swap swap defaults 0 0
2.2.3 去除swap分區
確保swap分區沒有使用。刪除/etc/fstab文件裏swap的掛載信息
[root@cenots7 data]#swapoff /data/bigfile
[root@cenots7 data]#swapoff /dev/sdc1
[root@cenots7 data]#free -h
total used free shared buff/cache available
Mem: 1.9G 749M 115M 42M 1.1G 970M
Swap: 4.0G 0B 4.0G
[root@cenots7 data]#lsblk //查看只有一個swap分區了
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]