PR

QNAP TS-253D でサードパーティー PCIe NVMe M.2 SSD をストレージとして使用してみた

QNAP TS-253D に拡張カード、例えば QM2-2P-244A を使用すると標準のドライブベイ以外に M.2 SSD を搭載可能になり、ストレージやキャッシュとして利用することができる。

しかし、純正でないサードパーティ製の PCIe NVMe M.2 SSD 拡張カードを利用した場合には SSD 自体は認識されるものの、互換性の問題などからストレージとしては使用できず、キャッシュ用としての利用に制限される。公式FAQ以下参照。

保証はないがストレージとして利用する方法についてメモしておく。
私はVirtualization StationのVM用のストレージとして利用中で、性能検証などについては別の投稿をあげる予定。あげた「QNAP Virtualization Station 3 での SSD と HDD の性能差は 27倍だった
QTS 4.5.4 とQTS 5.0.1 で動作確認済みだが自己責任で。

拡張カードの準備

TS-253DはPCIe Gen2 x4 なのでそれっぽいロープロファイルな拡張カードを探して取り付ける。私はAmazonで1,000円のPCIe3.0 x4のヒートシンク付きのカードを買った。ブラケットは合わないので取り付けず、結束バンドで本体と固定した。固定しておかないとHDDの振動などで音鳴りの原因となる。

余談
TS-253DはPCIe Gen2x4 だが、TS-453D, TS-653D は PCIe Gen2x2 と謎な仕様。なにかにリソースをくわれててx2までしか使用できないのか、カタログ表記の間違いなのかどうかはわからない。

ストレージの設定

SSDをRAID管理下から切り離す

増設直後がどうだったか忘れてしまってたので、キャッシュを解除して取り外せる状態からの作業として紹介する。全然状況が異なりよくわからない場合にはいったんキャッシュとして利用設定して解除してみてほしい。下のスクリーンショットの状態からスタートとする。

状態の確認

一度キャッシュに設定するとキャッシュを解除してもパーティションなどがそのままで何も操作できないので /proc/mdstat, /proc/swaps の情報から /dev/nvme0n1 がどのように使われているか確認する。

[~] # cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] 
md321 : active raid1 nvme0n1p5[0]
      8283712 blocks super 1.0 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdb3[2] sda3[3]
      5850567168 blocks super 1.0 [2/2] [UU]
      
md322 : active raid1 sdb5[1] sda5[0]
      7235136 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md256 : active raid1 sdb2[1] sda2[0]
      530112 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md13 : active raid1 nvme0n1p4[66] sdb4[65] sda4[64]
      458880 blocks super 1.0 [64/3] [UUU_________略_________]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md9 : active raid1 nvme0n1p1[66] sdb1[65] sda1[64]
      530048 blocks super 1.0 [64/3] [UUU_________略_________]
      bitmap: 1/1 pages [4KB], 65536KB chunk

[~] # cat /proc/swaps 
Filename				Type		Size		Used		Priority
/dev/md256                              partition	530108		0		-3
/dev/md322                              partition	7235132		0		-4
/share/CACHEDEV1_DATA/.swap/qnap_swap   file		16777212	0		-5
/dev/md321                              partition	8283708		0		-2

ここでは md13, md9 がストレージの一部(キャッシュ用)として、md321がスワップで使われているっぽいことがわかれば良い。

RAIDから切り離す(md13, md9)

SSDが関連するデバイスをfailさせてから、RAIDからremoveする。

[~] # mdadm --manage /dev/md13 --fail /dev/nvme0n1p4  
mdadm: set /dev/nvme0n1p4 faulty in /dev/md13
[~] # mdadm --manage /dev/md13 --remove /dev/nvme0n1p4
mdadm: hot removed /dev/nvme0n1p4 from /dev/md13
[~] # mdadm --manage /dev/md9 --fail /dev/nvme0n1p1   
mdadm: set /dev/nvme0n1p1 faulty in /dev/md9
[~] # mdadm --manage /dev/md9 --remove /dev/nvme0n1p1
mdadm: hot removed /dev/nvme0n1p1 from /dev/md9
[~] # cat /proc/mdstat                               
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] 
md321 : active raid1 nvme0n1p5[0]
      8283712 blocks super 1.0 [2/1] [U_]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md1 : active raid1 sdb3[2] sda3[3]
      5850567168 blocks super 1.0 [2/2] [UU]
      
md322 : active raid1 sdb5[1] sda5[0]
      7235136 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md256 : active raid1 sdb2[1] sda2[0]
      530112 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md13 : active raid1 sdb4[65] sda4[64]
      458880 blocks super 1.0 [64/2] [UU_________略_________]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md9 : active raid1 sdb1[65] sda1[64]
      530048 blocks super 1.0 [64/2] [UU_________略_________]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

swapの削除(md321)

swapを停止して、RAIDを停止する。

[~] # swapoff /dev/md321
[~] # cat /proc/swaps   
Filename				Type		Size		Used		Priority
/dev/md256                              partition	530108		0		-2
/dev/md322                              partition	7235132		0		-3
/share/CACHEDEV1_DATA/.swap/qnap_swap   file		16777212	0		-4
[~] # mdadm --stop /dev/md321    
mdadm: stopped /dev/md321
[~] # cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] 
md1 : active raid1 sdb3[2] sda3[3]
      5850567168 blocks super 1.0 [2/2] [UU]
      
md322 : active raid1 sdb5[1] sda5[0]
      7235136 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md256 : active raid1 sdb2[1] sda2[0]
      530112 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md13 : active raid1 sdb4[65] sda4[64]
      458880 blocks super 1.0 [64/2] [UU_________略_________]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md9 : active raid1 sdb1[65] sda1[64]
      530048 blocks super 1.0 [64/2] [UU_________略_________]
      bitmap: 1/1 pages [4KB], 65536KB chunk

SSD内のパーティションを削除

これまでの作業でSSDが使用されない状態にできたので、SSDをクリアする。

[~] # parted /dev/nvme0n1
(parted) p                                                                
p
Model: Unknown (unknown)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name     Flags
 1      20.5kB  543MB   543MB   ext3            primary
 2      543MB   1086MB  543MB                   primary
 3      1086MB  503GB   502GB                   primary
 4      503GB   504GB   543MB   ext3            primary
 5      504GB   512GB   8554MB  linux-swap(v1)  primary

(parted) rm 1                                                             
rm 1
(parted) rm 2                                                             
rm 2
(parted) rm 3                                                             
rm 3
(parted) rm 4                                                             
rm 4
(parted) rm 5                                                             
rm 5
(parted) p                                                                
p
Model: Unknown (unknown)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  Flags

(parted) q

SSDの再フォーマット

SSDの全領域を使えるようにフォーマットする。私の場合は512GBを1パーテションにしました。

[~] # parted /dev/nvme0n1                                                 
GNU Parted 3.1
Using /dev/nvme0n1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mkpart p1 ext4 0% 100%                                           
mkpart p1 ext4 0% 100%
(parted) p                                                                
p
Model: Unknown (unknown)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  512GB  512GB               p1

(parted) q  

[~] # mke2fs -t ext4 -L NVMeSSD /dev/nvme0n1p1                            
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 125026560 4k blocks and 7815168 inodes
Filesystem UUID: d25ca4d6-5293-468c-82d0-d606f93b1d36
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
	102400000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done     


[~] # mkdir /mnt/nvme
[~] # mount -t ext4 /dev/nvme0n1p1 /mnt/nvme
[~] # ls /mnt/nvme/
lost+found/
[~] # umount /mnt/nvme
[~] # 

autorun.shでの自動マウント

公式でautorun.shの作成方法があるのでそれに従って作業する。(autorun用のダミーパッケージを用意するやり方でも良いが、公式に従ったほうが良いと思う)

Running Your Own Application at Startup

TS-253Dは「All HAL-based Intel and AMD NAS use …」の手順に従うが、面倒なので「editautorun.sh: script to ease autorun.sh edit」を参考に編集用スクリプトを以下の内容で用意して実行することにした。

mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
touch /tmp/config/autorun.sh
chmod +x /tmp/config/autorun.sh
$EDITOR /tmp/config/autorun.sh
umount /tmp/config

autorun.shは各自の環境に合わせて作成することになるが、以下が私の内容。やっつけ感満載である。

# autorun.sh

NVME="/dev/nvme0n1p1"
OPT="rw,usrjquota=aquota.user,jqfmt=vfsv1,user_xattr,data=ordered,data_err=abort,delalloc,nopriv,nodiscard,noacl"
MPOINT="/share/CACHEDEV2_DATA/VMImages/VMs"

LOG=/tmp/autorun.log

mount > $LOG
echo "---" >> $LOG

echo "autorun.sh: mount $NVME" >> $LOG
/bin/mount -t ext4 -o "$OPT" "$NVME" "$MPOINT" >> $LOG 2>&1

echo "---" >> $LOG
mount >> $LOG

最後に忘れずにautorun.shを有効化しておく。これは一度行えば良い。

以上、お疲れさまでした。

最後に

実はSSDを取り付ける前にどこかでext4フォーマットしておけば、たぶんそのまま認識してくれるのではないかと思っているが、NAS内にいれたあとに色々できるし勉強にはなったので良しとする。

また、この状態では「ストレージ&スナップショット」のストレージ管理周辺にはいっさい現れてこないので不満といえば不満が残るが、どのみち使用量確認目的くらいしか利用できないのでこのままとしている。

QTS4の時にSSDを搭載してから1年くらい利用し、最近やっとQTS5にしたのだが、勝手に削除されたり、見えなくなったりしたことはないので大丈夫そう。しかし、何が起こるともわからないので私はVM用のストレージとして利用しバックアップをHDDにとり、いつでも戻せるようにしている。

良いと思ったらグッドボタンとチャンネル登録を。ではない。

コメント

タイトルとURLをコピーしました