1. 程式人生 > >Linux學習筆記九:磁盤分區與文件系統

Linux學習筆記九:磁盤分區與文件系統

方式 默認 label 掛載設備 文件的 gdisk part 生成 grub.con

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字節即可。

Linux學習筆記九:磁盤分區與文件系統