disk partitions & filesystem
---磁盤分區與文件系統---
分區
磁盤分區方法:主流MBR & GPT
parted
fdisk:2T之內
gdisk:更大的分區
查看分區表的四種方法:
lsblk:
cat /proc/partitions:
cat /dev/sd*
fdisk -l /dev/sda 這個命令查看的是硬盤裏的信息,上面三種都是查看內存,可能存在不一樣步的狀況!
如何同步內存的分區表信息?
centos6:
新增長了分區同步:partx -a /dev/sda
新刪除了分區同步:partx -d --nr 6 /dev/sda 刪除了第6個分區
centos7:直接使用該命令同步: partprobe
fdisk使用:
-l /dev/sd* 查看disk相關信息:
centos7:size,sector,I/O,parttions,disk label type(dos/gpt)...
centos6:size,head,sectors,track,cylinder,disk label type... 注:centos6按照柱面劃分,centos7按照扇區劃分。
n:建立新分區
d:刪除
p:打印分區表
q:不存盤退出
w:存盤退出
t:修改ID centos7:
主分區:83
swap:82(ext)
extend:5
LVM:8e
swap:19(GPT)
gdisk:與fdisk指令相似
建立文件系統
爲何建立文件系統?怎麼查看?怎麼使用文件系統?
使用:調用虛擬文件系統提供的命令接口
查看:lsblk -f 或者 blkid
磁盤分區完成後沒有任何信息,文件系統將磁盤以文件的方式組織和管理。
查看Linux內核支持的文件系統:
ls /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/
目前經常使用的:ext4,fat,nfs,xfs,ceph,iso9660(光盤)...
ceph:分佈式文件系統
數據有冗餘,數據的一部分是在好幾臺服務器上有備份,可恢復。
centos6:ext4 >ext2 有日誌功能,掉電數據不會丟失。
centos7:xfs
建立(格式化):mkfs.xfs /dev/sdb1 -f 文件系統建立完成,會生成一些元素據等。
-L "卷標" 建議寫掛載點的名字
如:mkfs.xfs -L "/mnt/dsb1" /dev/sdb1
mke2fs也能夠建立ext文件系統,不建議使用了。
tune2fs -l /dev/sdb2 查看分區的屬性信息,只支持ext系統
centos6:人爲建立的分區,沒有acl功能。tune2fs -o acl /dev/sdb1添加acl屬性 需從新掛載生效
filesystem state:clean 代表沒有問題
如何破壞ext4文件系統並修復?
1:爲/dev/sdb2分區建立ext4文件系統,並掛載 mkfs.ext4 -L "/mnt/sdb2" /devsdb2
2:dd 修改/dev/sdb2 dd if=/dev/zero of=/dev/sdb2 bs=10M count=1
3:fsch修復,從新掛載 fsck.ext4 /dev/sdb2 -y mount /dev/sdb2 /mnt/sdb2/ 可是目錄中原來的文件可能丟失了
查看塊組和節點表和超級快:dumpe2fs /dev/sda1|less
根據UUID查找分區:blkid -U `sed -nr '/^UUID/s/UUID=(.*) \/data.*$/\1/p' /etc/fstab`
blkid:查看分區,LABEL,UUID,mount,filesystem...
[root@chenxu ~]# blkid /dev/sdb2
/dev/sdb2: LABEL="/mnt/sdb2" UUID="5b14eaf9-2ebf-4373-9e99-6a702ab207eb" TYPE="ext4"
掛載:
一個設備能夠有多個掛載點,多個設備不能掛載到一個目錄,一般掛載點應該爲空目錄
umount時,掛載目錄被其餘人佔用(busy)怎麼辦?
查看:lsof /mnt/sdb2/ fuser -v /mnt/sdb2
踢出:fuser -km /mnt/sdb2
查看目錄是否有掛載:findmnt /mnt/sdb2
掛載:建議使用UUID,由於惟一
mount經常使用命令選項:
-r: r
-w: r + w
-n:不更新/etc/mtab,影藏掛載(centos6有效)
-a:自動掛載/etc/fstab中定義的的掛載設備
-U:UUID
-L:LABEL
-B:綁定目錄到另一個目錄
-o:能夠添加一些子選項 acl, remount, ro, noatime, nodiratime,noexec...
一些後面虛擬化會用到的知識:
centos7:
1:建立稀疏文件 dd if=/dev/zero of=vdisk.img bs=1M count=1 seek=2048 建立一個2G的稀疏文件,
2:文件模擬硬盤掛載
1:mkfs.ext4 /data/vdisk.img 建立ext4文件系統
2:mount /data/vdisk.img /mnt/vdisk 掛載
3:df 查看 /dev/loop0 1998608 6144 1871224 1% /mnt/vdisk 默認第一個設備名爲/dev/loop0,與centos不一樣,系統能夠根據文件掛載自動生成相應的/dev/loop*,
centos6須要掛載時指定。
centos6:
1:centos6默認有loop0~loop7 8個換回設備
2:將loop設備與文件綁定 losetup /dev/loop0 /data/vdisk.img
3:掛載 mount /dev/loop0 /mnt/vdisk
4:查看:df /dev/loop0 1108144 1424 1048764 1% /mnt/vdisk
修改默認loop設備數量:vim /boot/grub/grub.conf <-- max_loop=100 須要重啓
永久掛載:
寫入:/etc/fstab
UUID:mount point:filesystem:options:backup天數:check
/etc/fstab文件故障致使系統沒法啓動修復:
centos6:默認/以只讀方式掛載,須要mount -o rw,remount
centos7:是r + w
Swap做用:
[root@chenxu ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 256M 89M 9.3M 1.6G 1.5G
Swap: 3.0G 0B 3.0G
[root@chenxu ~]# dd if=/dev/zero of=/dev/null bs=4G count=1
0+1 records in
0+1 records out
2147479552 bytes (2.1 GB) copied, 7.95993 s, 270 MB/s
添加swap分區後,生效:swapon -a
關閉swap:swapoff
查看swap:cat /proc/swaps
如何把文件看成swap使用?
1,mkswap /data/swapfile
2,swapon -a
3,chmod 600 /data/swapfile
4,swapon -s 查看
測試硬盤速度?
1012 dd if=/dev/zero of=/data/f1 bs=1024 count=1000000 conv=fdatasync
1013 dd if=/dev/zero of=/data/f2 bs=2048 count=500000 conv=fdatasync
1014 dd if=/dev/zero of=/data/f3 bs=4096 count=250000 conv=fdatasync
1015 dd if=/dev/zero of=/data/f4 bs=1024 count=1000000 conv=fdatasync
如何清除一個磁盤的分區信息?
用dd直接清空/dev/sd*的前512字節便可。