第10天 [磁盤存儲和文件系統]

磁盤存儲和文件系統
cat /sys/block/sda/queue/rotational   
1是機械硬盤
0是固態硬盤




hexdump
	進制查看器
	-n  length只格式化輸入文件的前length 個字節
	-C	輸出規範的十六進制和ASCII碼
	hexdump -C -n 512 /dev/sda  從硬盤上只讀前512個字節 從80 20 到1f 06是分區表
	000001b0  00 00 00 00 00 00 00 00  17 8f 02 00 00 00 80 20  |............... |
	000001c0  21 00 83 aa 28 82 00 08  00 00 00 00 20 00 00 aa  |!...(....... ...|
	000001d0  29 82 83 fe ff ff 00 08  20 00 00 00 80 0c 00 fe  |)....... .......|
	000001e0  ff ff 83 fe ff ff 00 08  a0 0c 00 00 40 06 00 fe  |............@...|
	000001f0  ff ff 05 fe ff ff 00 08  e0 12 00 f8 1f 06 55 aa  |..............U.|
	00000200


lsblk
	列出所有可用塊的信息
	-a 顯示所有設備
	-b, –bytes 以bytes方式顯示設備大小。
	
	
dd
	命令用於讀取、轉換並輸出數據。
	if=文件名:輸入文件名,缺省爲標準輸入。即指定源文件。
	of=文件名:輸出文件名,缺省爲標準輸出。即指定目的文件。
	skip=blocks:從輸入文件開頭跳過blocks個塊後再開始複製。
	seek=blocks:從輸出文件開頭跳過blocks個塊後再開始複製。
	count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的字節數。
	bs=bytes:同時設置讀入/輸出的塊大小爲bytes個字節。
	例子:dd if=/dev/sda of=/data/dpt bs=1 count=64 skip=446
	把sda的數據取出來生成dpt的文件1個字節1個字節的取,一共取64個,跳過446個。
	dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 
	破壞sda文件後兩個
	dd if=/data/dpt of=/dev/sda bs=1 count=2 skip=64 seek=510
	還原 
	切記:如果備份的話不要放在本機,否則打不開數據就丟失了。
	
uuidgen
	生成uuid的不會重複
	
parted 的操作都是實時生效的,小心使用
	用法:parted [選項]... [設備 [命令 [參數]...]...]
	parted /dev/sdb mklabel gpt|msdos
	parted /dev/sdb print
	parted /dev/sdb mkpart primary 1 200 (默認M)
	parted /dev/sdb rm 1
	parted –l 列出分區信息

fdisk
	查看分區信息
	-b<分區大小>:指定每個分區的大小; fdisk -b
	-l:列出指定的外圍設備的分區表狀況; fdisk -l /dev/sda
	-s<分區編號>:將指定的分區大小輸出到標準輸出上,單位爲區塊; fdisk -s /dev/sda
	-v:顯示版本信息。 fdisk -v		
		
fdisk /dev/sdb 管理分區
	子命令:
	p 分區列表
	t 更改分區類型
	n 創建新分區
	d 刪除分區
	v 校驗分區
	u 轉換單位
	w 保存並退出
	q 不保存並退出
	
查看內核是否已經識別新的分區
	cat /proc/partations  也可以用df -h
	centos6通知內核重新讀取硬盤分區表
	新增分區用
	partx -a /dev/DEVICE 
	kpartx -a /dev/DEVICE -f: force
	刪除分區用
	partx -d --nr M-N /dev/DEVICE
	CentOS 5,7: 使用partprobe
	partprobe [/dev/DEVICE]   通知內核讀取分區表
	fdisk w保存之後一定要看一下有沒有warning 報錯centos6 執行
	partx -d  --nr 6 /dev/sda
	centos7 出現warning 執行partprobe 就可以了
	
查看支持的操作系統
	ls /lib/modules/3.10.0-957.el7.x86_64/kernel/fs/

查看支持的文件系統
	cat /proc/filesystems
	
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
	ext4
	xfs
	btrfs
	vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
	-L 'LABEL'  設定卷標
	mkfs.xfs  -L /sdb3目錄 /dev/sdb3
	mount /dev/sdb3 /sdb3
	
mke2fs
       :ext系列文件系統專用管理工具
	-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  關閉指定特性

xfs_info /dev/sdb1
	可以查看xfs分區的信息  sdb1是目錄
	
blkid
:塊設備屬性信息查看
  blkid /devsda1
	 blkid [OPTION]... [DEVICE]
	 -U UUID 根據指定的UUID來查找對應的設備
	 -L LABEL 根據指定的LABEL來查找對應的設備
   當我們修改 /etc/fstab 時候可以 用 r!/dev/sda1直接輸入到編輯器裏面。 
e2label:管理ext系列文件系統的LABEL
	e2label DEVICE [LABEL]
findfs :查找分區
	findfs [options] LABEL=<label>
	findfs [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:
	將磁盤塊分組管理
	-h:查看超級塊信息,不顯示分組信息
fsck
: File System Check
	fsck.FS_TYPE
	fsck -t FS_TYPE
	注意:FS_TYPE 一定要與分區上已經文件類型相同
	-a  自動修復
	-r  交互式修復錯誤
先取消掛載再進行修復
umount /data
fsck -y /dev/sda
e2fsck
:ext系列文件專用的檢測修復工具
	-y  自動回答爲yes
	-f  強制修復
	-p  自動進行安全的修復文件系統問題
	檢測並修復/dev/hda5?:e2fsck -p /dev/hda5
xfs_repair
:xfs文件系統專用檢測修復工具
	-f  修復文件,而設備
	-n  只檢查
	-d  允許修復只讀的掛載設備,在單用戶下修復 / 時使用,然後立即reboot
	修復的時候一定要先取消掛載 umount /sdb3目錄 再執行 xfs_repair /sdb3目錄	

mount 
	掛載
	mount 設備 目錄
	目錄在掛載的狀態下不支持刪除。

掛載方法:mount DEVICE MOUNT_POINT
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備
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
dir:掛載點
事先存在,建議使用空目錄
進程正在使用中的設備無法被卸載
mount常用命令選項
-t vsftype 指定要掛載的設備上的文件系統類型
-r readonly,只讀掛載
-w read and write, 讀寫掛載
-n 不更新/etc/mtab,mount不可見
-a 自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件
  中,且掛載選項中有auto功能),檢查語法是否出錯。
-L 'LABEL' 以卷標指定掛載設備
-U 'UUID' 以UUID指定要掛載的設備
-B, --bind 綁定目錄到另一個目錄上
查看內核追蹤到的已掛載的所有設備
	mount -L 卷表名 目錄
	mount -U  UUID   目錄
cat /proc/mounts
mount常用命令選項
	-o options:(掛載文件系統的選項),多個選項使用逗號分隔
	async 異步模式 sync 同步模式,內存更改時,同時寫磁盤
	atime/noatime 包含目錄和文件
	diratime/nodiratime  目錄的訪問時間戳
	auto/noauto  是否支持自動掛載,是否支持-a選項
	exec/noexec  是否支持將文件系統上運行應用程序
	dev/nodev  是否支持在此文件系統上使用設備文件
	suid/nosuid  是否支持suid和sgid權限
	remount  重新掛載
	mount -o remount,acl /mnt/sdb 
ro 只讀 rw 讀寫
user/nouser  是否允許普通用戶掛載此設備,/etc/fstab使用
acl  啓用此文件系統上的acl功能  mount -o remount,acl /mnt/sdb  
mount -o remount,rw /mnt/sdb  
loop  使用loop設備
defaults:相當於rw, suid, dev, exec, auto, nouser, async
findmnt MOUNT_POINT|device
查看正在訪問指定文件系統的進程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
終止所有在正訪問指定的文件系統的進程
fuser -km MOUNT_POINT

卸載
umount DEVICE
umount MOUNT_POINT

cat /etc/mtab文件顯示當前已掛載的所有設備

最後寫入到這個文件夾長久有效
cat /etc/fstab 
mount -a 可以檢查寫的語法是否出錯

gdisk 可以支持2T
這是GPT分區比MBR分區的主要優勢。分區時,
gdiks命令使用方法同fdisk命令


簡單分區
Linux的硬盤識別:
一般使用”fdisk -l”命令可以列出系統中當前連接的硬盤
設備和分區信息.新硬盤沒有分區信息,則只顯示硬盤大小信息.
 
1.關閉服務器加上新硬盤
 
2.啓動服務器,以root用戶登錄
 
3.查看硬盤信息
#fdisk -l
[cpp] view plain copy
1. Disk /dev/sda: 42.9 GB, 42949672960 bytes
2. 255 heads, 63 sectors/track, 5221 cylinders
3. Units = cylinders of 16065 * 512 = 8225280 bytes
4. Sector size (logical/physical): 512 bytes / 512 bytes
5. I/O size (minimum/optimal): 512 bytes / 512 bytes
6. Disk identifier: 0x0004406e
7. Device Boot Start End Blocks Id System
8. /dev/sda1 * 1 39 307200 83 Linux
9. Partition 1 does not end on cylinder boundary.
10. /dev/sda2 39 2589 20480000 83 Linux
11. /dev/sda3 2589 2850 2097152 82 Linux swap / Solaris
12. /dev/sda4 2850 5222 19057664 5 Extended
13. /dev/sda5 2850 5222 19056640 83 Linux
14. 
15. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
16. 255 heads, 63 sectors/track, 1305 cylinders
17. Units = cylinders of 16065 * 512 = 8225280 bytes
18. Sector size (logical/physical): 512 bytes / 512 bytes
19. I/O size (minimum/optimal): 512 bytes / 512 bytes
20. Disk identifier: 0x14b52796
21. Device Boot Start End Blocks Id System
 
4.創建新硬盤分區命令參數:
 
5.進入磁盤,對磁盤進行分區,注意紅色部分。
#fdisk /dev/sdb
[cpp] view plain copy
1. Command (m for help):n
2. Command action
3.    e extended //輸入e爲創建擴展分區
4.    p primary partition (1-4) //輸入p爲創建邏輯分區
5. p
6. Partion number(1-4):1 //在這裏輸入l,就進入劃分邏輯分區階段了;
7. First cylinder (51-125, default 51): //注:這個就是分區的Start 值;這裏最好直接按回車,如果您輸入了一個非默認的數字,會造成空間浪費;
8. Using default value 51
9. Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:這個是定義分區大小的,+200M 就是大小爲200M ;當然您也可以根據p提示的單位cylinder的大小來算,然後來指定 End的數值。回頭看看是怎麼算的;還是用+200M這個辦法來添加,這樣能直觀一點。如果您想添加一個10G左右大小的分區,請輸入 +10000M ;
10. 
11. Command (m for help): w //最後輸入w回車保存。
查看一下:
#fdisk -l
可以看到/dev/sdb1分區,我就省略截圖咯。
6.格式化分區:
#mkfs -t ext4 /dev/sdb1 //注:將/dev/sdb1格式化爲ext4類型
[cpp] view plain copy
1. mke2fs 1.41.12 (17-May-2010)
2. 文件系統標籤=
3. 操作系統:Linux
4. 塊大小=4096 (log=2)
5. 分塊大小=4096 (log=2)
6. Stride=0 blocks, Stripe width=0 blocks
7. 640848 inodes, 2562359 blocks
8. 128117 blocks (5.00%) reserved for the super user
9. 第一個數據塊=0
10. Maximum filesystem blocks=2625634304
11. 79 block groups
12. 32768 blocks per group, 32768 fragments per group
13. 8112 inodes per group
14. Superblock backups stored on blocks:
15. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
16. 
17. 正在寫入inode表: 完成
18. Creating journal (32768 blocks): 完成
19. Writing superblocks and filesystem accounting information: 完成
20. 
21. This filesystem will be automatically checked every 35 mounts or
22. 180 days, whichever comes first. Use tune2fs -c or -i to override.
這樣就格式化好了,我們就可以用mount 加載這個分區,然後使用這個文件系統;
 
7.創建/data目錄:
#mkdir /data
 
8.開始掛載分區:
#mount /dev/sdb1 /data
 
9.查看硬盤大小以及掛載分區:
#df -h
 
10.配置開機自動掛載
因爲mount掛載在重啓服務器後會失效,所以需要將分區信息寫到/etc/fstab文件中讓它永久掛載:
#vi /etc/fstab
0, 0 表示開機不檢查磁盤。
如果掛載磁盤分區不生效,可以查看磁盤的UUID
ls -l /dev/disk/by-uuid/
 blkid /dev/sdb1 
 
#vi /etc/fstab
0, 0 表示開機不檢查磁盤。
 
11.重啓系統
 


Linux的硬盤識別:
一般使用”fdisk -l”命令可以列出系統中當前連接的硬盤
設備和分區信息.新硬盤沒有分區信息,則只顯示硬盤大小信息.
 
1.關閉服務器加上新硬盤
 
2.啓動服務器,以root用戶登錄
 
3.查看硬盤信息
#fdisk -l
[cpp] view plain copy
1. Disk /dev/sda: 42.9 GB, 42949672960 bytes
2. 255 heads, 63 sectors/track, 5221 cylinders
3. Units = cylinders of 16065 * 512 = 8225280 bytes
4. Sector size (logical/physical): 512 bytes / 512 bytes
5. I/O size (minimum/optimal): 512 bytes / 512 bytes
6. Disk identifier: 0x0004406e
7. Device Boot Start End Blocks Id System
8. /dev/sda1 * 1 39 307200 83 Linux
9. Partition 1 does not end on cylinder boundary.
10. /dev/sda2 39 2589 20480000 83 Linux
11. /dev/sda3 2589 2850 2097152 82 Linux swap / Solaris
12. /dev/sda4 2850 5222 19057664 5 Extended
13. /dev/sda5 2850 5222 19056640 83 Linux
14. 
15. Disk /dev/sdb: 10.7 GB, 10737418240 bytes
16. 255 heads, 63 sectors/track, 1305 cylinders
17. Units = cylinders of 16065 * 512 = 8225280 bytes
18. Sector size (logical/physical): 512 bytes / 512 bytes
19. I/O size (minimum/optimal): 512 bytes / 512 bytes
20. Disk identifier: 0x14b52796
21. Device Boot Start End Blocks Id System
 
4.創建新硬盤分區命令參數:
fdisk可以用m命令來看fdisk命令的內部命令;
a:命令指定啓動分區;
d:命令刪除一個存在的分區;
l:命令顯示分區ID號的列表;
m:查看fdisk命令幫助;
n:命令創建一個新分區;
p:命令顯示分區列表;
t:命令修改分區的類型ID號;
w:命令是將對分區表的修改存盤讓它發生作用。
 
5.進入磁盤,對磁盤進行分區,注意紅色部分。
#fdisk /dev/sdb
[cpp] view plain copy
1. Command (m for help):n
2. Command action
3.    e extended //輸入e爲創建擴展分區
4.    p primary partition (1-4) //輸入p爲創建邏輯分區
5. p
6. Partion number(1-4):1 //在這裏輸入l,就進入劃分邏輯分區階段了;
7. First cylinder (51-125, default 51): //注:這個就是分區的Start 值;這裏最好直接按回車,如果您輸入了一個非默認的數字,會造成空間浪費;
8. Using default value 51
9. Last cylinder or +size or +sizeM or +sizeK (51-125, default 125): +200M 注:這個是定義分區大小的,+200M 就是大小爲200M ;當然您也可以根據p提示的單位cylinder的大小來算,然後來指定 End的數值。回頭看看是怎麼算的;還是用+200M這個辦法來添加,這樣能直觀一點。如果您想添加一個10G左右大小的分區,請輸入 +10000M ;
10. 
11. Command (m for help): w //最後輸入w回車保存。
查看一下:
#fdisk -l
可以看到/dev/sdb1分區,我就省略截圖咯。
6.格式化分區:
#mkfs -t ext4 /dev/sdb1 //注:將/dev/sdb1格式化爲ext4類型
[cpp] view plain copy
1. mke2fs 1.41.12 (17-May-2010)
2. 文件系統標籤=
3. 操作系統:Linux
4. 塊大小=4096 (log=2)
5. 分塊大小=4096 (log=2)
6. Stride=0 blocks, Stripe width=0 blocks
7. 640848 inodes, 2562359 blocks
8. 128117 blocks (5.00%) reserved for the super user
9. 第一個數據塊=0
10. Maximum filesystem blocks=2625634304
11. 79 block groups
12. 32768 blocks per group, 32768 fragments per group
13. 8112 inodes per group
14. Superblock backups stored on blocks:
15. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
16. 
17. 正在寫入inode表: 完成
18. Creating journal (32768 blocks): 完成
19. Writing superblocks and filesystem accounting information: 完成
20. 
21. This filesystem will be automatically checked every 35 mounts or
22. 180 days, whichever comes first. Use tune2fs -c or -i to override.
這樣就格式化好了,我們就可以用mount 加載這個分區,然後使用這個文件系統;
 
7.創建/data目錄:
#mkdir /data
 
8.開始掛載分區:
#mount /dev/sdb1 /data
 
9.查看硬盤大小以及掛載分區:
#df -h
 
10.配置開機自動掛載
因爲mount掛載在重啓服務器後會失效,所以需要將分區信息寫到/etc/fstab文件中讓它永久掛載:
#vi /etc/fstab
加入:
/dev/sdb1(磁盤分區) /data1(掛載目錄) ext4(文件格式)defaults 0 0
0, 0 表示開機不檢查磁盤。
如果掛載磁盤分區不生效,可以查看磁盤的UUID
ls -l /dev/disk/by-uuid/


#vi /etc/fstab
加入:
UUID=b49df1a7-0001-4b38-af2f-0b5b8727f52d /data ext4 defaults 0 0
0, 0 表示開機不檢查磁盤。
 
11.重啓系統
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章