Linux

重新啟動到新作業系統時,使用 ashift=9 從 liveCD 創建 ZFS 池變為 ashift=12

  • December 19, 2019

我在 Linux Mint liveCD 上啟動時創建了一個 zpool(所有 ZFS 包 temp apt-installed),並創建了一個帶有命令行的 zpool,ashift=9因為我的 ST4000NM0033 驅動器(每個 8 個)有 512B 扇區。在 LiveCD 中還在池上創建了一些 ZFS 文件系統

在仍然執行 liveCD 的同時,我能夠通過執行來驗證池是否使用 ashift=9 zdb -e -C pool0 | grep ashift。我不得不使用這些-e -C pool0選項,因為沒有它們我會cannot open /etc/zfs/zpool.cache出錯

但是一旦我安裝並重新啟動到真正的作業系統,即 root 上的 ZFS,然後重新執行zdb | grep ashift它報告ashift=12

我也在 vdevs 下使用 LUKS。每個都有一個分離的標頭檔和密鑰文件,我從帶有 grub/efi/boot 的 USB 密鑰啟動系統。

zpool 是一個 2x 剝離的 4 驅動器 RAIDZ1 排列。

zpool 詳細資訊:

點擊查看詳細圖片。它不會正確粘貼

這是zdb執行系統的結果

version: 5000
name: 'pool0'
state: 0
txg: 331399
pool_guid: 4878817387727202324
errata: 0
hostname: 'shop'
com.delphix:has_per_vdev_zaps
vdev_children: 1
vdev_tree:
   type: 'root'
   id: 0
   guid: 4878817387727202324
   children[0]:
       type: 'raidz'
       id: 0
       guid: 4453362395566037229
       nparity: 1
       metaslab_array: 138
       metaslab_shift: 36
       ashift: 12
       asize: 7996794994688
       is_log: 0
       create_txg: 4
       com.delphix:vdev_zap_top: 129
       children[0]:
           type: 'disk'
           id: 0
           guid: 17425041855122083436
           path: '/dev/mapper/luks_root_sda'
           whole_disk: 0
           DTL: 179
           create_txg: 4
           com.delphix:vdev_zap_leaf: 130
       children[1]:
           type: 'disk'
           id: 1
           guid: 14306620094487281535
           path: '/dev/mapper/luks_root_sdb'
           whole_disk: 0
           DTL: 178
           create_txg: 4
           com.delphix:vdev_zap_leaf: 131
       children[2]:
           type: 'disk'
           id: 2
           guid: 16566898459604505385
           path: '/dev/mapper/luks_root_sdc'
           whole_disk: 0
           DTL: 177
           create_txg: 4
           com.delphix:vdev_zap_leaf: 132
       children[3]:
           type: 'disk'
           id: 3
           guid: 542095292802891028
           path: '/dev/mapper/luks_root_sdd'
           whole_disk: 0
           DTL: 176
           create_txg: 4
           com.delphix:vdev_zap_leaf: 133
       children[4]:
           type: 'disk'
           id: 4
           guid: 14142266371747430354
           path: '/dev/mapper/luks_root_sde'
           whole_disk: 0
           DTL: 175
           create_txg: 4
           com.delphix:vdev_zap_leaf: 134
       children[5]:
           type: 'disk'
           id: 5
           guid: 9998698084287190219
           path: '/dev/mapper/luks_root_sdf'
           whole_disk: 0
           DTL: 174
           create_txg: 4
           com.delphix:vdev_zap_leaf: 135
       children[6]:
           type: 'disk'
           id: 6
           guid: 9268711926727287907
           path: '/dev/mapper/luks_root_sdg'
           whole_disk: 0
           DTL: 173
           create_txg: 4
           com.delphix:vdev_zap_leaf: 136
       children[7]:
           type: 'disk'
           id: 7
           guid: 16360862201213710466
           path: '/dev/mapper/luks_root_sdh'
           whole_disk: 0
           DTL: 172
           create_txg: 4
           com.delphix:vdev_zap_leaf: 137
features_for_read:
   com.delphix:hole_birth
   com.delphix:embedded_data

更新:似乎ashift直接在設備上檢查值顯示預期ashift=9值。不知道為什麼上層值不同

zdb -l /dev/mapper/luks_root_sda

標籤 0

version: 5000
name: 'pool0'
state: 0
txg: 2223
pool_guid: 13689528332972152746
errata: 0
hostname: 'shop'
top_guid: 8586701185874218688
guid: 11289841240384277392
vdev_children: 2
vdev_tree:
   type: 'raidz'
   id: 0
   guid: 8586701185874218688
   nparity: 1
   metaslab_array: 142
   metaslab_shift: 37
   ashift: 9
   asize: 15901962272768
   is_log: 0
   create_txg: 4
   children[0]:
       type: 'disk'
       id: 0
       guid: 11289841240384277392
       path: '/dev/mapper/luks_root_sda'
       whole_disk: 0
       create_txg: 4
   children[1]:
       type: 'disk'
       id: 1
       guid: 7916996642850715828
       path: '/dev/mapper/luks_root_sdb'
       whole_disk: 0
       create_txg: 4
   children[2]:
       type: 'disk'
       id: 2
       guid: 5366943858334839242
       path: '/dev/mapper/luks_root_sdc'
       whole_disk: 0
       create_txg: 4
   children[3]:
       type: 'disk'
       id: 3
       guid: 3110382675821028014
       path: '/dev/mapper/luks_root_sdd'
       whole_disk: 0
       create_txg: 4
features_for_read:
   com.delphix:hole_birth
   com.delphix:embedded_data
labels = 0 1 2 3

這個問題是由當我用新的 8x4TB 陣列替換 8x1TB 設置並將原始根目錄/etc/zfs/zpool.cache複製回原位時復製到位的陳舊問題引起的。/

似乎 ZFS 沒有更新zpool.cachezdb -l從該文件讀取,而zdb -l /dev/DEVICE | grep ashift直接從 zdev 讀取並顯示了預期的 ashift=9 值。

為了糾正整個問題,我刪除zpool.cache並執行zpool set cachefile=/etc/zfs/zpool.cache pool0

引用自:https://serverfault.com/questions/995203