在使用虛擬機時,如果磁盤空間沾滿,我們該怎樣擴容呢?
這篇文章分兩種情況來討論
情況一、虛擬機沒有使用邏輯卷,直接擴容磁盤。
情況二、虛擬機使用了邏輯卷,添加一個磁盤,然后擴容邏輯卷。
先來聊聊情況一,虛擬機沒有使用邏輯卷,怎樣直接擴容磁盤以及虛擬機內的文件系統。
整體的大致步驟如下,先看一下,有個思路:
一、做好磁盤鏡像備份
二、增加磁盤鏡像的容量
三、登錄虛擬機,擴容文件系統
此處以使用qcow2磁盤鏡像的虛擬機為例,qcow2磁盤只支持增大,不支持縮小,所以我的模板機一般都設置的默認磁盤大小比較小,100G或者200G,而且都不是立即分配磁盤空間的,等真正用滿的時候,再擴容也不遲,除非是一些確定需要大空間的應用,我會在虛擬機投入使用前就完成擴容,還有,生產環境中,一定要提前備份好磁盤鏡像,避免操作失敗后數據丟失。
備份完成后,確認需要擴容的磁盤沒有快照,qcow2磁盤如果有快照,是不能擴容的,可使用virsh snapshot-list命令查看是否有虛擬機快照,或者使用qemu-img snapshot -l查看磁盤鏡像是否有單獨的磁盤快照,比如,查看kvm1的磁盤鏡像的快照,可以使用如下命令
qemu-img snapshot -l /var/lib/libvirt/images/kvm1.qcow2
磁盤鏡像如果有快照,無法進行擴容
再次確認,已經備份了需要擴容的磁盤,然后開始操作,此處以kvm4為例,從宿主機可以看到,目前kvm4已經啟動
[root@cos7 ~]# virsh list --all Id Name State---------------------------------------------------- 4 kvm4 running - kvm1 shut off - kvm2 shut off - kvm3 shut off - kvm5 shut off - kvm6 shut off
登錄kvm4,查看虛擬機磁盤狀態,如下
[root@kvm4 ~]# fdisk -lDisk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000b9417 Device Boot Start End Blocks Id System/dev/vda1 * 2048 2099199 1048576 83 Linux/dev/vda2 2099200 10227711 4064256 82 Linux swap / Solaris/dev/vda3 10227712 104857599 47314944 83 Linux[root@kvm4 ~]# [root@kvm4 ~]# [root@kvm4 ~]# [root@kvm4 ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 8.5M 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup/dev/vda3 46G 1.3G 44G 3% //dev/vda1 1014M 142M 873M 14% /boottmpfs 379M 0 379M 0% /run/user/0
從上述信息可以看出,目前kvm4虛擬機只有一塊vda磁盤,有三個分區,/dev/vda1分區是boot分區,/dev/vda2是swap分區,/dev/vda3是根文件系統,根的大小是46G,44G可用,此處假設,根分區已經沾滿了,我們需要擴容根分區,雖然最終目標是擴容根分區,但是需要先在宿主機上,為kvm4的磁盤進行擴容,擴容完磁盤后,再擴容分區的文件系統。
在宿主機上確認kvm4的磁盤鏡像路徑,如下:
[root@cos7 ~]# virsh domblklist kvm4Target Source------------------------------------------------vda /var/lib/libvirt/images/kvm4.qcow2hda -
可以看到,kvm4的磁盤鏡像路徑是/var/lib/libvirt/images/kvm4.qcow2,對應掛載到了kvm4的vda磁盤,先看一下目前磁盤鏡像的大小
[root@cos7 ~]# qemu-img info /var/lib/libvirt/images/kvm4.qcow2image: /var/lib/libvirt/images/kvm4.qcow2file format: qcow2virtual size: 50G (53687091200 bytes)disk size: 1.5Gcluster_size: 65536Format specific information: compat: 1.1 lazy refcounts: true
如上所示,磁盤虛擬大小為50G,目前占用宿主機1.5G空間,磁盤格式是一個qcow2的磁盤。
現在,我們要擴容這個磁盤鏡像,增容20G的空間,但是在操作之前,請先停止虛擬機,雖然不停止也可以增容成功,但是會報錯,目前還不清楚,錯誤是否會對虛擬機以后的運行產生影響,保險起見,先停止虛擬機,然后再執行如下命令對磁盤鏡像進行擴容。
停止虛擬機后,執行如下命令
[root@cos7 ~]# qemu-img resize /var/lib/libvirt/images/kvm4.qcow2 +20GImage resized.
增容后,再次查看磁盤鏡像信息,如下,磁盤的virtual size已經從50G變成了70G
[root@cos7 ~]# qemu-img info /var/lib/libvirt/images/kvm4.qcow2image: /var/lib/libvirt/images/kvm4.qcow2file format: qcow2virtual size: 70G (75161927680 bytes)disk size: 2.5Gcluster_size: 65536Format specific information: compat: 1.1 lazy refcounts: true
磁盤擴容成功后,啟動kvm4虛擬機,登錄到虛擬機內,再次查看磁盤信息,發現已經變成了75G
[root@kvm4 ~]# fdisk -lDisk /dev/vda: 75.2 GB, 75161927680 bytes, 146800640 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000b9417 Device Boot Start End Blocks Id System/dev/vda1 * 2048 2099199 1048576 83 Linux/dev/vda2 2099200 10227711 4064256 82 Linux swap / Solaris/dev/vda3 10227712 104857599 47314944 83 Linux
但是,根分區和對應的文件系統還沒有擴容,如下,可以看到/dev/vda3分區仍然識別為48G,根文件系統仍然識別為46G。
[root@kvm4 ~]# fdisk -lu /dev/vda3Disk /dev/vda3: 48.5 GB, 48450502656 bytes, 94629888 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes[root@kvm4 ~]# [root@kvm4 ~]# [root@kvm4 ~]# [root@kvm4 ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 8.5M 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup/dev/vda3 46G 1.3G 44G 3% //dev/vda1 1014M 142M 873M 14% /boottmpfs 379M 0 379M 0% /run/user/0
我們現在的目標就是擴容根分區和文件系統。
此處可以參考阿里云的文檔進行擴容操作,鏈接如下:
https://help.aliyun.com/document_detail/113316.html?spm=5176.21213303.J_6028563670.36.241a3edapvGQJG&scm=20140722.S_help
我的虛擬機操作系統是centos7,分區是MBR分區,不是GPT分區,文件系統是xfs,所以,我的擴容過程可能跟實際遇到的情況不太一樣,這里需要以實際情況為準,參考上面的文檔,做出不同的細節處理,生產環境中最好提前克隆出一個機器或者做一個測試機進行模擬。
首先,在虛擬機中安裝cloud-utils-growpart工具(如果是GPT分區,先安裝gdisk),對分區進行擴容,centos7中命令如下
yum install -y cloud-utils-growpart
安裝完成后,執行如下命令擴容對應分區,我需要擴容vda3,所以命令中是vda 3,vda和3中間有空格
[root@kvm4 ~]# growpart /dev/vda 3CHANGED: partition=3 start=10227712 old: size=94629888 end=104857600 new: size=136572895 end=146800607
可以看到,分區的大小已經改變,使用命令確認,vda3分區的大小已經識別為69.9G
[root@kvm4 ~]# fdisk -lu /dev/vda3Disk /dev/vda3: 69.9 GB, 69925322240 bytes, 136572895 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes
如果擴容完成后,再次執行擴容命令,會提示NOCHANGE…it cannot be grown,這是因為,分區已經擴展完成了,沒有富裕的空間可供擴展了,其實,還有一種情況也會報如下錯誤,導致無法擴容分區,我們一會兒再聊,先把一整套擴容流程走完,此處重復執行如下命令不會影響擴容。
[root@kvm4 ~]# growpart /dev/vda 3NOCHANGE: partition 3 is size 136572895. it cannot be grown
vda3分區擴容完成后,需要擴容分區對應的文件系統,此處文件系統是xfs,所以執行xfs_growfs命令即可,如果是ext文件系統,需要使用resize2fs命令,此處運行的命令為xfs_growfs /dev/vda3
如下:
[root@kvm4 ~]# xfs_growfs /dev/vda3meta-data=/dev/vda3 isize=512 agcount=4, agsize=2957184 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0data= bsize=4096 blocks=11828736, imaxpct=25= sunit=0 swidth=0 blksnaming=version 2 bsize=4096 ascii-ci=0 ftype=1log=internal bsize=4096 blocks=5775, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime=none extsz=4096 blocks=0, rtextents=0data blocks changed from 11828736 to 17071611
再次查看磁盤使用情況,可以看到,根分區已經從之前的46G擴容到了66G,如下
[root@kvm4 ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 8.5M 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup/dev/vda3 66G 1.4G 64G 3% //dev/vda1 1014M 142M 873M 14% /boottmpfs 379M 0 379M 0% /run/user/0
至此,整個擴容操作已經完成了。
此處有一個坑,剛才已經提到過,在擴容分區時,我們使用了growpart命令,如果重復執行此命令,會提示NOCHANGE…it cannot be grown,這是因為已經沒有更多空間可供分區擴容了,但是,在某些特殊情況下,磁盤明明還有很多空間,在第一次執行growpart命令時就會提示it cannot be grown,現在咱們就來聊聊這種特殊情況。
如果磁盤有很多富??臻g可供分區擴容,但是每次執行growpart命令就提示it cannot be grown,很有可能是因為,你要擴容的分區不是磁盤的最后一個分區,上例中,我要擴容的vda3就是vda磁盤的最后一個分區,如下圖,可以通過分區號或者分區區間很明顯的看出,vda3就是vda的最后一個分區
這種情況下,第一次執行growpart命令擴容分區時,應該是可以正常執行的。
但是,如果你遇到的分區是下面的情況,而你想要擴容的分區恰巧不是磁盤的最后一個分區,則無法擴容成功,會直接提示it cannot be grown
[root@kvm1 ~]# fdisk -lDisk /dev/vda: 536.9 GB, 536870912000 bytes, 1048576000 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000ac5a2 Device Boot Start End Blocks Id System/dev/vda1 * 2048 2099199 1048576 83 Linux/dev/vda2 2099200 1044367359 521134080 83 Linux/dev/vda3 1044367360 1048561663 2097152 82 Linux swap / Solaris[root@kvm1 ~]# [root@kvm1 ~]# [root@kvm1 ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 909M 0 909M 0% /devtmpfs 919M 0 919M 0% /dev/shmtmpfs 919M 8.6M 911M 1% /runtmpfs 919M 0 919M 0% /sys/fs/cgroup/dev/vda2 497G 1.3G 496G 1% //dev/vda1 1014M 142M 873M 14% /boottmpfs 184M 0 184M 0% /run/user/0
如上,vda一共有三個分區,根對應的分區是vda2,即使vda磁盤有很多富??臻g,如果想要使用growpart命令擴容vda2,也是不行的,會直接提示it cannot be grown,因為上例中,vda2后面還有一個vda3分區,而上例中的情況比較好處理,因為最后一個分區是swap分區,我們只需要刪除這個分區,然后再擴容vda2就好了,擴容完成后,再單獨掛載一個磁盤作為swap分區或者使用文件作為swap分區,所以,在做模板機的時候要避開這個坑,別問我怎么知道的。
直接擴容磁盤和文件系統的情況已經描述清楚了,現在說說添加一個磁盤,擴展lvm邏輯卷的情況,其實這里描述的重點是怎樣為虛擬機添加一塊磁盤,磁盤添加后,是用來擴展邏輯卷,還是單獨作為一個分區使用,就看具體情況了,所以此處只演示為虛擬機添加磁盤和卸載磁盤的操作,此處以kvm6為例進行演示,kvm6已經啟動了,查看kvm6當前的磁盤有哪些,在宿主機執行如下命令:
[root@cos7 ~]# virsh domblklist kvm6Target Source------------------------------------------------vda /var/lib/libvirt/images/kvm6.qcow2vdb /var/lib/libvirt/images/kvm6_vdb.qcow2hda -
可以看到,kvm6已經有兩塊磁盤了,分別對應vda和vdb,現在,創建一塊新的磁盤,我準備將新創建的磁盤對應到kvm6的vdc上,所以直接為磁盤文件命名為kvm6_vdc.qcow2,注意!在同路徑下,不要與現有的盤重名,否則會清空同名盤,命令如下:
qemu-img create -f qcow2 /var/lib/libvirt/images/kvm6_vdc.qcow2 5G
我們已經創建好了磁盤,但是還沒有將磁盤添加到kvm6上,在添加磁盤之前,先看看kvm6的配置文件,磁盤部分的配置如下,其他配置省略了
<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/kvm6.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/kvm6_vdb.qcow2'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk>
從配置文件中可以再次印證,目前有kvm6有兩塊盤,當我們將次三塊盤添加到kvm6以后,會多出一段第三塊盤的配置。
確保kvm6開機后,使用如下命令,將磁盤添加到kvm6虛擬機上,如下添加磁盤的操作,只能在虛擬機開機的情況下執行。
virsh attach-disk --domain kvm6 --source /var/lib/libvirt/images/kvm6_vdc.qcow2 --subdriver qcow2 --target vdc --targetbus virtio --persistent
如上所示,使用virsh attach-disk為指定的虛擬機添加磁盤,–domain指定虛擬機名,–source指定要添加的磁盤文件,–subdriver指定磁盤文件的格式,由于我使用的是qcow2格式的磁盤,所以此處不能省略–subdriver參數,如果省略此參數,默認會被當做raw格式的磁盤,如果被當做raw格式的磁盤,磁盤掛載后,對應的磁盤空間會識別為磁盤實際占用的大小(與宿主機中識別的大小一樣,測試的qcow2沒有預分配空間),所以此處使用–subdriver qcow2指明磁盤格式,–target參數用來指定磁盤文件對應虛擬機中的哪個磁盤,這里有個坑,如果這個磁盤是第一次被使用,那么使用target指定的目標是通常準確的,如果這塊盤其他虛擬機使用過,那么target指定后的目標可能會出現誤差(有一定幾率),這樣描述可能讓你無法理解是什么意思,此處先不聊這個小坑,文章最后再做詳細的解釋。–targetbus virtio用來指定是否使用virtio總線驅動,由于我的虛擬機是centos7,默認支持virtio,所以添加上了,具體還需要根據虛擬機操作系統的實際情況,決定是否添加,–persistent參數表示配置是否永久生效,如果不添加–persistent參數,磁盤只是臨時添加到虛擬機中,虛擬機斷電重啟后,不會再有對應的新磁盤,也就是說,不加–persistent參數,虛擬機的xml配置文件是不會被修改的,如果加上–persistent參數,虛擬機的xml配置文件會被自動修改,添加上新磁盤的配置。
執行上述命令后,再次查看kvm6的xml配置文件,會發現多出了新磁盤的配置,如下
<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/kvm6.qcow2'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/kvm6_vdb.qcow2'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/kvm6_vdc.qcow2'/> <target dev='vdc' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </disk>
如上所示,最后一塊盤的配置就是我們添加的新盤,因為我們在添加磁盤時,使用了–persistent參數,進入虛擬機,查看磁盤列表,已經可以看到新加入的磁盤了。
[root@kvm6 ~]# fdisk -lDisk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000ba397 Device Boot Start End Blocks Id System/dev/vda1 * 2048 2099199 1048576 83 Linux/dev/vda2 2099200 104857599 51379200 8e Linux LVMDisk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-root: 53.8 GB, 53812920320 bytes, 105103360 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/vdc: 5368 MB, 5368709120 bytes, 10485760 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes
現在要做的就是初始化磁盤了,根據需求不同,做出不同的操作,比如,是創建pv加入到卷組中,還是作為一個單獨的分區使用,就看具體情況了,為了方便演示,此處直接當做一個掛載點去使用,需要注意的是,在設置完成后,配置好自動掛載,此處不分區,直接為vdc創建xfs文件系統。
[root@kvm6 ~]# mkfs.xfs /dev/vdcmeta-data=/dev/vdc isize=512 agcount=4, agsize=327680 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data= bsize=4096 blocks=1310720, imaxpct=25= sunit=0 swidth=0 blksnaming=version 2 bsize=4096 ascii-ci=0 ftype=1log=internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime=none extsz=4096 blocks=0, rtextents=0
創建一個測試目錄當做掛載點,掛載新的硬盤
[root@kvm6 ~]# mkdir /testdisk[root@kvm6 ~]# mount /dev/vdc /testdisk[ 1010.692185] XFS (vdc): Mounting V5 Filesystem[ 1010.711786] XFS (vdc): Ending clean mount[root@kvm6 ~]# [root@kvm6 ~]# [root@kvm6 ~]# df -hFilesystem Size Used Avail Use% Mounted ondevtmpfs 1.9G 0 1.9G 0% /devtmpfs 1.9G 0 1.9G 0% /dev/shmtmpfs 1.9G 8.5M 1.9G 1% /runtmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup/dev/mapper/centos-root 51G 1.3G 49G 3% //dev/vda1 1014M 150M 865M 15% /boottmpfs 379M 0 379M 0% /run/user/0/dev/vdc 5.0G 33M 5.0G 1% /testdisk
實際使用中,記得修改fstab,把磁盤自動掛載(當然如果是邏輯卷就另說),而且需要注意,設置自動掛載時,應該用磁盤的UUID,使用UUID是最準確最保險的。
磁盤掛載已經完成了,現在來看看怎樣卸載磁盤,操作如下
如果之前設置過自動掛載,先把對應的自動掛載配置注釋了,避免卸載磁盤后,找不到對應的磁盤影響啟動。
確定取消自動掛載后,在虛擬機系統內卸載對應的掛載點,卸載掛載點后,確保虛擬機正在運行,在宿主機中執行如下命令,
virsh detach-disk kvm6 /var/lib/libvirt/images/kvm6_vdc.qcow2 --persistent
執行上述命令后,磁盤卸載操作直接生效,并且永久生效,與添加磁盤同理,–persistent參數會修改配置文件,將對應的磁盤配置段刪除。
卸載下來的磁盤也可以掛載到其他虛擬機上使用,比如,我剛剛從kvm6上卸載了kvm6_vdc.qcow2這塊磁盤,現在我想把這塊磁盤掛載到kvm5上使用,也是可以的,但是可能會遇到一些小問題,我們先來查看一下kvm5目前都有哪些磁盤
[root@cos7 ~]# virsh domblklist kvm5Target Source------------------------------------------------vda /var/lib/libvirt/images/kvm5.qcow2hda -
如上所示,只有一塊磁盤,對應虛擬機中的vda,此時,我們執行如下命令,將kvm6卸載下的盤掛載到kvm5上,臨時掛載命令如下:
[root@cos7 ~]# virsh attach-disk --domain kvm5 --source /var/lib/libvirt/images/kvm6_vdc.qcow2 --subdriver qcow2 --target vde --targetbus virtioDisk attached successfully[root@cos7 ~]# virsh domblklist kvm5Target Source------------------------------------------------vda /var/lib/libvirt/images/kvm5.qcow2vde /var/lib/libvirt/images/kvm6_vdc.qcow2hda -
如上所示,我們將kvm6_vdc.qcow2掛載到了kvm5上,并且指定kvm6_vdc.qcow2對應kvm5的vde,從宿主機上查看,kvm6_vdc.qcow2的確對應的是vde,但是進入kvm5,會發現,新加入的盤符并不是vde,而是vdc,如下所示
[root@kvm5 /]# fdisk -lDisk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000ba397 Device Boot Start End Blocks Id System/dev/vda1 * 2048 2099199 1048576 83 Linux/dev/vda2 2099200 104857599 51379200 8e Linux LVMDisk /dev/mapper/centos-root: 48.4 GB, 48444211200 bytes, 94617600 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/centos-swap: 4160 MB, 4160749568 bytes, 8126464 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/vdc: 5368 MB, 5368709120 bytes, 10485760 sectorsUnits=sectors of 1 * 512=512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes
之前實驗過,有時會被識別成順位最新的一個盤符,比如,虛擬機只有一塊vda,在宿主機中指定的target是vdc,但是自動識別成第二個盤符vdb的,不過有時也會準確的按照target指定的盤符去識別,通過實驗無法確定原因,所以這是一個注意點,我們只需要記住,如果磁盤是使用過的,當添加到虛擬機時,使用–target指定盤符后,在虛擬機中實際識別的結果可能是有誤差的,有可能與在宿主機中查看的結果不一致,需要以實際情況為準,最好按照盤符的順位指定target,中間不要隔著沒有使用的盤符,比如vda后應該是vdb,那么就指定用vdb,而不是直接跳過vdb,指定vdc或者vdd,這樣容易出問題,如果出現誤差,可以嘗試卸載后再次掛載。
筆記本電腦與DIY臺式機不同,前者注重便攜性,集成度較高,后者注重定制化,可玩性較強。
絕大多數輕薄本內部空間太小,已經沒有升級的可能了,但是游戲本,或者部分全能本,依舊有多個硬盤位。
今天我們換換口味,不評電腦了,來教大家如何給筆記本電腦升級固態硬盤:
第一步:拆開筆電后蓋
筆記本電腦形態各異,對于90%以上的新品來說,僅需要擰下底面螺絲就能揭開后蓋了:
但筆電底蓋除了螺絲固定,還有塑料卡扣固定(蘋果MacBook會用萬惡的金屬卡扣),拆機時如不慎掰斷,屬于正常現象,一般只影響心情,不影響使用。
第二步:找到硬盤接口
如今的筆電硬盤,早就不是“鐵餅一塊”了,而是一片薄薄的小卡片,長這樣↓
上圖硬盤左端為固定螺絲位,右端就是插接口的位置。
看到上圖中間綠色的固態硬盤了嗎?這是電腦原裝的硬盤,而上面有一塊淺色的空擋,那就是供用戶自行升級的固態硬盤位,空擋左側是螺絲固定位,右側是硬盤接口,正式名字叫【M.2接口】。
第三步:插入硬盤并固定
硬盤接口是躺著的,但硬盤插入是斜著的。(極少數需要躺平插)
先“斜著插入”↑
再“壓平固定”↓
一般電腦或固態硬盤商會提供固定螺絲,沒有就只能另外配了,小區門口的修電腦小店里必定會有,問他要“M.2硬盤固定螺絲”即可。
第四步:點亮并使用固態硬盤
硬盤裝完后,筆電后蓋記得原樣蓋回去!螺絲別忘記擰!
固態硬盤裝完后,是無法直接使用的,我們需要從系統里【激活硬盤】:
根據上圖,在Win10系統中搜索【創建并格式化硬盤分區】,點擊就會跳出下圖。
框中靠下的位置可以看到一個950多GB的“未分配”磁盤,這就是我們剛安裝好的硬盤。
↑鼠標移到盤上,右鍵,點擊“新建簡單卷”,即可跳出下圖對話框↓
然后選擇要分配到的驅動器號,我們選擇D,今后就會出現一個“D盤”。
然后點擊下一步:
上面這張圖比較關鍵,我們按照此圖設置即可,選擇NTFS、默認值,并勾選“執行快速格式化”,再點擊下一步。
稍作等待后,點擊完成,就搞定了!
此時再雙擊我的電腦,就能找到剛安裝好的D盤了。
至此,硬盤已經加裝完畢,辛苦了!
接下來我們點評一下這次用來安裝的固態硬盤:
浦科特M9P Plus
它的配置如下:
主控 Marvell 88SS1092
1024MB 南亞緩存
東芝96層TLC顆粒
NVMe 1.3協議
雙十一售價899元
【存儲性能】
我們拿到的浦科特M9P Plus為1TB版本,帶有1024MB的獨立緩存設計,在日常使用中,遇到小文件的讀寫可以降低對顆粒的使用次數,增加顆粒的壽命。
左滑可以看更多跑分↓
PCMark10 跑分
CDM7跑分
CDM6跑分
上圖是浦科特提供的PCMark10跑分,選擇子項目是Full System Drive Benchmark。比起AS SSD等測試,PCMark10能夠更貼近展現實際應用,分數反應也更為真實。
2726分在同等級硬盤里面屬于一個相當高的分數,印象中目前也只有傲騰比這個分數更高。
同時我們使用了使用CrystalDiskMark 6/7進行實測,是一個比較不錯的成績。
為了探究其動態緩存策略,我們使用HDTune分別在空盤、半盤、75%容量和90%容量時進行100GB文件的讀寫測試,成績如下:
左滑可以看更多跑分↓
空盤測試
50%容量測試
75%容量測試
90%容量測試
空盤時,能夠以1900MB/s的速度持續寫入約55GB,隨后出緩,緩外速度約為530MB/s。
半盤時,同樣能以1900MB/s的速度持續寫入約55GB,緩外速度此時出現波動,最低230MB/s,最高530MB/s。
在75%容量時,M9P Plus在以1900MB/s持續寫入8GB后便出緩,速度于230MB/s至530MB/s之間波動,50GB后恢復1900MB/s的速度,80GB后重復波動,這應該是觸發了動態緩存清理機制。
在90%容量時,大約7-8GB既出緩,緩外530MB/s。
在所有容量下,讀取速度均能保持在2000MB/s-2500MB/s之間,因此如果你使用M9P Plus作為倉庫盤或者游戲讀取盤,它的讀取能夠滿足你的需求。
但如果你將它作為素材剪輯盤使用,需要經常進行大文件的寫入行為,那么它的緩外寫入速度和波動都會對你的剪輯造成一定的影響。