磁碟: 設備類型: 塊設備:block,磁碟 字元設備:char,鍵盤 brw-rw . 1 root disk 8, 0 Nov 3 09:42 sda 主設備號 次設備號查看硬碟類型: cat /sys/block/sda/queue/rotational0 --表示固態硬碟1 --表示機械硬碟 ...
磁碟:
設備類型:
塊設備:block,磁碟
字元設備:char,鍵盤
brw-rw----. 1 root disk 8, 0 Nov 3 09:42 sda
主設備號 次設備號
查看硬碟類型:
cat /sys/block/sda/queue/rotational
0 --表示固態硬碟
1 --表示機械硬碟
head:磁頭
track:磁軌
cylinder:柱面
sector:扇區,512bytes
定址方式:
CHS採用24bit定址
前10位表示cyliner(1024),中間8位表示head(255),後6位表示sector(63)
每扇區512位:
最大定址空間8G:1024*255*63*512
LBA
ATA-1中定義了28位定址模式,以每扇區512位來計算,上限為128GiB
ATA-6規範中採用48位LBA,同樣以每扇區512位組計算容量上限為128Petabytes
分區:
一,分區的好處:
優化I/O性能
實現磁碟空間配額限制
提高修複速度
隔離系統和程式
安裝多個OS
採用不同文件系統
二,分區方式:
MBR和GPT
分區表備份:
dd if=/dev/sda of=/data/dpt bs=1 count=66 skip=446 跳過(源)sda的前446個位元組,備份後66個位元組
破壞分區表:
dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 跳過(目標)sda的前510個位元組,只破壞最後2個位元組
還原:
dd if=/dev/dpt of=/dev/sda ba=1 count=2 skip=64 seek=510 跳過(源)dpt前64位元組,(目標)sda前510位元組,進行恢復
hexdump -C -n 512 /dev/sda --查看/dev/sda的前512個位元組
三,分區工具:
fdisk 用於MBR分區
gdisk 用於GPT分區
parted 高級分區操作
新添加磁碟後可以通過該命令掃描磁碟:
echo '- - -' > /sys/class/scsi_host/host0/scan 或
echo '- - -' > /sys/class/scsi_host/host2/scan
(1)parted用法:
select /dev/sdb 選擇sdb磁碟
mklabel gpt|msdos 創建標簽,gpt或msdos
print 看分區信息
mkpart sdb1 1 200 (預設M),sdb1為分區名稱,1位起始,200為結束
rm 1 刪除1分區
parted –l 列出分區信息
示例:
[root@server ~]# parted
(parted) select /dev/sdb //選擇磁碟sdb
Using /dev/sdb
(parted) mklabel gpt //將MBR磁碟格式化為GPT
(parted) mkpart
Partition name? []?
File system type? [ext2]?
Start? 0
End? 2996G //0 - 2996GB
0表示分區的開始 -1表示分區的結尾 意思是劃分整個硬碟空間為主分區
(2)fdisk,gdisk用法:
子命令:
p 分區列表
t 更改分區類型
n 創建新分區
d 刪除分區
v 校驗分區
w 保存並退出
q 不保存並退出
四,查看分區:
1,fdisk -l /dev/sdv
2,ls /dev/sdb*
3,cat /proc/partitions 查看內核是否已經識別新的分區
4,lsblk
五,同步分區表:
centos5/centos7:
partprobe /dev/sdb centos6使用partprobe會出現問題
centos6:(通知內核重新讀取硬碟分區表)
kpartx -a /dev/sdb -f:force
partx -a /dev/sdb --加分區
partx -d -nr 2-3 /dev/sdb --刪除分區
查看支持的文件系統:
ll /lib/modules/`uname -r`/kernel/fs
Linux的虛擬文件系統:VFS
六,格式化分區:
創建xfs文件系統
mkfs.xfs -t FS_TYPE -L 'LABEL' /dev/DEVICE
創建ext文件系統
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 關閉指定特性
blkid:塊設備屬性信息查看
e2label:管理ext系列文件系統的LABEL
e2label /dev/sdb1 sdb1-1 修改sdb1的LABEL為sdb1-1
findfs:查找分區
findfs LABEL=sdb1-1 查找LABEL為sdb1-1的設備
findfs UUID=***
tune2fs:重新設定ext系列文件系統可調整參數的值
tune2fs -l /dev/sdb1
-l 查看指定文件系統超級塊信息;super block
-L 'LABEL’ 修改捲標
-m 修預留給管理員的空間百分比
-j 將ext2升級為ext3
-O 文件系統屬性啟用或禁用, –O ^has_journal
-o 調整文件系統的預設掛載選項,–o ^acl
-U UUID 修改UUID號
dumpe2fs:顯示ext文件系統信息,將磁碟塊分組管理
-h:查看超級塊信息,不顯示分組信息
xfs_info:顯示已掛載的 xfs 文件系統信息
xfs_info mountpoint
七,掛載文件系統:
mount /dev/DEVICE MOUNT_POINT
centos6:
mknod /dev/loop8 -b 7 8 --手動創建loop設備
vim /boot/grub/grub.conf
max_loop=100 重啟系統會自動生成100個loop設備
losetup /dev/loop8 /data/disk1 --將shebloop8與文件disk1關聯
losetup -a --查看關聯信息
mount /dev/loop8 /mnt/disk1
查看掛載情況
findmnt MOUNT_POINT|device --finemnt /dev/sdb5
查看正在訪問指定文件系統的進程
lsof MOUNT_POINT
fuser -v MOUNT_POINT --可以看到使用設備的用戶
終止所有在正訪問指定的文件系統的進程
fuser -km MOUNT_POINT
八,卸載文件系統
umount DEVICE/MOUNT_POINT
uuidgen --生成UUID
九,文件掛載配置文件
/etc/fstab每行定義一個要掛載的文件系統
1、要掛載的設備或偽文件系統設備文件
LABEL:LABEL=""
UUID:UUID=""
偽文件系統名稱:proc, sysfs
2、掛載點
3、文件系統類型:ext4,xfs,iso9660,nfs,none
4、掛載選項:defaults ,acl,bind
5、轉儲頻率:0:不做備份 1:每天轉儲 2:每隔一天轉儲
6、fsck檢查的文件系統的順序:允許的數字是0 1 2
0:不自檢
1:首先自檢;一般只有rootfs才用
2:非rootfs使用
十,文件系統檢測和修複:
文件系統夾故障常發生於死機或者非正常關機之後,掛載為文件系統標記為“no clean”
註意:一定不要在掛載狀態下執行下麵命令修複
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
註意:FS_TYPE 一定要與分區上已經文件類型相同
-a 自動修複
-r 互動式修複錯誤
e2fsck:ext系列文件專用的檢測修複工具
-y 自動回答為yes
-f 強制修複
-p 自動進行安全的修複文件系統問題
xfs_repair:xfs文件系統專用檢測修複工具
-f 修複文件,而設備
-n 只檢查
-d 允許修複只讀的掛載設備,在單用戶下修複 / 時使用,然後立即reboot
示例1:
擴展swap空間
1,在sdb新建分區sdb1,size為2G,類型為82(swap)
fdisk /dev/sdb
2,將分區寫入特殊簽名swap:
mkswap /dev/sdb1
3,激活交換空間,將swap信息寫入/etc/fstab中
UUID=*** swap swap defsults 0 0
4,激活swap
swapon -a
5,查看swap信息
swapon -s
修改swap優先順序(有多個分區作為swap空間):
1,修改/etc/fstab文件中swap行,defaults修改為pri=VALUE,VALUE為優先順序
2,禁用swap
swapoff -a
3,激活swap
swapon -a
可以指定swap分區0到32767的優先順序,值越大優先順序越高
以文件作為swap空間使用:
1,創建swapfile文件
dd if=/dev/zero of=/swapfile bs=1M count=2048
2,將分區寫入特殊簽名:
mkswap swapfile
3,信息寫入/etc/fstab中,只能用文件名,不能使用UUID
/swapfile swap swap defaults 0 0
4,激活swap
swapon -a
文件夾掛文件夾
/boot /mnt/boot none bind 0 0
掛載光碟
/dev/sro /mnt/cdrom iso9660 defaults 0 0
示例2:
遷移home到新的分區
(建議在維護模式,init 1)
1,新建分區/dev/sda3
fdisk /dev/sda
2,同步分區表
partprobe
3,創建文件系統mkfs
mkfs.xfs /dev/sda3
4,新建一個目錄用於存放home數據
mkdir /mnt/home
5,將/mnt/home掛載給將來home要使用的分區
mount /dev/sda3 /mnt/home
6,將home目錄下的數據拷貝到/mnt/home
cp -a /home/* /mnt/home/
7,刪除home中的數據(生產環境需要觀察一段時間,運行無誤後再刪除)
rm -rf /home/*
8,卸載/mnt/home,並掛載home到/dev/sda3
umount /mnt/home
mount -a