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にとり、いつでも戻せるようにしている。
良いと思ったらグッドボタンとチャンネル登録を。ではない。
コメント
大変参考になる情報でした。ありがとうございます。
少し工夫したところ良い感じに使えるようになりましたので補足させていただきます。
この記事でご紹介の通りにautorun.shを作成・登録し、
起動時にSSDをマウントしましたが
そのままではvirtualization stationなどに作成したディレクトリ
(この記事でいうVMImages/VMsに相当)は出てきませんでした。
/share/CACHEDEV2_DATA/
の配下にマウントしていますので、「共有フォルダの作成」から
該当のHDD(2本目)のディスクボリュームを選ぶと「VMImages」が見つかります。
具体には、
(1)コントロールパネル→権限設定→共有フォルダ―→作成
を選択した後、ダイアログ的なパネルから
(2)「ディスクボリューム」欄で「HDD_vol2」等を選択。
(3)「パス」欄で「手動でパスを入力する」のオプションをONにして
(4)ドロップダウンから「VMImages」を選択。
(5)フォルダー名に任意の名前を付けて「作成」をする
という手順でQTS全般から扱えるようになりました。
これでVirtualization stationからディスクイメージの置き場所に
「VMImages」を指定できるようになります。
仮想環境としてだけではなく、PCクライアント側からも使えるようになりました。
なおext4フォーマット済で再取り付けしましたが、
HDDのようにQTS管理画面からフォーマット等できる感じにはなりませんでした。
(環境)
TS-470(QTS 4.3.6)
PCIeカードはaliexpressで購入した500円くらいのものです(笑)
当時めちゃくちゃ試行錯誤して使えるようにした記録なので参考になってうれしいです。
追加の情報もありがとうございます。